Skip to content

add tests for strategies #166 #861

add tests for strategies #166

add tests for strategies #166 #861

Workflow file for this run

name: CI
on:
push:
branches:
- '**' # Push events on all branches
paths-ignore:
- '.github/workflows/init.yml'
tags:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 including semver
jobs:
build_wheel:
runs-on: self-ubuntu-22.04
name: Build wheel
if: "!contains(github.event.head_commit.message, 'wheel skip')"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Create Virtual Environment
run: |
python3 -m venv .venv
source .venv/bin/activate
pip3 install -I -r requirements.txt
- name: Compile
run: |
pip3 wheel --no-deps --wheel-dir dist .
env:
CXX: clang++
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: wheel-artifacts
path: dist/*.whl
tests:
runs-on: self-ubuntu-22.04
name: Integration Tests
needs: build_wheel
if: "!contains(github.event.head_commit.message, 'tests skip')"
steps:
- uses: actions/checkout@v4
- name: Download packages
uses: actions/download-artifact@v3
with:
name: wheel-artifacts
path: dist/
- name: Install Python dependencies
run: |
python -m venv .venv
source .venv/bin/activate
pip3 install -I -r requirements.txt
pip3 install dist/*.whl
- name: Unit tests
run: |
source .venv/bin/activate
python3 -m pytest
env:
GIRDER_API_KEY: ${{secrets.GIRDER}}
- name: Compile test applications
run: |
mpic++ -std=c++17 -O3 tests/data/parallelSum.cpp -o tests/data/parallelSum
- name: Test benchmarks
run: |
source .venv/bin/activate
execute-benchmark -mc config/machines/gaya_ci.json -bc config/tests_parallelSum/parallelSum.json -pc config/tests_parallelSum/plots.json
echo $?
- name: Dry-run reports
run: |
source .venv/bin/activate
render-benchmarks --config_file reports/website_config.json
- name: Check files
run: | #TODO: check if not empty (maybe)
nb_rfm_report_files=$(ls -1q reports/parallelSum/parallel_sum/gaya|wc -l)
nb_doc_reports=$(ls -1q docs/modules/ROOT/pages/reports/|wc -l)
if [ "$nb_rfm_report_files" -ne 1 ] || [ "$nb_doc_reports" -ne 1 ]; then
echo "Reports where not rendered."
exit 1
fi
docs:
runs-on: self-ubuntu-22.04
name: Build Antora Site
needs: build_wheel
if: "!contains(github.event.head_commit.message, 'docs skip')"
steps:
- uses: actions/checkout@v4
- name: Install credentials
run: echo https://$GITHUB_OAUTH:@github.com > $HOME/.git-credentials
env:
GITHUB_OAUTH: ${{ secrets.CR_PAT_WORKFLOW }}
- name: Install NPM dependencies
run: npm install
- name: Download
uses: actions/download-artifact@v3
with:
name: wheel-artifacts
path: dist/
- name: Install Python dependencies
run: |
python -m venv .venv
source .venv/bin/activate
pip3 install -I -r requirements.txt
pip3 install dist/*.whl
tree .venv
- name: Download website config
run: |
source .venv/bin/activate
source ./girder_deploy_config.sh
girder-download --girder_id=$production_website_config_id --output_dir=./tmp/ --filename=website_config.json
env:
GIRDER_API_KEY: ${{secrets.GIRDER}}
- name: Render reports
run: |
source .venv/bin/activate
render-benchmarks --config_file=./tmp/website_config.json
env:
GIRDER_API_KEY: ${{ secrets.GIRDER }}
- name: Build Antora Site
run: |
source .venv/bin/activate
npm run antora
- name: Deploy
if: ${{ github.ref_name == 'master' }}
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages # The branch the action should deploy to.
folder: public # The folder the action should deploy.
build_code:
runs-on: self-ubuntu-22.04
name: Build, Install, Package code
if: "!contains(github.event.head_commit.message, 'code skip')"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build
run: |
cmake --preset default
cmake --build --preset default
- name: Check
run: |
ctest --preset default
env:
OMPI_ALLOW_RUN_AS_ROOT: 1
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1
- name: Package
run: |
cmake --build --preset default -t package
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: benchmarking-artifacts
path: build/default/assets/benchmarking-*
deliver:
runs-on: self-ubuntu-22.04
needs: build_code
name: Build docker, tag and push
steps:
- uses: actions/checkout@v4
- name: Download
uses: actions/download-artifact@v3
with:
# Artifact name
name: benchmarking-artifacts
path: artifacts/
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: |
ghcr.io/feelpp/benchmarking
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.CR_PAT }}
- name: Build container image
uses: docker/build-push-action@v6
with:
context: artifacts
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
file: ./Dockerfile
release:
runs-on: self-ubuntu-22.04
name: Release
needs: [build_wheel, build_code]
if: startsWith(github.ref ,'refs/tags/v')
steps:
- uses: actions/checkout@v4
- name: Download Deb Packages
uses: actions/download-artifact@v3
with:
name: benchmarking-artifacts
path: artifacts/
- name: Download Wheel Packages
uses: actions/download-artifact@v3
with:
name: wheel-artifacts
path: dist/
- name: Create Release
uses: softprops/action-gh-release@v1
with:
files: |
artifacts/*.deb
dist/*.whl
draft: false
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc')}}
name: Release ${{ github.ref_name }}
generate_release_notes: true
tag_name: ${{ github.ref }}
token: ${{ secrets.GITHUB_TOKEN }}