Skip to content

Commit

Permalink
CI : add workflows for Ubuntu 22.04
Browse files Browse the repository at this point in the history
  • Loading branch information
gazoppce committed Nov 22, 2024
1 parent a3af945 commit 1599a3f
Show file tree
Hide file tree
Showing 4 changed files with 1,324 additions and 0 deletions.
331 changes: 331 additions & 0 deletions .github/workflows/ifpen_ubu2204_foss-2018b.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,331 @@
name: IFPEN ubu2204 foss/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-foss-2018b:ubu2204
#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-ubu2204-foss-2018b-${{ github.job }}-${{ env.CM_BUILD_TYPE }}-${{ env.NOW }}-${{ github.run_number }}
restore-keys: ifpen-ubu2204-foss-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-foss-2018b:ubu2204
#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-ubu2204-foss-2018b-${{ github.job }}-${{ env.CM_BUILD_TYPE }}-${{ env.NOW }}-${{ github.run_number }}
restore-keys: ifpen-ubu2204-foss-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-foss-2018b:ubu2204
#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
Loading

0 comments on commit 1599a3f

Please sign in to comment.