Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/check-documentation-updates.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: check-documentation-updates

on:
workflow_call:
outputs:
documentation-updated:
value: ${{ jobs.check-documentation-updates.outputs.documentation-updated }}


jobs:
check-documentation-updates:
runs-on: ubuntu-latest
outputs:
documentation-updated: ${{ steps.documentation_updated.outputs.documentation-updated }}

steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
show-progress: false

- uses: ruby/setup-ruby@9eb537ca036ebaed86729dcb9309076e4c5c3b74 # v1.314.0
with:
ruby-version: '3'

- name: Documentation updated
id: documentation_updated
run: |
if git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep -q '^documentation/'; then
echo "documentation-updated=true" >> $GITHUB_OUTPUT
else
echo "documentation-updated=false" >> $GITHUB_OUTPUT
fi
36 changes: 36 additions & 0 deletions .github/workflows/check-gem-version.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: check-gem-version
on:
workflow_call:
outputs:
version-changed:
value: ${{ jobs.check-gem-version.outputs.version-changed }}


jobs:
check-gem-version:
runs-on: ubuntu-latest
outputs:
version-changed: ${{ steps.gem_version.outputs.version-changed }}

steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
show-progress: false

- uses: ruby/setup-ruby@9eb537ca036ebaed86729dcb9309076e4c5c3b74 # v1.314.0
with:
ruby-version: '3'

- name: Gem version changed
id: gem_version
run: |
gem_version=$(ruby -r rubygems -e "puts Gem::Specification::load('govuk_tech_docs.gemspec').version")
echo "gem_version=$gem_version" >> "$GITHUB_OUTPUT"

if git fetch origin "refs/tags/v$gem_version" >/dev/null 2>&1
then
echo "Tag 'v$gem_version' already exists"
echo "version-changed=false" >> "$GITHUB_OUTPUT"
else
echo "version-changed=true" >> "$GITHUB_OUTPUT"
fi
5 changes: 1 addition & 4 deletions .github/workflows/dependency-review.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
name: 'Dependency Review'
on:
pull_request:
branches: [ "main" ]
push:
branches: [ "main" ]
workflow_call:

permissions:
contents: read
Expand Down
50 changes: 50 additions & 0 deletions .github/workflows/pipeline.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: pipeline
on:
pull_request:
branches: [ "main"]
push:
branches: [ "main"]

jobs:
dependency-review:
uses: ./.github/workflows/dependency-review.yaml
permissions:
contents: read

test:
needs: dependency-review
uses: ./.github/workflows/test.yaml
permissions:
contents: read # Allows the action to check out your repository code
pull-requests: write # Allows the action to comment on or update the Dependabot PR
statuses: write # Allows the action to post pass/fail build statuses

check-gem-version:
needs: test
uses: ./.github/workflows/check-gem-version.yaml

publish-gem:
needs: check-gem-version
if: github.event_name == 'push' && needs.check-gem-version.outputs.version-changed == 'true'
with:
new-gem-version: true
uses: ./.github/workflows/publish-gem.yaml
permissions:
contents: write # needed to be able to tag the release

check-documentation-updates:
needs: publish-gem
if: |
github.event_name == 'push' &&
always() &&
(needs.publish-gem.result == 'success' || needs.publish-gem.result == 'skipped')
uses: ./.github/workflows/check-documentation-updates.yaml

publish-github-pages:
needs: check-documentation-updates
if: github.event_name == 'push' && needs.check-documentation-updates.outputs.documentation-updated == 'true'
uses: ./.github/workflows/publish-github-pages.yaml
permissions:
contents: read
pages: write
id-token: write
Original file line number Diff line number Diff line change
@@ -1,51 +1,22 @@
name: Publish

on:
push:
branches:
- main
workflow_dispatch:
workflow_call:
inputs:
new-gem-version:
default: false
type: boolean

concurrency: rubygems

jobs:
pre:
name: Pre-flight checks
runs-on: ubuntu-latest
outputs:
go: ${{ steps.gem_version.outputs.new_version }}

steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
show-progress: false

- uses: ruby/setup-ruby@9eb537ca036ebaed86729dcb9309076e4c5c3b74 # v1.314.0
with:
ruby-version: '3'

- name: Check if new version to release
id: gem_version
run: |
gem_version=$(ruby -r rubygems -e "puts Gem::Specification::load('govuk_tech_docs.gemspec').version")
echo "gem_version=$gem_version" >> "$GITHUB_OUTPUT"

if git fetch origin "refs/tags/v$gem_version" >/dev/null 2>&1
then
echo "Tag 'v$gem_version' already exists"
echo "new_version=false" >> "$GITHUB_OUTPUT"
else
echo "new_version=true" >> "$GITHUB_OUTPUT"
fi

deploy:
name: Publish Ruby Gem
environment: rubygems
permissions:
contents: write # needed to be able to tag the release
runs-on: ubuntu-latest
needs: pre
if: needs.pre.outputs.go == 'true'
if: inputs.new-gem-version

steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
name: 'Deploy to GitHub Pages'
name: Publish GitHub pages
on:
push:
branches: ["main", "feature/publish-documentation"]
paths: ['documentation/**']
workflow_call:


permissions:
contents: read
Expand Down
7 changes: 2 additions & 5 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
name: Test

on:
pull_request:
branches: [ "main" ]
push:
branches: [ "main" ]
workflow_dispatch:
workflow_call:

permissions:
contents: read # Allows the action to check out your repository code
Expand All @@ -18,6 +14,7 @@ jobs:
runs-on: ubuntu-latest

strategy:
max-parallel: 1
matrix:
ruby: ['3.3', '3.4', '4.0']

Expand Down