Skip to content

CI IFPEN : add workflows for Ubuntu 22.04 #36

CI IFPEN : add workflows for Ubuntu 22.04

CI IFPEN : add workflows for Ubuntu 22.04 #36

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