Fix CI #1056
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: [ master, dev ] | |
pull_request: | |
branches: | |
- '**' | |
schedule: | |
- cron: '0 0 * * 0' | |
jobs: | |
tidy: | |
name: Enforce Tidyness | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- run: sudo apt-get update -qq | |
- run: sudo apt-get install -qq rename python3-sphinx | |
- run: ./ci/test_tidy.sh | |
test-macos-tidy: | |
name: Test Tidy Enforcement on macOS | |
runs-on: macos-11 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- run: brew install coreutils findutils gnu-sed gawk grep rename sphinx-doc | |
# adapted from https://stackoverflow.com/a/42878119 | |
- run: brew link sphinx-doc --force | |
- run: ./ci/test_tidy.sh | |
test: | |
name: Tests | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
cxx: [clang++, g++] | |
test-set: | |
- test-native-regular | |
- test-native-fulldebug | |
- test-native-opt | |
- test-examples | |
- test-demos | |
# - test-cookiecutter | |
env: | |
CXX: ${{ matrix.cxx }} | |
TEST_SET: ${{ matrix.test-set }} | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Set up GCC | |
uses: egor-tensin/setup-gcc@v1 | |
with: | |
version: 11 | |
- run: sudo apt-get update -qq | |
- run: sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
- run: sudo apt-get update -qq | |
- run: sudo apt-get install -qq cmake build-essential python3-pip python3-virtualenv nodejs tar gzip libpthread-stubs0-dev libc6-dbg gdb | |
- run: git fetch origin master:refs/remotes/origin/master | |
- run: make install-test-dependencies | |
- run: ${CXX} --version | |
- run: | | |
source third-party/emsdk/emsdk_env.sh | |
make ${TEST_SET} CXX=${CXX} | |
test-web: | |
name: Web Tests | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Set up GCC | |
uses: egor-tensin/setup-gcc@v1 | |
with: | |
version: 11 | |
- run: sudo apt-get update -qq | |
- run: sudo apt-get install -qq cmake build-essential python3-pip python3-virtualenv nodejs tar gzip libpthread-stubs0-dev libc6-dbg gdb | |
- run: make install-test-dependencies | |
- name: Run headless test | |
uses: GabrielBB/xvfb-action@v1 | |
with: | |
run: make test-web | |
test-coverage: | |
name: Measure Test Coverage | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- run: sudo apt-get update -qq | |
- run: sudo apt-get install cmake build-essential python3-virtualenv python3-pip nodejs tar gzip clang llvm-dev libclang-dev | |
- run: git fetch origin master:refs/remotes/origin/master | |
- run: make install-test-dependencies | |
- run: export CXX=clang++ && make install-coverage-dependencies | |
- run: export CXX=clang++ && make coverage | |
- run: curl -s https://codecov.io/bash | bash | |
# adapted from https://docs.github.com/en/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-actions#publishing-a-package-using-an-action | |
build-container: | |
name: Build Docker Image | |
runs-on: ubuntu-22.04 | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: ${{ github.repository }} | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Log in to GitHub Container Registry | |
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Extract metadata (tags, labels) for Docker | |
id: meta | |
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
tags: type=raw,value=ACTIONS_BUILD_${{ github.run_number }} | |
- name: Push to GHCR | |
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 | |
with: | |
context: . | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
test-documentation: | |
name: Test Documentation Build | |
runs-on: ubuntu-22.04 | |
needs: build-container | |
container: | |
image: ghcr.io/devosoft/empirical:ACTIONS_BUILD_${{ github.run_number }} | |
# github actions requires root to access mounted volumes | |
options: --user root | |
steps: | |
- uses: actions/checkout@v1 | |
with: | |
submodules: 'recursive' | |
- run: | | |
make -C doc html coverage | ./doc/headtail.sh | |
python doc/parse_documentation_coverage.py doc/_build/doc-coverage.json >> doc-coverage.json | |
- uses: sylvanld/action-storage@v1 | |
if: github.ref == 'refs/heads/master' | |
with: | |
src: doc-coverage.json | |
dst: stats/doc-coverage.json | |
deploy-container: | |
name: Deploy to DockerHub and ghcr.io | |
runs-on: ubuntu-22.04 | |
if: github.ref == 'refs/heads/master' | |
needs: | |
- tidy | |
- test | |
- test-web | |
- test-coverage | |
- test-documentation | |
- test-macos-tidy | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: 'recursive' | |
- name: Push to Docker Hub | |
uses: docker/build-push-action@v1 | |
with: | |
push: true | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
repository: devosoft/empirical | |
tag_with_ref: true | |
- name: Push to GHCR | |
uses: docker/build-push-action@v1 | |
with: | |
context: . | |
push: true | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
repository: devosoft/empirical | |
tag_with_ref: true |