Skip to content

Remove tracing and update test matrix. #155

Remove tracing and update test matrix.

Remove tracing and update test matrix. #155

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