# This workflow implements continuous delivery with automated testing and fully # autonomous deploys to production on merge. name: CD # Translated: "Execute this workflow on pushes to main OR on pull requests # opened against main" # # See this question and answer for what we're solving here: # https://github.community/t5/GitHub-Actions/How-to-trigger-an-action-on-push-or-pull-request-but-not-both/m-p/36155#M2460 on: push: branches: [main] pull_request: branches: [main] jobs: test: name: Test runs-on: ubuntu-latest steps: - name: Setup uses: actions/setup-go@v2 with: go-version: '1.17' - name: Checkout uses: actions/checkout@v2 - name: Build run: make build - name: Build docker image run: make image - name: Test run: git show --stat && make testci - name: Code coverage uses: codecov/codecov-action@v1 with: file: ./coverage.txt regression_test: name: Regression Tests runs-on: ubuntu-latest strategy: matrix: go_version: - '1.14' - '1.15' - '1.16' steps: - name: Setup uses: actions/setup-go@v2 with: go-version: ${{matrix.go_version}} - name: Checkout uses: actions/checkout@v2 - name: Build run: make build - name: Test run: make test production_deploy: name: Production Deploy if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest needs: [test] steps: - name: Checkout uses: actions/checkout@v2 - name: Notify start id: deployment uses: bobheadxi/deployments@v0.6.1 with: step: start token: ${{ secrets.GITHUB_TOKEN }} env: production - name: Deploy uses: superfly/flyctl-actions@1.1 with: args: "deploy --strategy rolling" env: DOCKER_BUILDKIT: 1 FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} - name: Notify finish uses: bobheadxi/deployments@v0.6.1 with: step: finish deployment_id: ${{ steps.deployment.outputs.deployment_id }} token: ${{ secrets.GITHUB_TOKEN }} env: production status: ${{ job.status }} env_url: 'https://httpbingo.org'