Adapted checks for implicit final class. #112
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: test_build | |
on: | |
push: | |
# triggered on commit pushes on the "dev" branch | |
branches: | |
- 'dev' | |
# triggered on tag pushes with tags beginning with either "v" or "dev" | |
tags: | |
- 'v*' | |
- 'dev*' | |
- 'ci*' | |
- 'build*' | |
- 'test*' | |
pull_request: | |
# also triggered by pull requests on the "dev" branch | |
branches: | |
- 'dev' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
PV_TAG: v5.11.1-headless | |
PV_REPO: topology-tool-kit/ttk-paraview | |
jobs: | |
# ------------------# | |
# Test Ubuntu build # | |
# ------------------# | |
test-build-ubuntu: | |
runs-on: ${{ matrix.os }} | |
# trigger job when push event on a branch (not on a tag) only for | |
# the "topology-tool-kit/ttk" repository | |
# (pull-requests and tag pushes not affected) | |
if: ${{ github.repository_owner == 'topology-tool-kit' || !contains(github.ref, 'heads') }} | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
env: | |
CCACHE_DIR: /home/runner/.ccache | |
CCACHE_MAXSIZE: 500M | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout TTK source code | |
- name: Install Ubuntu dependencies | |
run: | | |
sudo apt update | |
# TTK dependencies | |
sudo apt install -y \ | |
ccache \ | |
libboost-system-dev \ | |
libeigen3-dev \ | |
libgraphviz-dev \ | |
libosmesa-dev \ | |
libopenmpi-dev \ | |
libsqlite3-dev \ | |
libwebsocketpp-dev \ | |
graphviz \ | |
ninja-build \ | |
zlib1g-dev \ | |
libqhull-dev \ | |
dpkg-dev | |
sudo python3 -m pip install scikit-learn | |
- name: Install optional dependencies | |
uses: ./.github/actions/install-deps-unix | |
- name: Fetch archived ccache | |
continue-on-error: true | |
run: | | |
wget -O ttk-ccache.tar.gz \ | |
https://github.com/topology-tool-kit/ttk/releases/download/ccache/ttk-ccache-${{ matrix.os }}.tar.gz | |
- name: Decompress ccache archive | |
continue-on-error: true | |
run: | | |
tar xzf ttk-ccache.tar.gz | |
mv .ccache /home/runner/ | |
- name: Fetch TTK-ParaView headless Debian package | |
run: | | |
wget -O ttk-paraview-headless.deb \ | |
https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-headless-${{ matrix.os }}.deb | |
- name: Install ParaView .deb | |
run: | | |
sudo apt install ./ttk-paraview-headless.deb | |
- name: Create & configure TTK build directory | |
run: | | |
mkdir build | |
cd build | |
cmake \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_INSTALL_PREFIX=/usr \ | |
-DTTK_BUILD_PARAVIEW_PLUGINS=TRUE \ | |
-DTTK_BUILD_VTK_WRAPPERS=TRUE \ | |
-DTTK_BUILD_STANDALONE_APPS=TRUE \ | |
-DTTK_ENABLE_KAMIKAZE=TRUE \ | |
-DTTK_ENABLE_MPI=TRUE \ | |
-DTTK_ENABLE_CPU_OPTIMIZATION=FALSE \ | |
-DTTK_ENABLE_SHARED_BASE_LIBRARIES=TRUE \ | |
-DTTK_IMPLICIT_PRECONDITIONS_THRESHOLD=64*64*64 \ | |
-GNinja \ | |
$GITHUB_WORKSPACE | |
env: | |
CXXFLAGS: -Werror | |
- uses: ammaraskar/gcc-problem-matcher@master | |
- name: Build, install TTK & package it | |
run: | | |
cd build | |
cmake --build . --parallel | |
cpack -G DEB | |
sudo cmake --build . --target install | |
- name: Run TTK tests | |
uses: ./.github/actions/test-ttk-unix | |
- name: Upload TTK .deb package for fast install in tests | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ttk-for-tests-${{ matrix.os }}.deb | |
path: build/ttk.deb | |
- name: Archive cache | |
run: | | |
ccache -s | |
ccache -c | |
cd /home/runner | |
tar czf ttk-ccache.tar.gz .ccache | |
- name: Upload ccache archive | |
if: ${{ github.repository_owner == 'topology-tool-kit' && contains(github.ref, 'heads') }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ttk-ccache-${{ matrix.os }} | |
path: /home/runner/ttk-ccache.tar.gz | |
retention-days: 2 | |
# ------------------# | |
# Tests on ttk-data # | |
# ------------------# | |
run-python-screenshots-tests: | |
runs-on: ${{ matrix.os }} | |
needs: test-build-ubuntu | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
testSet: [pyTests, screenshotTests] | |
steps: | |
- name: Install Ubuntu dependencies | |
run: | | |
sudo apt update | |
sudo python3 -m pip install scikit-learn | |
- name: Fetch TTK-ParaView headless Debian package | |
run: | | |
wget -O ttk-paraview-headless.deb \ | |
https://github.com/${{ env.PV_REPO }}/releases/download/${{ env.PV_TAG }}/ttk-paraview-headless-${{ matrix.os }}.deb | |
- name: Install ParaView .deb | |
run: | | |
sudo apt install ./ttk-paraview-headless.deb | |
- name: Fetch TTK packages we just built in the test-build-ubuntu job | |
uses: actions/download-artifact@v3 | |
with: | |
name: ttk-for-tests-${{ matrix.os }}.deb | |
- name: Installing the previously built ttk package | |
run: | | |
sudo apt install ./ttk.deb | |
- uses: actions/checkout@v3 | |
with: | |
repository: "topology-tool-kit/ttk-data" | |
ref: "dev" | |
path: "ttk-data" | |
name: Checkout ttk-data | |
- name: Resample large datasets | |
shell: python3 {0} | |
working-directory: ./ttk-data | |
run: | | |
from paraview import simple | |
for ds in ["ctBones.vti"]: | |
vti = simple.XMLImageDataReader(FileName=ds) | |
rsi = simple.ResampleToImage(Input=vti) | |
rsi.SamplingDimensions = [128, 128, 128] | |
simple.SaveData(ds, rsi) | |
- name: Run ttk-data states [NOT ENFORCED] | |
if: matrix.testSet == 'screenshotTests' | |
id: validate | |
continue-on-error: true | |
run: | | |
VERS=$(hostnamectl | grep "Operating System") | |
# Ubuntu 22.04 OOM killer also kills the parent process... | |
if [[ "$VERS" == *"22.04"* ]]; then | |
rm ttk-data/states/mergeTreeClustering.pvsm | |
rm ttk-data/states/mergeTreePGA.pvsm | |
rm ttk-data/states/mergeTreeTemporalReduction.pvsm | |
rm ttk-data/states/persistentGenerators_darkSky.pvsm | |
fi | |
cd ttk-data/tests | |
mkdir output_screenshots | |
if ! python3 -u validate.py; then | |
if [[ "$VERS" == *"22.04"* ]]; then | |
# weird opacity difference between the two Ubuntus | |
rm -f output_screenshots/clusteringKelvinHelmholtzInstabilities_1.png | |
rm -f output_screenshots/clusteringKelvinHelmholtzInstabilities_2.png | |
fi | |
if [ "$(ls -A output_screenshots)" ]; then | |
tar zcf screenshots.tar.gz output_screenshots | |
false | |
fi | |
fi | |
- name: Upload result screenshots | |
if: steps.validate.outcome == 'failure' && matrix.testSet == 'screenshotTests' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: screenshots-${{ matrix.os }}.tar.gz | |
path: ttk-data/tests/screenshots.tar.gz | |
retention-days: 10 | |
- name: Run ttk-data Python scripts | |
if: matrix.testSet == 'pyTests' | |
run: | | |
cd ttk-data | |
python3 -u python/run.py | |
- name: Test ttk-data Python scripts results [NOT ENFORCED] | |
if: matrix.testSet == 'pyTests' | |
continue-on-error: true | |
run: | | |
cd ttk-data | |
cat python/res.json | |
diff python/hashes/${{ matrix.os }}.json python/res.json | |
- name: Delete TTK package artifact | |
uses: geekyeggo/delete-artifact@v2 | |
# delete package only once | |
if: matrix.testSet == 'screenshotTests' | |
with: | |
name: ttk-for-tests-${{ matrix.os }}.deb | |
# ---------------------------------------- # | |
# Upload ccache archives as release assets # | |
# ---------------------------------------- # | |
ccache-release: | |
runs-on: ubuntu-latest | |
needs: [test-build-ubuntu] | |
# trigger job only on the "topology-tool-kit" repository in case | |
# of a branch push (pull requests and tags not affected) | |
if: ${{ github.repository_owner == 'topology-tool-kit' && contains(github.ref, 'heads') }} | |
steps: | |
- name: Delete previous release | |
uses: actions/github-script@v6 | |
continue-on-error: true | |
with: | |
script: | | |
const { owner, repo } = context.repo | |
const { data: { id } } = await github.rest.repos.getReleaseByTag({ | |
owner, | |
repo, | |
tag: "ccache" | |
}) | |
await github.rest.repos.deleteRelease({ owner, repo, release_id: id }) | |
- name: Create Release | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const { owner, repo } = context.repo | |
await github.rest.repos.createRelease({ | |
owner, | |
repo, | |
tag_name: "ccache", | |
name: "ccache archives", | |
body: "Holds ccache archives to speed up build jobs", | |
draft: false, | |
prerelease: true | |
}) | |
- name: Fetch all uploaded artifacts | |
uses: actions/download-artifact@v3 | |
- name: Upload Ubuntu Jammy .deb as Release Asset | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ccache | |
file: ttk-ccache-ubuntu-22.04/ttk-ccache.tar.gz | |
asset_name: ttk-ccache-ubuntu-22.04.tar.gz | |
- name: Delete ccache artifacts | |
uses: geekyeggo/delete-artifact@v2 | |
with: | |
name: | | |
ttk-*ccache* |