Fix issue 55 #671
This file contains hidden or 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: CI | |
| on: | |
| push: | |
| pull_request: | |
| branches: [ main ] | |
| # Allows you to run this workflow manually from the Actions tab | |
| workflow_dispatch: | |
| # Runs the workflow once per day at 3:15am | |
| schedule: | |
| - cron: '3 16 * * *' | |
| env: | |
| CACHE_NUMBER: 1 # increase to reset cache manually | |
| SNAKEMAKE_RESULT_FILE: metadata4ing_provenance | |
| PROVENANACE_FILE_NAME: element_size_vs_max_mises_stress.pdf | |
| jobs: | |
| run-simulation: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: checkout repo content | |
| uses: actions/checkout@v2 | |
| - name: Setup Mambaforge | |
| uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| miniforge-version: latest | |
| activate-environment: model-validation | |
| use-mamba: true | |
| - name: Set strict channel priority | |
| run: conda config --set channel_priority strict | |
| - name: Update environment | |
| run: mamba env update -n model-validation -f environment_benchmarks.yml | |
| - name: generate-config-files | |
| 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 | |
| - 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 | |
| - 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 | |
| needs: run-simulation | |
| steps: | |
| - name: Checkout repo content | |
| uses: actions/checkout@v2 | |
| - name: Download artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: snakemake_results_linear-elastic-plate-with-hole | |
| path: ./artifact_files | |
| - name: Unzip Snakemake Result File | |
| run: | | |
| mkdir -p ./$SNAKEMAKE_RESULT_FILE | |
| unzip -o ./artifact_files/$SNAKEMAKE_RESULT_FILE.zip -d ./$SNAKEMAKE_RESULT_FILE | |
| - name: Setup Mambaforge with postprocessing env | |
| uses: conda-incubator/setup-miniconda@v3 | |
| with: | |
| miniforge-version: latest | |
| activate-environment: postprocessing | |
| use-mamba: true | |
| environment-file: benchmarks/linear-elastic-plate-with-hole/environment_postprocessing.yml | |
| - name: Validate Snakemake Result File | |
| shell: bash -l {0} | |
| run: | | |
| python benchmarks/common/validate_provenance.py \ | |
| --provenance_folderpath "./$SNAKEMAKE_RESULT_FILE" | |
| - name: Run plotting script | |
| shell: bash -l {0} | |
| run: | | |
| python benchmarks/linear-elastic-plate-with-hole/plot_metrics.py \ | |
| --provenance_folderpath "./$SNAKEMAKE_RESULT_FILE" \ | |
| --output_file $PROVENANACE_FILE_NAME | |
| - name: Upload snakemake results file as artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: element-size-vs-stress-plot | |
| path: ${{ env.PROVENANACE_FILE_NAME }} | |
| - name: Re-zip snakemake result folder | |
| run: | | |
| cd "./${SNAKEMAKE_RESULT_FILE}" | |
| zip -r "../${SNAKEMAKE_RESULT_FILE}.zip" . | |
| - name: Upload RoCrate Zip file onto RoHub | |
| id: rohub_upload | |
| shell: bash -l {0} | |
| continue-on-error: true | |
| run: | | |
| 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 failed — writing log to $LOG_FILE ===" | |
| printf '%s\n' "$OUTPUT" | tee "$LOG_FILE" | |
| fi | |
| - name: Upload RoHub error log | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: rohub-upload-error-log | |
| path: ${{ github.workspace }}/rohub_upload_error.log | |
| if-no-files-found: ignore |