Skip to content

Merge pull request #595 from becnealon/apr3 #2173

Merge pull request #595 from becnealon/apr3

Merge pull request #595 from becnealon/apr3 #2173

Workflow file for this run

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