Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 26 additions & 51 deletions .github/workflows/run-benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,42 +37,19 @@ jobs:
- name: Update environment
run: mamba env update -n model-validation -f environment_benchmarks.yml

- name: generate-config-files
- name: Run Example linear-elastic-plate-with-hole_fenics using Benchmarking package
shell: bash -l {0}
run: |
cd $GITHUB_WORKSPACE/benchmarks/linear-elastic-plate-with-hole/
python generate_config.py

- name: run_linear-elastic-plate-with-hole-benchmarks_snakemake
shell: bash -l {0}
run: |
cd $GITHUB_WORKSPACE/benchmarks/linear-elastic-plate-with-hole/
snakemake --use-conda --force --cores 'all'
snakemake --use-conda --force --cores all \
--reporter metadata4ing \
--report-metadata4ing-paramscript ../common/parameter_extractor.py \
--report-metadata4ing-config metadata4ing.config \
--report-metadata4ing-filename $SNAKEMAKE_RESULT_FILE

- name: run_linear-elastic-plate-with-hole-benchmarks_nextflow
shell: bash -l {0}
run: |
cd $GITHUB_WORKSPACE/benchmarks/linear-elastic-plate-with-hole/
nextflow run main.nf -params-file workflow_config.json -c ../common/nextflow.config -plugins nf-prov@1.4.0
cd $GITHUB_WORKSPACE/examples/linear-elastic-plate-with-hole/fenics/
python run_benchmark.py

- name: Archive Linear Elastic plate with a hole benchmark data for snakemake
uses: actions/upload-artifact@v4
with:
name: snakemake_results_linear-elastic-plate-with-hole
path: |
benchmarks/linear-elastic-plate-with-hole/${{ env.SNAKEMAKE_RESULT_FILE }}.zip
examples/linear-elastic-plate-with-hole/fenics/results/

- name: Archive Linear Elastic plate with a hole benchmark data for nextflow
uses: actions/upload-artifact@v4
with:
name: nextflow_results_linear-elastic-plate-with-hole
path: |
benchmarks/linear-elastic-plate-with-hole/nextflow_results/

process-artifacts:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -129,34 +106,32 @@ jobs:
shell: bash -l {0}
continue-on-error: true
run: |
LOG_FILE=rohub_upload_error.log

# Run Python and capture all stdout+stderr
python benchmarks/common/upload_provenance.py \
--provenance_folderpath "./${SNAKEMAKE_RESULT_FILE}.zip" \
--benchmark_name "linear-elastic-plate-with-hole" \
--username "${{ secrets.ROHUB_USERNAME }}" \
--password "${{ secrets.ROHUB_PASSWORD }}" \
2>&1 | tee "$LOG_FILE"

PYTHON_EXIT_CODE=${PIPESTATUS[0]}

# Check exit code: 0 = failure, 1 = success (per your convention)
if [ $PYTHON_EXIT_CODE -eq 0 ]; then
echo "=== RoHub upload failed — see log below ==="
cat "$LOG_FILE"
LOG_FILE="${GITHUB_WORKSPACE}/rohub_upload_error.log"

# Run Python and capture stdout+stderr
OUTPUT="$(
python benchmarks/common/upload_provenance.py \
--provenance_folderpath "./${SNAKEMAKE_RESULT_FILE}.zip" \
--benchmark_name "linear-elastic-plate-with-hole" \
--username "${{ secrets.ROHUB_USERNAME }}" \
--password "${{ secrets.ROHUB_PASSWORD }}" \
2>&1
)"
PYTHON_EXIT_CODE=$?

# Standard convention: 0 = success, non-zero = failure
if [ "$PYTHON_EXIT_CODE" -eq 0 ]; then
echo "RoHub upload succeeded"
rm -f "$LOG_FILE" || true
else
echo " RoHub upload succeeded"
rm -f "$LOG_FILE"
echo "=== RoHub upload failed — writing log to $LOG_FILE ==="
printf '%s\n' "$OUTPUT" | tee "$LOG_FILE"
fi

# Export exit code for subsequent steps if needed
echo "python_exit_code=$PYTHON_EXIT_CODE" >> $GITHUB_ENV

- name: Upload RoHub error log
if: ${{ env.python_exit_code == '0' }}
if: always()
uses: actions/upload-artifact@v4
with:
name: rohub-upload-error-log
path: rohub_upload_error.log

path: ${{ github.workspace }}/rohub_upload_error.log
if-no-files-found: ignore
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
.snakemake
site
site
examples/linear-elastic-plate-with-hole/fenics/conda_envs
examples/linear-elastic-plate-with-hole/linear-elastic-plate-with-hole
examples/linear-elastic-plate-with-hole/fenics/results
src/__pycache__
benchmarks/common/__pycache__
Loading
Loading