Skip to content

Commit

Permalink
Cache the docker images that GH Actions use.
Browse files Browse the repository at this point in the history
  • Loading branch information
rasben committed Oct 4, 2024
1 parent 262d9f3 commit bfc848e
Show file tree
Hide file tree
Showing 3 changed files with 131 additions and 123 deletions.
87 changes: 87 additions & 0 deletions .github/workflows/ci-site-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
on: pull_request
name: CI site tests

jobs:
LightHouse:
name: Test site performance using Lighthouse
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Re-setting site
uses: ./.github/workflows/site-reset.yml
- name: Run Lighthouse test
run: task ci:lighthouse
- name: Archive logs
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: lighthouse-results
path: .lighthouseci

Pa11y:
name: Test accessibility using Pa11y
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Re-setting site
uses: ./.github/workflows/site-reset.yml
- name: Run Pa11y
run: task ci:pa11y
- name: Archive screenshots
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: pa11y-screenshots
path: pa11y/screenshots

Cypress:
name: Run Cypress functional tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Re-setting site
uses: ./.github/workflows/site-reset.yml
- name: Run Cypress
run: task ci:cypress
- name: Archive videoes
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: cypress-videos
path: cypress/videos
- name: Archive screenshots
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: cypress-screenshots
path: cypress/screenshots

CheckOpenApiSpec:
name: Check OpenAPI specification
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Re-setting site
uses: ./.github/workflows/site-reset.yml
- name: Validate specification
run: task ci:openapi:validate
- name: Download current specification
run: task ci:openapi:download
- name: Ensure specification has not drifted
run: git diff --ignore-space-at-eol --exit-code openapi.json
- name: Generate package for CMS API specification
run: task dev:codegen:dpl-cms
- name: Ensure CMS API package code has not drifted
run: git diff --ignore-space-at-eol --exit-code packages/cms-api/*

CheckDrupalConfig:
name: Check Drupal Config
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Re-setting site
uses: ./.github/workflows/site-reset.yml
- name: Export configuration
run: task dev:cli -- drush config-export -y
- name: Check for uncommited configuration after install
run: git diff --ignore-space-at-eol --exit-code config/sync/*.yml
123 changes: 0 additions & 123 deletions .github/workflows/ci-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,83 +102,6 @@ jobs:
- name: Run PhpUnit
run: ./vendor/bin/phpunit --coverage-text

LightHouse:
name: Test site performance using Lighthouse
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# Our Taskfile requires a proper checkout to function because of
# certain vars.
fetch-depth: 0
- name: Install go-task
uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup site
run: task ci:reset
- name: Run Lighthouse test
run: task ci:lighthouse
- name: Archive logs
uses: actions/upload-artifact@v4
with:
name: lighthouse-results
path: .lighthouseci

Pa11y:
name: Test accessibility using Pa11y
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# Our Taskfile requires a proper checkout to function because of
# certain vars.
fetch-depth: 0
- name: Install go-task
uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup site
run: task ci:reset
- name: Run Pa11y
run: task ci:pa11y
- name: Archive screenshots
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: pa11y-screenshots
path: pa11y/screenshots

Cypress:
name: Run Cypress functional tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# Our Taskfile requires a proper checkout to function because of
# certain vars.
fetch-depth: 0
- name: Install go-task
uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup site
run: task ci:reset
- name: Run Cypress
run: task ci:cypress
- name: Archive videoes
if: always()
uses: actions/upload-artifact@v4
with:
name: cypress-videos
path: cypress/videos
- name: Archive screenshots
if: always()
uses: actions/upload-artifact@v4
with:
name: cypress-screenshots
path: cypress/screenshots

MarkdownLint:
name: Lint Markdown
runs-on: ubuntu-latest
Expand Down Expand Up @@ -256,52 +179,6 @@ jobs:
- name: Run ESLint
run: npx eslint cypress -c cypress/.eslintrc.json

CheckOpenApiSpec:
name: Check OpenAPI specification
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# Our Taskfile requires a proper checkout to function because of
# certain vars.
fetch-depth: 0
- name: Install go-task
uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup site
run: task ci:reset
- name: Validate specification
run: task ci:openapi:validate
- name: Download current specification
run: task ci:openapi:download
- name: Ensure specification has not drifted
run: git diff --ignore-space-at-eol --exit-code openapi.json
- name: Generate package for CMS API specification
run: task dev:codegen:dpl-cms
- name: Ensure CMS API package code has not drifted
run: git diff --ignore-space-at-eol --exit-code packages/cms-api/*

CheckDrupalConfig:
name: Check Drupal Config
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# Our Taskfile requires a proper checkout to function because of
# certain vars.
fetch-depth: 0
- name: Install go-task
uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup site
run: task ci:reset
- name: Export configuration
run: task dev:cli -- drush config-export -y
- name: Check for uncommited configuration after install
run: git diff --ignore-space-at-eol --exit-code config/sync/*.yml

CheckPhpVersion:
name: Check PHP version
runs-on: ubuntu-latest
Expand Down
44 changes: 44 additions & 0 deletions .github/workflows/site-reset.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Re-setting site, for CI Tests

on:
workflow_call:
inputs:
task:
required: true
type: string
env:
PHP_VERSION: 8.1
COMPOSER_VERSION: v2

jobs:
setup-docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install go-task
uses: arduino/setup-task@v2
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Build and cache Docker images
run: |
docker compose build \
--cache-from=type=local,src=/tmp/.buildx-cache \
--cache-to=type=local,dest=/tmp/.buildx-cache-new
- name: Setup site
run: task ci:reset

0 comments on commit bfc848e

Please sign in to comment.