From 36ee78fd2b3491817624e1ac2b8f14cdd7b19f8d Mon Sep 17 00:00:00 2001 From: D Chua Date: Thu, 6 Jun 2024 11:59:08 +0100 Subject: [PATCH] Add GitHub Action workflow for verifying pact tests This workflow will also be called by gds-api-adapters as part of it's CI build to test that pacts are valid against this app. --- .github/workflows/ci.yml | 6 +++ .github/workflows/pact-verify.yml | 62 +++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 .github/workflows/pact-verify.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 41815820..73055ec4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,3 +64,9 @@ jobs: RAILS_ENV: test TEST_DATABASE_URL: ${{ steps.setup-postgres.outputs.db-url }} run: bundle exec rake spec + + pact-tests: + name: Run Pact tests + uses: ./.github/workflows/pact-verify.yml + with: + ref: ${{ github.ref }} diff --git a/.github/workflows/pact-verify.yml b/.github/workflows/pact-verify.yml new file mode 100644 index 00000000..04fc13ac --- /dev/null +++ b/.github/workflows/pact-verify.yml @@ -0,0 +1,62 @@ +# Pact verify workflow +# +# This workflow asserts that Pact contract tests are valid against this +# codebase. It is trigged when changes are made to this project and it +# is explicitly called by GDS API Adapters when changes are made there. + +name: Run Pact tests + +on: + workflow_call: + inputs: + # The commit / tag of this repo to test against + ref: + required: false + type: string + default: main + # A GitHub Action artifact which contains the pact definition files + # Support API calls this action to test new pacts against this + # workflow + pact_artifact: + required: false + type: string + # When using an artifact this is the file path to the pact that is verified + # against + pact_artifact_file_to_verify: + required: false + type: string + default: gds_api_adapters-support_api.json + # Which version of the pacts to use from the Pact Broker service + # This option will be ignored if pact_artifact is set + pact_consumer_version: + required: false + type: string + default: branch-main + +jobs: + pact_verify: + name: Verify pact tests + runs-on: ubuntu-latest + env: + RAILS_ENV: test + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + repository: alphagov/support-api + ref: ${{ inputs.ref }} + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + bundler-cache: true + - if: inputs.pact_artifact == '' + run: bundle exec rake pact:verify + env: + PACT_CONSUMER_VERSION: ${{ inputs.pact_consumer_version }} + - if: inputs.pact_artifact != '' + uses: actions/download-artifact@v4 + with: + name: ${{ inputs.pact_artifact }} + path: tmp/pacts + - if: inputs.pact_artifact != '' + run: bundle exec rake pact:verify:at[tmp/pacts/${{ inputs.pact_artifact_file_to_verify }}