Skip to content

Commit

Permalink
Add GitHub Action workflow for verifying pact tests
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
deborahchua committed Jun 6, 2024
1 parent 9e8174c commit 36ee78f
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}
62 changes: 62 additions & 0 deletions .github/workflows/pact-verify.yml
Original file line number Diff line number Diff line change
@@ -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 }}

0 comments on commit 36ee78f

Please sign in to comment.