Skip to content

PeleLMeX-CI

PeleLMeX-CI #52

Workflow file for this run

name: PeleLMeX-CI
on:
workflow_dispatch:
push:
branches: [development]
pull_request:
branches: [development]
concurrency:
group: ${{github.ref}}-${{github.head_ref}}-ci
cancel-in-progress: true
jobs:
CPU-CMake:
runs-on: ${{matrix.os}}
strategy:
matrix:
os: [ubuntu-latest]
build_type: [Debug]
enable_eb: [EB-OFF]
include:
- os: ubuntu-latest
install_deps: sudo apt-get update && sudo apt-get install mpich libmpich-dev
comp: gnu
procs: $(nproc)
ccache_cache: ~/.cache/ccache
- build_type: Debug
ctest_args: -LE no-ci
ccache_size: 500M
- enable_eb: EB-OFF
use_eb: "OFF"
steps:
- name: Clone
uses: actions/checkout@v4
with:
submodules: recursive
- name: Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Setup
run: |
echo "NPROCS=${{matrix.procs}}" >> $GITHUB_ENV
echo "CCACHE_COMPRESS=1" >> $GITHUB_ENV
echo "CCACHE_COMPRESSLEVEL=1" >> $GITHUB_ENV
echo "CCACHE_LOGFILE=${{github.workspace}}/ccache.log.txt" >> $GITHUB_ENV
echo "CCACHE_MAXSIZE=${{matrix.ccache_size}}" >> $GITHUB_ENV
cmake -E make_directory ${{runner.workspace}}/deps
if [ "${RUNNER_OS}" != "macOS" ]; then
${{github.workspace}}/Submodules/PelePhysics/Submodules/amrex/.github/workflows/dependencies/ubuntu_free_disk_space.sh
fi
- name: Dependencies
run: |
# Install MPI
${{matrix.install_deps}}
# Install Python packages
python -m pip install --upgrade pip
pip install pynose numpy pandas
- name: Install Ccache
run: |
if [ "${RUNNER_OS}" != "macOS" ]; then
wget https://github.com/ccache/ccache/releases/download/v4.8/ccache-4.8-linux-x86_64.tar.xz
tar xvf ccache-4.8-linux-x86_64.tar.xz
sudo cp -f ccache-4.8-linux-x86_64/ccache /usr/local/bin/
fi
- name: Set Up Ccache
uses: actions/cache@v4
with:
path: ${{matrix.ccache_cache}}
key: ccache-${{github.workflow}}-${{github.job}}-${{matrix.os}}-${{matrix.build_type}}-${{matrix.enable_eb}}-git-${{github.sha}}
restore-keys: |
ccache-${{github.workflow}}-${{github.job}}-${{matrix.os}}-${{matrix.build_type}}-${{matrix.enable_eb}}-git-
- name: Configure
run: |
(for DIM in 2; do \
printf "\n-------- Configuring ${DIM}D --------\n"; \
cmake -B${{runner.workspace}}/build-${DIM}d-${{matrix.os}}-${{matrix.build_type}}-${{matrix.enable_eb}} \
-DCMAKE_INSTALL_PREFIX:PATH=${{runner.workspace}}/install-${DIM}d-${{matrix.os}}-${{matrix.build_type}}-${{matrix.enable_eb}} \
-DCMAKE_BUILD_TYPE:STRING=${{matrix.build_type}} \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DPELE_DIM:STRING=${DIM} \
-DPELE_ENABLE_MPI:BOOL=ON \
-DPELE_ENABLE_EB:BOOL=${{matrix.use_eb}} \
-DPELE_ENABLE_FCOMPARE_FOR_TESTS:BOOL=OFF \
-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache \
${{github.workspace}}; \
if [ $? -ne 0 ]; then exit 1; fi \
done)
- name: Build
run: |
ccache -z
(for DIM in 2; do \
printf "\n-------- Building ${DIM}D --------\n"; \
cmake --build ${{runner.workspace}}/build-${DIM}d-${{matrix.os}}-${{matrix.build_type}}-${{matrix.enable_eb}} \
--parallel ${{env.NPROCS}} 2>&1 | tee -a ${{runner.workspace}}/build-output.txt; \
if [ ${PIPESTATUS[0]} -ne 0 ]; then exit 1; fi \
done)
- name: Ccache Report
run: |
ccache -s
du -hs ${{matrix.ccache_cache}}
- name: Report
run: |
echo "::add-matcher::.github/problem-matchers/gcc.json"
egrep "warning:|error:" ${{runner.workspace}}/build-output.txt \
| egrep -v "Submodules/amrex|Submodules/sundials|Submodules/AMReX-Hydro" \
| egrep -v "ld: warning:" | egrep -v "lto-wrapper: warning:" | sort | uniq \
| awk 'BEGIN{i=0}{print $0}{i++}END{print "Warnings: "i}' > ${{runner.workspace}}/build-output-warnings.txt
cat ${{runner.workspace}}/build-output-warnings.txt
export return=$(tail -n 1 ${{runner.workspace}}/build-output-warnings.txt | awk '{print $2}')
exit ${return}
- name: Test
run: |
(for DIM in 2; do \
printf "\n-------- Testing ${DIM}D --------\n"; \
cd ${{runner.workspace}}/build-${DIM}d-${{matrix.os}}-${{matrix.build_type}}-${{matrix.enable_eb}}; \
ctest -j ${{env.NPROCS}} ${{matrix.ctest_args}} --output-on-failure; \
if [ $? -ne 0 ]; then exit 1; fi \
done)
Save-PR-Number:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- name: Save PR number
env:
PR_NUMBER: ${{ github.event.number }}
run: |
echo $PR_NUMBER > pr_number.txt
- uses: actions/upload-artifact@v4
with:
name: pr_number
path: pr_number.txt
retention-days: 1