diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 6fc2ec3b..ec334ce9 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -1,17 +1,22 @@ -name: Dev Release +name: Push Request Testing on: push: branches: - - dev + - '*' # matches every branch + - '*/*' # matches every branch containing a single '/' + - '!master' # excludes master jobs: compile: runs-on: ubuntu-latest steps: - - name: Install Go - uses: actions/setup-go@v1 + - uses: actions/setup-go@v2 with: - go-version: '1.14.x' + go-version: '1.14.2' + - uses: actions/setup-node@v1 + with: + node-version: '10.x' + - uses: actions/checkout@v2 - name: Add GOBIN to PATH run: | @@ -19,40 +24,14 @@ jobs: echo ::set-env name=VERSION::$(cat version.txt) shell: bash - - name: Install Node - uses: actions/setup-node@v1 - with: - node-version: '10.x' - - name: Install Global Dependencies run: npm install -g yarn sass cross-env - - name: Checkout Statping Repo - uses: actions/checkout@v2 - - - uses: actions/cache@v1 - id: nodecache - with: - path: ./frontend/node_modules - key: ${{ runner.os }}-node-${{ hashFiles('**/package.json') }} - restore-keys: | - ${{ runner.os }}-node- - - name: Download Frontend Dependencies if: steps.nodecache.outputs.cache-hit != 'true' working-directory: ./frontend run: yarn - - uses: actions/cache@v1 - id: golangcache - with: - path: | - ~/go/pkg/mod - ~/go/bin - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Download Go mods if: steps.golangcache.outputs.cache-hit != 'true' run: | @@ -61,25 +40,49 @@ jobs: make test-deps - name: Build Frontend Statping - run: make clean frontend-build + run: make clean compile - - name: Upload Compiled Frontend + - name: Upload Compiled Frontend (rice-box.go) uses: actions/upload-artifact@v1 with: - name: static-frontend - path: /home/runner/work/statping/statping/source/dist + name: static-rice-box + path: ./source test: needs: compile runs-on: ubuntu-latest - steps: - - name: Checkout Statping Repo - uses: actions/checkout@v2 - - name: Install Go - uses: actions/setup-go@v1 + services: + postgres: + image: postgres:10.8 + env: + POSTGRES_USER: root + POSTGRES_PASSWORD: password123 + POSTGRES_DB: statping + ports: + - 5432:5432 + options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + + mysql: + image: mysql:5.7 + env: + MYSQL_ROOT_PASSWORD: password123 + MYSQL_DATABASE: statping + ports: + - 3306:3306 + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + + steps: + - uses: actions/setup-go@v2 with: - go-version: '1.14.x' + go-version: '1.14.2' + - uses: actions/setup-node@v1 + with: + node-version: '10.x' + - uses: actions/checkout@v2 + + - name: Install Global Dependencies + run: npm install -g yarn sass newman cross-env wait-on @sentry/cli - name: Setting ENV's run: | @@ -88,75 +91,72 @@ jobs: echo ::set-env name=VERSION::$(cat version.txt) shell: bash - - name: Install Node - uses: actions/setup-node@v1 - with: - node-version: '10.x' - - - name: Install Global Dependencies - run: npm install -g yarn sass newman cross-env wait-on @sentry/cli - - - uses: actions/cache@v1 - id: golangcache - with: - path: | - ~/go/pkg/mod - ~/go/bin - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - - name: Download Go mods - if: steps.golangcache.outputs.cache-hit != 'true' - run: | - go mod download - go mod verify - make test-deps - - - name: Download Compiled Frontend + - name: Download Compiled Frontend (rice-box.go) uses: actions/download-artifact@v1 with: - name: static-frontend - path: /home/runner/work/statping/statping/source/dist + name: static-rice-box + path: ./source - name: Install Statping env: - VERSION: ${{ env.VERSION }} + VERSION: ${{ env.VERSION }} run: | make build chmod +x statping mv statping $(go env GOPATH)/bin/ - name: Go Tests - run: SASS=`which sass` go test -v -covermode=count -coverprofile=coverage.out -p=1 ./... + run: | + go get gotest.tools/gotestsum + gotestsum --no-summary=skipped --format dots -- -covermode=count -coverprofile=coverage.out -p=1 ./... env: VERSION: ${{ env.VERSION }} DB_CONN: sqlite3 - STATPING_DIR: /home/runner/work/statping/statping + STATPING_DIR: ${{ github.workspace }} API_KEY: demopassword123 DISABLE_LOGS: true ALLOW_REPORTS: true - COVERALLS: ${{ secrets.COVERALLS }} - DISCORD_URL: ${{ secrets.DISCORD_URL }} - EMAIL_HOST: ${{ secrets.EMAIL_HOST }} - EMAIL_USER: ${{ secrets.EMAIL_USER }} - EMAIL_PASS: ${{ secrets.EMAIL_PASS }} - EMAIL_OUTGOING: ${{ secrets.EMAIL_OUTGOING }} - EMAIL_SEND_TO: ${{ secrets.EMAIL_SEND_TO }} - EMAIL_PORT: ${{ secrets.EMAIL_PORT }} - MOBILE_ID: ${{ secrets.MOBILE_ID }} - MOBILE_NUMBER: ${{ secrets.MOBILE_NUMBER }} - PUSHOVER_TOKEN: ${{ secrets.PUSHOVER_TOKEN }} - PUSHOVER_API: ${{ secrets.PUSHOVER_API }} - SLACK_URL: ${{ secrets.SLACK_URL }} - TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }} - TELEGRAM_CHANNEL: ${{ secrets.TELEGRAM_CHANNEL }} - TWILIO_SID: ${{ secrets.TWILIO_SID }} - TWILIO_SECRET: ${{ secrets.TWILIO_SECRET }} - TWILIO_FROM: ${{ secrets.TWILIO_FROM }} - TWILIO_TO: ${{ secrets.TWILIO_TO }} - - name: Coveralls Testing Coverage - run: goveralls -coverprofile=coverage.out -repotoken $COVERALLS + test-postman: + needs: compile + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: '1.14.2' + + - name: Setting ENV's + run: | + echo "::add-path::$(go env GOPATH)/bin" + echo "::add-path::/opt/hostedtoolcache/node/10.20.1/x64/bin" + echo ::set-env name=VERSION::$(cat version.txt) + shell: bash + + - name: Download Compiled Frontend (rice-box.go) + uses: actions/download-artifact@v1 + with: + name: static-rice-box + path: ./source + + - name: Install Statping env: - COVERALLS: ${{ secrets.COVERALLS }} + VERSION: ${{ env.VERSION }} + run: | + make build + chmod +x statping + mv statping $(go env GOPATH)/bin/ + + - name: Run Statping + run: | + API_SECRET=demosecret123 statping --port=8080 > /dev/null & + sleep 3 + + - name: Postman Tests + uses: matt-ball/newman-action@master + with: + postmanApiKey: ${{ secrets.POSTMAN_API }} + collection: ./dev/postman.json + environment: ./dev/postman_environment.json + timeoutRequest: 15000 + delayRequest: 1000