name: API on: push: branches: [ "master" ] jobs: api-build: name: Build runs-on: ubuntu-latest container: golang:1.16.6 services: postgres: image: postgres:13-alpine env: PGDATABASE: jokesbapak2 POSTGRES_DB: jokesbapak2 PGUSER: postgres POSTGRES_USER: postgres PGPASSWORD: password POSTGRES_PASSWORD: password options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 redis: image: redis:6.2-alpine ports: - 6379:6379 defaults: run: working-directory: ./api steps: - name: Checkout code uses: actions/checkout@v2 - name: cache go modules uses: actions/cache@v2 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Installling dependencies if: steps.cache.outputs.cache-hit != 'true' run: go mod vendor - name: Build run: go build main.go - name: Run test & coverage run: go test -v -race -coverprofile=coverage.out -covermode=atomic ./... env: ENV: development PORT: 5000 DATABASE_URL: postgres://postgres:password@postgres:5432/jokesbapak2 REDIS_URL: redis://@redis:6379 - name: Initialize CodeQL uses: github/codeql-action/init@v1 with: languages: go - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v1 - name: Create Sentry release uses: getsentry/action-release@v1 env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_TOKEN }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT_API}} with: environment: production set_commits: skip version: ${{ github.sha }} - uses: codecov/codecov-action@v2 with: flags: api