use julia-actions/cache also for Documenter #366
Workflow file for this run
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: CI | |
on: | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- 'LICENSE.md' | |
- 'README.md' | |
- '.github/workflows/CompatHelper.yml' | |
- '.github/workflows/DocPreviewCleanup.yml' | |
- '.github/workflows/TagBot.yml' | |
pull_request: | |
paths-ignore: | |
- 'LICENSE.md' | |
- 'README.md' | |
- '.github/workflows/CompatHelper.yml' | |
- '.github/workflows/DocPreviewCleanup.yml' | |
- '.github/workflows/TagBot.yml' | |
workflow_dispatch: | |
# Cancel redundant CI tests automatically | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
if: "!contains(github.event.head_commit.message, 'skip ci')" | |
name: ${{ matrix.os }} - ${{ matrix.JULIA_P4EST_TEST }} - Julia ${{ matrix.version }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
version: | |
- '1.6' | |
- '1' | |
# - 'nightly' | |
os: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
arch: | |
- x64 | |
JULIA_P4EST_TEST: | |
- P4EST_JLL_MPI_DEFAULT | |
- P4EST_CUSTOM_MPI_CUSTOM | |
exclude: | |
# Some preferences are not loaded in package tests in older versions | |
# of Julia, see | |
# https://github.com/JuliaPackaging/Preferences.jl/issues/40 | |
# Thus, we need to disable this setup in CI. | |
- version: '1.6' | |
JULIA_P4EST_TEST: P4EST_CUSTOM_MPI_CUSTOM | |
# Run only selected tests on macOS and Windows, since not everything | |
# works everywhere yet and we are most familiar with setting up custom | |
# p4est and MPI builds on Linux. | |
- os: macos-latest | |
JULIA_P4EST_TEST: P4EST_CUSTOM_MPI_CUSTOM | |
- os: windows-latest | |
JULIA_P4EST_TEST: P4EST_CUSTOM_MPI_CUSTOM | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set p4est release to run tests against | |
# We use an older release of `p4est` on purpose than the version | |
# provided by P4est_jll.jl to check whether everything still works | |
# in another version of `p4est` than the version used to generate the | |
# bindings. | |
run: | | |
P4EST_RELEASE=2.3.1 | |
echo "P4EST_RELEASE=$P4EST_RELEASE" >> $GITHUB_ENV | |
echo "P4EST_RELEASE=$P4EST_RELEASE" | |
shell: bash | |
- name: Set environment variables | |
run: | | |
echo "Setting variables for '${{ matrix.JULIA_P4EST_TEST }}'..." | |
echo "JULIA_P4EST_TEST=${{ matrix.JULIA_P4EST_TEST }}" >> $GITHUB_ENV | |
echo "JULIA_P4EST_TEST=${{ matrix.JULIA_P4EST_TEST }}" | |
if [[ ${{ matrix.JULIA_P4EST_TEST }} == "P4EST_JLL_MPI_DEFAULT" ]] | |
then | |
echo "(no additional environment variables required)" | |
elif [[ ${{ matrix.JULIA_P4EST_TEST }} == "P4EST_CUSTOM_MPI_CUSTOM" ]] | |
then | |
P4EST_TMP=`pwd`/libp4est_tmp | |
echo "P4EST_TMP=$P4EST_TMP" >> $GITHUB_ENV | |
echo "P4EST_TMP=$P4EST_TMP" | |
echo "JULIA_P4EST_TEST_LIBP4EST=$P4EST_TMP/prefix/lib/libp4est.so" >> $GITHUB_ENV | |
echo "$JULIA_P4EST_TEST_LIBP4EST=$P4EST_TMP/prefix/lib/libp4est.so" | |
echo "JULIA_P4EST_TEST_LIBSC=$P4EST_TMP/prefix/lib/libsc.so" >> $GITHUB_ENV | |
echo "$JULIA_P4EST_TEST_LIBSC=$P4EST_TMP/prefix/lib/libsc.so" | |
else | |
echo "ERROR: unknown test type ${{ matrix.JULIA_P4EST_TEST }}" >&2 | |
exit 1 | |
fi | |
echo "Done." | |
shell: bash | |
- uses: julia-actions/setup-julia@v1 | |
with: | |
version: ${{ matrix.version }} | |
arch: ${{ matrix.arch }} | |
show-versioninfo: true | |
- uses: julia-actions/cache@v1 | |
- name: Install custom MPI library for testing | |
run: | | |
if [[ ${{ matrix.JULIA_P4EST_TEST }} == "P4EST_CUSTOM_MPI_CUSTOM" ]] | |
then | |
sudo apt-get install -y openmpi-bin libopenmpi-dev | |
fi | |
shell: bash | |
- name: Install custom p4est library for testing | |
run: | | |
./.ci_install_p4est.sh | |
shell: bash | |
- name: Configure MPI.jl | |
shell: julia --color=yes {0} | |
run: | | |
@show pwd() | |
include(joinpath(pwd(), "test", "configure_packages.jl")) | |
- uses: julia-actions/julia-buildpkg@v1 | |
env: | |
PYTHON: "" | |
- uses: julia-actions/julia-runtest@v1 | |
env: | |
PYTHON: "" | |
- uses: julia-actions/julia-processcoverage@v1 | |
- uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos | |
files: ./lcov.info # optional | |
flags: unittests # optional | |
name: codecov-umbrella # optional | |
fail_ci_if_error: true # optional (default = false) | |
# verbose: true # optional (default = false) | |
# The standard setup of Coveralls is just annoying for parallel builds, see, e.g., | |
# https://github.com/trixi-framework/Trixi.jl/issues/691 | |
# https://github.com/coverallsapp/github-action/issues/47 | |
# https://github.com/coverallsapp/github-action/issues/67 | |
# This standard setup is reproduced below for completeness. | |
# - uses: coverallsapp/github-action@master | |
# with: | |
# github-token: ${{ secrets.GITHUB_TOKEN }} | |
# flag-name: run-${{ matrix.JULIA_P4EST_TEST }}-${{ matrix.os }}-${{ matrix.version }}-${{ matrix.arch }}-${{ github.run_id }} | |
# parallel: true | |
# path-to-lcov: ./lcov.info | |
# Instead, we use a more tedious approach: | |
# - Store all individual coverage files as artifacts (directly below) | |
# - Download and merge individual coverage reports in another step | |
# - Upload only the merged coverage report to Coveralls | |
- shell: bash | |
run: | | |
cp ./lcov.info ./lcov-${{ matrix.JULIA_P4EST_TEST }}-${{ matrix.os }}-${{ matrix.version }}-${{ matrix.arch }}.info | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: lcov-${{ matrix.JULIA_P4EST_TEST }}-${{ matrix.os }}-${{ matrix.version }}-${{ matrix.arch }} | |
path: ./lcov-${{ matrix.JULIA_P4EST_TEST }}-${{ matrix.os }}-${{ matrix.version }}-${{ matrix.arch }}.info | |
finish: | |
needs: test | |
runs-on: ubuntu-latest | |
steps: | |
# The standard setup of Coveralls is just annoying for parallel builds, see, e.g., | |
# https://github.com/trixi-framework/Trixi.jl/issues/691 | |
# https://github.com/coverallsapp/github-action/issues/47 | |
# https://github.com/coverallsapp/github-action/issues/67 | |
# This standard setup is reproduced below for completeness. | |
# - name: Coveralls Finished | |
# uses: coverallsapp/github-action@master | |
# with: | |
# github-token: ${{ secrets.GITHUB_TOKEN }} | |
# parallel-finished: true | |
# Instead, we use the more tedious approach described above. | |
# At first, we check out the repository and download all artifacts | |
# (and list files for debugging). | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
- run: ls -R | |
# Next, we merge the individual coverage files and upload | |
# the combined results to Coveralls. | |
- name: Merge lcov files using Coverage.jl | |
shell: julia --color=yes {0} | |
run: | | |
using Pkg | |
Pkg.activate(temp=true) | |
Pkg.add("Coverage") | |
using Coverage | |
coverage = LCOV.readfolder(".") | |
for cov in coverage | |
cov.filename = replace(cov.filename, "\\" => "/") | |
end | |
coverage = merge_coverage_counts(coverage) | |
@show covered_lines, total_lines = get_summary(coverage) | |
LCOV.writefile("./lcov.info", coverage) | |
- uses: coverallsapp/github-action@v2 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
path-to-lcov: ./lcov.info | |
# Upload merged coverage data as artifact for debugging | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: lcov | |
path: ./lcov.info | |
# That's it | |
- run: echo "Finished testing P4est" |