Merge pull request #591 from themikelau/CE-analysis #2176
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: build | |
on: | |
push: | |
branches: [ master ] | |
paths-ignore: | |
- 'docs/**' | |
- 'README.md' | |
pull_request: | |
branches: [ master ] | |
paths-ignore: | |
- 'docs/**' | |
- 'README.md' | |
env: | |
OMP_STACKSIZE: 512M | |
SPLASH_DIR: ${{ github.workspace }}/splash | |
PHANTOM_DIR: ${{ github.workspace }} | |
WEB_USER: github | |
WEB_SERVER: data.phantom.cloud.edu.au | |
WEB_HTML_DIR: /var/www/html | |
BUILD_LOG_DIR: /ci/build/logs | |
NPARALLEL: 32 | |
jobs: | |
matrix_prep: | |
runs-on: ubuntu-latest | |
outputs: | |
batch: ${{ steps.set-sequence.outputs.batch }} | |
nbatch: ${{ steps.set-sequence.outputs.nbatch }} | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
- name: Generate sequence of batch numbers for normal tests, or run sequentially for scheduled tests | |
id: set-sequence | |
run: | | |
if [[ ${{ github.event_name == 'schedule' }} ]]; then | |
range=$(jq -ncR "[range(1;${NPARALLEL}+1)]") | |
echo "::set-output name=batch::${range}" | |
echo "::set-output name=nbatch::${NPARALLEL}" | |
else | |
echo "::set-output name=batch::[1]" | |
echo "::set-output name=nbatch::1" | |
fi | |
build: | |
needs: matrix_prep | |
strategy: | |
fail-fast: false | |
matrix: | |
system: | |
- gfortran | |
- ifort | |
batch: ${{ fromJson(needs.matrix_prep.outputs.batch) }} | |
name: build (batch ${{ matrix.batch }}/${{ needs.matrix_prep.outputs.nbatch }}, SYSTEM=${{ matrix.system }}) | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Nuke the github workspace before doing anything" | |
run: rm -r ${{ github.workspace }} && mkdir ${{ github.workspace }} | |
- name: Update package list | |
run: sudo apt-get update | |
- name: Setup Intel compiler | |
if: matrix.system == 'ifort' | |
uses: fortran-lang/setup-fortran@v1 | |
with: | |
compiler: intel-classic | |
- name: Install numpy and matplotlib for analysis unit tests | |
run: | | |
sudo apt-get install -y python3-numpy | |
sudo apt-get install -y python3-matplotlib | |
- name: "Clone phantom" | |
uses: actions/checkout@v4 | |
- name: "Grab a copy of splash source code" | |
uses: actions/checkout@v4 | |
with: | |
repository: danieljprice/splash | |
path: splash | |
- name: "Create logs directory" | |
if: github.event_name == 'schedule' | |
run: mkdir logs | |
- name: "Run buildbot.sh" | |
run: ./buildbot.sh --maxdim 17000000 --url http://${WEB_SERVER}/${BUILD_LOG_DIR} --parallel ${{ matrix.batch }} ${{ env.NPARALLEL }} | |
working-directory: scripts | |
env: | |
SYSTEM: ${{ matrix.system }} | |
RETURN_ERR: yes | |
- name: logs/build-failures-${{ matrix.system }}.txt | |
if: always() | |
run: cat logs/build-failures-${{ matrix.system }}.txt || true | |
- name: logs/setup-failures-${{ matrix.system }}.txt | |
if: always() | |
run: cat logs/setup-failures-${{ matrix.system }}.txt || true | |
- name: logs/analysis-failures-${{ matrix.system }}.txt | |
if: always() | |
run: cat logs/analysis-failures-${{ matrix.system }}.txt || true | |
- name: logs/make-*-${{ matrix.system }}.txt | |
if: always() | |
run: | | |
echo | |
for item in $(ls logs/make-*-${{ matrix.system }}.txt); do | |
echo ::group::"${item}" | |
cat $item | |
echo ::endgroup:: | |
done | |
# Gather results into a dummy job that will fail if the previous job fails | |
gather_results: | |
if: ${{ always() && github.event_name != 'schedule' }} | |
needs: | |
- build | |
# This name matches the branch protection requirement | |
name: build | |
# Always run on github runner; no need to use custom runner for the check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check all builds succeeded | |
run: | | |
if [[ "${{ needs.build.result }}" == "success" ]]; then | |
echo "All build succeeded" | |
else | |
echo "At least one build failed" | |
exit 1 | |
fi |