Remove tracing and update test matrix. #155
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish ❯ Static Pages | |
description: | | |
Publishes a preview of benchmarks, code coverage results, and docs https://matcha.chriskeele.com. | |
Uses our preferred versions of Elixir and Erlang. | |
This action runs on all commits to the `latest` branch, and can be triggered manually. | |
NOTES: | |
- Our preferred versions are documented and read from the .tool-versions file, | |
and should endeavor to track the latest stable release of each tool. | |
- See the test matrix workflow for more comprehensive testing against all supported versions of our tools. | |
env: | |
cache-version: 9 | |
MIX_ENV: test | |
on: | |
push: | |
branches: ["latest"] | |
workflow_dispatch: | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
concurrency: | |
group: "publish-static-pages" | |
cancel-in-progress: true | |
jobs: | |
benchmarks: | |
name: Generate Benchmark Reports | |
environment: | |
name: github-pages | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Erlang & Elixir | |
id: beam-versions | |
uses: erlef/setup-beam@v1 | |
with: | |
version-file: ".tool-versions" | |
version-type: "strict" | |
- name: Restore mix dependency installation cache | |
id: mix-deps-get-cache | |
uses: actions/cache@v4 | |
with: | |
path: deps | |
key: cache-${{ env.cache-version }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-get-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} | |
- name: Install mix dependencies | |
if: steps.mix-deps-get-cache.outputs.cache-hit != 'true' | |
run: mix deps.get | |
- name: Restore mix dependency compilation cache | |
id: mix-deps-compile-cache | |
uses: actions/cache@v4 | |
with: | |
path: _build | |
key: cache-${{ env.cache-version }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-compile-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} | |
- name: Compile mix dependencies | |
if: steps.mix-deps-compile-cache.outputs.cache-hit != 'true' | |
run: mix deps.compile | |
- name: Generate benchmark reports | |
run: mix benchmarks | |
- name: Store benchmark reports | |
uses: actions/upload-artifact@v4 | |
with: | |
name: bench | |
path: bench | |
coverage: | |
name: Generate Code Coverage Reports | |
environment: | |
name: github-pages | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Erlang & Elixir | |
id: beam-versions | |
uses: erlef/setup-beam@v1 | |
with: | |
version-file: ".tool-versions" | |
version-type: "strict" | |
- name: Restore mix dependency installation cache | |
id: mix-deps-get-cache | |
uses: actions/cache@v4 | |
with: | |
path: deps | |
key: cache-${{ env.cache-version }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-get-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} | |
- name: Install mix dependencies | |
if: steps.mix-deps-get-cache.outputs.cache-hit != 'true' | |
run: mix deps.get | |
- name: Restore mix dependency compilation cache | |
id: mix-deps-compile-cache | |
uses: actions/cache@v4 | |
with: | |
path: _build | |
key: cache-${{ env.cache-version }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-compile-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} | |
- name: Compile mix dependencies | |
if: steps.mix-deps-compile-cache.outputs.cache-hit != 'true' | |
run: mix deps.compile | |
- name: Generate coverage reports | |
run: mix coverage | |
- name: Store coverage reports | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cover | |
path: cover | |
docs: | |
name: Generate Documentation Pages | |
environment: | |
name: github-pages | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Erlang & Elixir | |
id: beam-versions | |
uses: erlef/setup-beam@v1 | |
with: | |
version-file: ".tool-versions" | |
version-type: "strict" | |
- name: Restore mix dependency installation cache | |
id: mix-deps-get-cache | |
uses: actions/cache@v4 | |
with: | |
path: deps | |
key: cache-${{ env.cache-version }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-get-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} | |
- name: Install mix dependencies | |
if: steps.mix-deps-get-cache.outputs.cache-hit != 'true' | |
run: mix deps.get | |
- name: Restore mix dependency compilation cache | |
id: mix-deps-compile-cache | |
uses: actions/cache@v4 | |
with: | |
path: _build | |
key: cache-${{ env.cache-version }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-compile-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} | |
- name: Compile mix dependencies | |
if: steps.mix-deps-compile-cache.outputs.cache-hit != 'true' | |
run: mix deps.compile | |
- name: Generate docs | |
run: mix docs | |
- name: Store generated docs | |
uses: actions/upload-artifact@v4 | |
with: | |
name: doc | |
path: doc | |
publish: | |
name: Publish Static Pages to Github Pages | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-22.04 | |
needs: | |
- benchmarks | |
- coverage | |
- docs | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Erlang & Elixir | |
id: beam-versions | |
uses: erlef/setup-beam@v1 | |
with: | |
version-file: ".tool-versions" | |
version-type: "strict" | |
- name: Restore mix dependency installation cache | |
id: mix-deps-get-cache | |
uses: actions/cache@v4 | |
with: | |
path: deps | |
key: cache-${{ env.cache-version }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-get-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} | |
- name: Install mix dependencies | |
if: steps.mix-deps-get-cache.outputs.cache-hit != 'true' | |
run: mix deps.get | |
- name: Restore mix dependency compilation cache | |
id: mix-deps-compile-cache | |
uses: actions/cache@v4 | |
with: | |
path: _build | |
key: cache-${{ env.cache-version }}-os-${{ runner.os }}-otp-${{ steps.beam-versions.outputs.otp-version }}-elixir-${{ steps.beam-versions.outputs.elixir-version }}-mix-deps-compile-mix-lock-file-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} | |
- name: Compile mix dependencies | |
if: steps.mix-deps-compile-cache.outputs.cache-hit != 'true' | |
run: mix deps.compile | |
- name: Fetch generated pages | |
uses: actions/download-artifact@v4 | |
- name: Collect static files | |
run: mix static.collect | |
- name: Setup Github pages | |
uses: actions/configure-pages@v2 | |
- name: Upload static artifacts to Github Pages | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: "./static" | |
- name: Deploy artifact to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 | |
results: | |
name: Publish Static Page Action Results | |
runs-on: ubuntu-22.04 | |
if: ${{ always() }} | |
needs: | |
- benchmarks | |
- coverage | |
- docs | |
- publish | |
steps: | |
- name: Test Suite Succeeded | |
if: ${{ needs.benchmarks.result == 'success' && needs.coverage.result == 'success' && needs.docs.result == 'success' && needs.publish.result == 'success' }} | |
run: exit 0 | |
- name: Test Suite Failed | |
if: ${{ needs.benchmarks.result == 'failure' || needs.coverage.result == 'failure' || needs.docs.result == 'failure' || needs.publish.result == 'failure' }} | |
run: exit 1 |