CI IFPEN : update workflows (#18) #25
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: IFPEN el8 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 | |
ARCANE_BUILD_DIR: /__w/sharc/sharc/arcane_build | |
ARCANE_INSTALL_DIR: /__w/sharc/sharc/arcane_install | |
ARCANE_SOURCE_DIR: /__w/sharc/sharc/arcane_source | |
# Sharc | |
SHARC_BUILD_DIR: /__w/sharc/sharc/sharc_build | |
SHARC_INSTALL_DIR: /__w/sharc/sharc/sharc_install | |
SHARC_SOURCE_DIR: /__w/sharc/sharc/sharc_source | |
# ccache | |
CCACHE_COMPRESS: true | |
CCACHE_COMPRESSLEVEL: 6 | |
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 ${{ 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 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
arcane-install: | |
name: Install Arcane | |
runs-on: ubuntu-latest | |
timeout-minutes: 120 | |
container: | |
image: ghcr.io/arcaneframework/arcane-ifpen-devenv-gimkl-2018b:el8 | |
#options: --user root # Avoid to match github UID in container. | |
strategy: | |
fail-fast: false | |
env: | |
CCACHE_DIR: /__w/sharc/sharc/arcane_ccache | |
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-el8-gimkl-2018b-${{ github.job }}-${{ env.CM_BUILD_TYPE }}-${{ env.NOW }}-${{ github.run_number }} | |
restore-keys: ifpen-el8-gimkl-2018b-${{ github.job }}-${{ env.CM_BUILD_TYPE }}- | |
# Installation | |
- name: Checkout | |
id: checkout | |
if: | | |
(success() || failure()) | |
uses: actions/checkout@v4 | |
with: | |
repository: arcaneframework/framework | |
path: ${{ env.ARCANE_SOURCE_DIR }} | |
submodules: true | |
ref: main | |
- name: Modules information | |
id: arcane_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.ARCANE_SOURCE_DIR }} -B ${{ env.ARCANE_BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.ARCANE_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.ARCANE_BUILD_DIR }} ${{ env.CM_BUILD_OPTS }} | |
- name: Clean | |
id: clean | |
if: | | |
(success() || failure()) && | |
steps.build.outcome == 'success' | |
shell: bash | |
run: find ${{ env.ARCANE_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.ARCANE_BUILD_DIR }} | |
- name: Tar install artifact | |
shell: bash | |
run: tar czf arcane-install-artifact.tar.gz ${{ env.ARCANE_INSTALL_DIR }} | |
- name: Upload install artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: arcane-install-artifact | |
path: arcane-install-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 }} | |
sharc-install: | |
name: Install Sharc | |
needs: | |
- arcane-install | |
runs-on: ubuntu-latest | |
timeout-minutes: 120 | |
container: | |
image: ghcr.io/arcaneframework/arcane-ifpen-devenv-gimkl-2018b:el8 | |
#options: --user root # Avoid to match github UID in container. | |
strategy: | |
fail-fast: false | |
env: | |
CCACHE_DIR: /__w/sharc/sharc/sharc_ccache | |
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-el8-gimkl-2018b-${{ github.job }}-${{ env.CM_BUILD_TYPE }}-${{ env.NOW }}-${{ github.run_number }} | |
restore-keys: ifpen-el8-gimkl-2018b-${{ github.job }}-${{ env.CM_BUILD_TYPE }}- | |
# Installation | |
- name: Checkout | |
id: checkout | |
if: | | |
(success() || failure()) | |
uses: actions/checkout@v4 | |
with: | |
path: ${{ env.SHARC_SOURCE_DIR }} | |
submodules: true | |
- name: Download Arcane install artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: arcane-install-artifact | |
- name: Untar Arcane install artifact | |
shell: bash | |
run: tar xf arcane-install-artifact.tar.gz -C / | |
- name: Remove Arcane install artifact tar | |
shell: bash | |
run: rm -f arcane-install-artifact.tar.gz | |
- name: Modules information | |
id: sharc_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.SHARC_SOURCE_DIR }} -B ${{ env.SHARC_BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.SHARC_INSTALL_DIR }} ${{ env.CM_CCACHE_OPTS }} -DCMAKE_BUILD_TYPE=${{ env.CM_BUILD_TYPE }} -DBUILD_SHARED_LIBS=ON -DARCANEFRAMEWORK_ROOT=${{ env.ARCANE_INSTALL_DIR }} | |
- name: Build | |
id: build | |
if: | | |
(success() || failure()) && | |
steps.configure.outcome == 'success' | |
shell: bash | |
run: cmake --build ${{ env.SHARC_BUILD_DIR }} ${{ env.CM_BUILD_OPTS }} | |
- name: Clean | |
id: clean | |
if: | | |
(success() || failure()) && | |
steps.build.outcome == 'success' | |
shell: bash | |
run: find ${{ env.SHARC_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.SHARC_BUILD_DIR }} | |
continue-on-error: true | |
- name: Tar build artifact | |
shell: bash | |
run: tar czf sharc-build-artifact.tar.gz ${{ env.SHARC_BUILD_DIR }} | |
- name: Upload build artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: sharc-build-artifact | |
path: sharc-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 }} | |
sharc-test: | |
name: Test Sharc | |
needs: | |
- arcane-install | |
- sharc-install | |
runs-on: ubuntu-latest | |
timeout-minutes: 120 | |
container: | |
image: ghcr.io/arcaneframework/arcane-ifpen-devenv-gimkl-2018b:el8 | |
#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.SHARC_SOURCE_DIR }} | |
submodules: true | |
- name: Download Arcane install artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: arcane-install-artifact | |
- name: Untar Arcane install artifact | |
shell: bash | |
run: tar xf arcane-install-artifact.tar.gz -C / | |
- name: Remove Arcane install artifact tar | |
shell: bash | |
run: rm -f arcane-install-artifact.tar.gz | |
- name: Download Sharc build artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: sharc-build-artifact | |
- name: Untar Sharc build artifact | |
shell: bash | |
run: tar xf sharc-build-artifact.tar.gz -C / | |
- name: Remove Sharc build artifact tar | |
shell: bash | |
run: rm -f sharc-bulid-artifact.tar.gz | |
- name: Test | |
id: test | |
shell: bash | |
run: ctest --test-dir ${{ env.SHARC_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.SHARC_BUILD_DIR }}/Testing | |
${{ env.SHARC_BUILD_DIR }}/test | |
retention-days: 1 |