feat: algorithm sequencing #173
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: Linux | |
on: | |
pull_request: | |
push: | |
branches: [ main ] | |
tags: [ '*' ] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash | |
env: | |
hipo_version: 380d54ec47086b31fe13e637329748b2df06ea84 | |
fmt_version: 9.1.0 | |
jobs: | |
# dependencies | |
######################################################### | |
build_hipo: | |
name: Build HIPO | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout hipo | |
uses: actions/checkout@v4 | |
with: | |
repository: gavalian/hipo | |
ref: ${{ env.hipo_version }} | |
- name: build | |
run: | | |
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=hipo -DCMAKE_POSITION_INDEPENDENT_CODE=ON | |
cmake --build build -j2 | |
cmake --install build | |
- run: tree hipo | |
- name: tar | |
run: tar czvf hipo{.tar.gz,} | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: build | |
retention-days: 1 | |
path: hipo.tar.gz | |
build_fmt: | |
name: Build fmt | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout fmt | |
uses: actions/checkout@v4 | |
with: | |
repository: fmtlib/fmt | |
ref: ${{ env.fmt_version }} | |
- name: build | |
run: | | |
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=fmt -DCMAKE_POSITION_INDEPENDENT_CODE=ON | |
cmake --build build -j2 | |
cmake --install build | |
- run: tree fmt | |
- name: tar | |
run: tar czvf fmt{.tar.gz,} | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: build | |
retention-days: 1 | |
path: fmt.tar.gz | |
# build | |
######################################################### | |
build_iguana: | |
name: Build Iguana | |
needs: | |
- build_hipo | |
- build_fmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: setup meson | |
run: python -m pip install meson ninja | |
- name: summarize dependencies | |
run: | | |
echo '### Dependencies' >> $GITHUB_STEP_SUMMARY | |
echo '| Dependency | Version |' >> $GITHUB_STEP_SUMMARY | |
echo '| --- | --- |' >> $GITHUB_STEP_SUMMARY | |
for dep in python meson ninja ; do | |
echo "| \`$dep\` | $($dep --version) |" >> $GITHUB_STEP_SUMMARY | |
done | |
echo "| \`fmt\` | ${{ env.fmt_version }} |" >> $GITHUB_STEP_SUMMARY | |
echo "| \`hipo\` | ${{ env.hipo_version }} |" >> $GITHUB_STEP_SUMMARY | |
- name: get build artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: build | |
- name: untar build | |
run: ls *.tar.gz | xargs -I{} tar xzvf {} | |
- run: tree | |
- name: configure | |
run: ./configure.py --hipo hipo --fmt fmt | |
- name: build | |
run: ./install-iguana.sh | |
- name: dump build log | |
if: always() | |
run: cat build-iguana/meson-logs/meson-log.txt | |
- name: readelf iguana | |
run: | | |
for obj in $(ls iguana/bin/*) $(find iguana -name "*.so") ; do | |
echo "[+++] READELF $obj" | |
readelf -d $obj | |
done | |
- run: tree iguana | |
- name: tar | |
run: tar czvf iguana{.tar.gz,} | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: build | |
retention-days: 1 | |
path: iguana.tar.gz | |
# download test data | |
######################################################### | |
download_validation_files: | |
name: Download validation files | |
runs-on: ubuntu-latest | |
steps: | |
- name: download | |
run: wget --no-check-certificate http://clasweb.jlab.org/clas12offline/distribution/clas12-timeline/validation_files.tar.gz | |
- name: list | |
run: tar tzvf validation_files.tar.gz | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: validation_files | |
retention-days: 1 | |
path: validation_files.tar.gz | |
# run tests | |
######################################################### | |
test_iguana: | |
name: Test Iguana | |
needs: | |
- download_validation_files | |
- build_iguana | |
runs-on: ubuntu-latest | |
steps: | |
- name: get build artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: build | |
- name: get test data | |
uses: actions/download-artifact@v3 | |
with: | |
name: validation_files | |
- name: untar artifacts | |
run: | | |
ls *.tar.gz | xargs -I{} tar xzvf {} | |
rm -v *.tar.gz | |
- name: tree artifacts | |
run: tree | |
- name: run test | |
run: | | |
test_file=$(find validation_files -name "*.hipo" | head -n1) | |
echo "[+] TEST FILE: $test_file" | |
for exe in $(find iguana/bin -executable -type f); do | |
echo "[+] EXECUTE TEST: $exe" | |
$exe $test_file | |
done | |
# documentation | |
######################################################### | |
doc_generate: | |
name: Generate documentation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: doxygen | |
uses: mattnotmitt/doxygen-action@v1 | |
with: | |
doxyfile-path: doc/Doxyfile | |
- uses: actions/upload-pages-artifact@v2 | |
with: | |
retention-days: 1 | |
path: doc/api/ | |
doc_deploy: | |
if: ${{ github.head_ref == 'main' || github.ref_name == 'main' }} | |
name: Deploy documentation | |
needs: doc_generate | |
permissions: | |
pages: write | |
id-token: write | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: deployment | |
id: deployment | |
uses: actions/deploy-pages@v2 |