Skip to content

CMake : add support for RLM protection #1408

CMake : add support for RLM protection

CMake : add support for RLM protection #1408

name: IFPEN el9 gimkl/2018b
on:
push:
branches: [ main, dev/cea, dev/ifpen, dev/ci_ifpen ]
pull_request:
branches: [ main, dev/cea, dev/ifpen, dev/ci_ifpen ]
workflow_dispatch:
inputs:
ctest_options:
description: 'CTest options'
required: false
default: ''
env:
# Framework directories
BUILD_DIR: /__w/framework/framework/build
INSTALL_DIR: /__w/framework/framework/install
SOURCE_DIR: /__w/framework/framework/source
EXT_LIB_SUBDIR: extlib # /__w/framework/framework/build/dependencies
# ccache
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 6
CCACHE_DIR: '/__w/framework/framework/ccache'
CCACHE_MAXSIZE: 5G
# CMake
CM_BUILD_OPTS: "-j4"
CM_BUILD_TYPE: Release
CM_CCACHE_OPTS: "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
# CTest
CT_OPTS: "--timeout 300 --output-on-failure --exclude-regex '(^hydro5_4proc_3sd_4proc$|^alien.interface.c.seq.mpi-1$|^alien.interface.fortran.seq.mpi-1$|.petsc.mumps)' ${{ github.event.inputs.ctest_options }}"
# For intel MPI to fix errors appearing in July 2023
I_MPI_SHM_LMT: shm
# To remove test output directory to reduce disk usage
ARCANE_TEST_CLEANUP_AFTER_RUN : 1
jobs:
build:
name: build
runs-on: ubuntu-latest
timeout-minutes: 120
container:
image: ghcr.io/arcaneframework/arcane-ifpen-devenv-gimkl-2018b:el9
#options: --user root # Avoid to match github UID in container.
strategy:
fail-fast: false
steps:
# ccache
- name: Get date
id: get-date
shell: bash
run: echo "NOW=$(/bin/date -u '+%Y%m%d%H%M%S')" >> $GITHUB_ENV
- name: Restore cache
id: restore-cache
uses: actions/cache/restore@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ifpen-el9-gimkl-2018b-${{ env.CM_BUILD_TYPE }}-${{ env.NOW }}-${{ github.run_number }}
restore-keys: ifpen-el9-gimkl-2018b-${{ env.CM_BUILD_TYPE }}-
# Installation
- name: Checkout
id: checkout
if: |
(success() || failure())
uses: actions/checkout@v4
with:
path: ${{ env.SOURCE_DIR }}
submodules: true
- name: Modules information
id: modules_information
if: |
(success() || failure()) &&
steps.checkout.outcome == 'success'
shell: bash
run: module --terse list 2>&1 | sort
- name: Configure
id: configure
if: |
(success() || failure()) &&
steps.checkout.outcome == 'success'
shell: bash
run: cmake -S ${{ env.SOURCE_DIR }} -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} ${{ env.CM_CCACHE_OPTS }} -DCMAKE_BUILD_TYPE=${{ env.CM_BUILD_TYPE }} -DARCCORE_BUILD_MODE=Check -DREMOVE_UID_ON_DETACH=ON -DUSE_GTEST_DEATH_TEST=ON -DCMAKE_DISABLE_FIND_PACKAGE_Papi=ON -DALIEN_BUILD_COMPONENT=all -DALIEN_PLUGIN_HYPRE=ON -DALIEN_PLUGIN_PETSC=ON -DUSE_GRAPH_CONNECTIVITY_POLICY=ON
- name: Build
id: build
if: |
(success() || failure()) &&
steps.configure.outcome == 'success'
shell: bash
run: cmake --build ${{ env.BUILD_DIR }} ${{ env.CM_BUILD_OPTS }}
- name: Clean
id: clean
if: |
(success() || failure()) &&
steps.build.outcome == 'success'
shell: bash
run: find ${{ env.BUILD_DIR }} -type f -name '*.o' -exec rm -f '{}' \;
- name: Install
id: install
if: |
(success() || failure()) &&
steps.build.outcome == 'success'
shell: bash
run: cmake --install ${{ env.BUILD_DIR }}
- name: Copy external libraries
id: copy-external-libraries
if: |
(success() || failure()) &&
steps.install.outcome == 'success'
shell: bash
run: |
cd ${{ env.BUILD_DIR }}
echo '--'
cat /scripts/copyextlib_github.sh
echo '--'
bash /scripts/copyextlib_github.sh
- name: Tar build artifact
shell: bash
run: tar czf build-artifact.tar.gz ${{ env.BUILD_DIR }}
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-artifact
path: build-artifact.tar.gz
retention-days: 1
- name: Save cache
id: save-cache
if: |
(success() || failure()) &&
steps.build.outcome == 'success'
uses: actions/cache/save@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ${{ steps.restore-cache.outputs.cache-primary-key }}
test:
name: test
needs:
- build
runs-on: ubuntu-latest
timeout-minutes: 120
container:
image: ghcr.io/arcaneframework/arcane-ifpen-devenv-gimkl-2018b-rt:el9
#options: --user root # Avoid to match github UID in container.
strategy:
fail-fast: false
steps:
- name: Checkout
id: checkout
if: |
(success() || failure())
uses: actions/checkout@v4
with:
path: ${{ env.SOURCE_DIR }}
submodules: true
- name: Download build artifact
uses: actions/download-artifact@v4
with:
name: build-artifact
- name: Untar build artifact
shell: bash
run: tar xf build-artifact.tar.gz -C /
- name: Remove build artifact tar
shell: bash
run: rm -f build-artifact.tar.gz
- name: Test
id: test
shell: bash
run: env LD_LIBRARY_PATH=${{ env.BUILD_DIR }}/${{ env.EXT_LIB_SUBDIR }}:${LD_LIBRARY_PATH} ctest --test-dir ${{ env.BUILD_DIR }} ${{ env.CT_OPTS }}
- name: Upload test artifact
id: upload-test-artifact
uses: actions/upload-artifact@v4
if: |
(success() || failure()) &&
steps.test.outcome == 'failure'
with:
name: test-artifact
path: ${{ env.BUILD_DIR }}/Testing
retention-days: 1