Skip to content

Adapted checks for implicit final class. #112

Adapted checks for implicit final class.

Adapted checks for implicit final class. #112

Workflow file for this run

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*