Skip to content

use images from docker_base_images repository #219

use images from docker_base_images repository

use images from docker_base_images repository #219

name: ShivaCI
on:
push:
branches: [ "main" ]
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
get_docker_image_tag_hash:
runs-on: ubuntu-22.04
outputs:
GITHUB_OUTPUT: ${{ steps.extract_docker_image_tag_hash.outputs.GITHUB_OUTPUT }}
steps:
- name: Checkout .devcontainer/devcontainer.json
uses: actions/[email protected]
with:
sparse-checkout: |
.devcontainer/devcontainer.json
sparse-checkout-cone-mode: false
submodules: false
lfs: false
fetch-depth: 1
- name: Extract docker image tag hash
id: extract_docker_image_tag_hash
run: |
echo "DOCKER_IMAGE_TAG_HASH=$(jq '.build.args.docker_image_tag_hash' -r .devcontainer/devcontainer.json)" >> "$GITHUB_OUTPUT"
# code_style:
# needs: [check_pull_request_is_not_a_draft]
# runs-on: ubuntu-22.04
# steps:
# - name: Checkout Repository
# uses: actions/[email protected]
# with:
# submodules: true
# lfs: false
# - name: Check style
# env:
# DOCKER_REPOSITORY: geosx/ubuntu20.04-gcc9
# CMAKE_BUILD_TYPE: Release
# BUILD_AND_TEST_ARGS: --test-code-style
# run: ./scripts/ci_build_and_test.sh
doxygen_check:
runs-on: ubuntu-22.04
needs:
- get_docker_image_tag_hash
steps:
- name: Checkout Repository
uses: actions/[email protected]
with:
submodules: true
lfs: false
- name: Check doxygen
env:
DOCKER_REPOSITORY: geosx/ubuntu:22.04-${{ needs.extract_docker_image_tag_hash.outputs.DOCKER_IMAGE_TAG_HASH }}
HOST_CONFIG: hostconfigs/environment.cmake
CMAKE_CXX_COMPILER: /usr/bin/clang++
CMAKE_C_COMPILER: /usr/bin/clang
CMAKE_BUILD_TYPE: Release
BUILD_AND_TEST_ARGS: --test-doxygen
run: ./scripts/ci_build_and_test.sh
code_checks:
runs-on: ubuntu-22.04
needs:
- get_docker_image_tag_hash
steps:
- name: Checkout Repository
uses: actions/[email protected]
with:
submodules: true
lfs: false
- name: code_checks
env:
DOCKER_REPOSITORY: geosx/ubuntu:22.04-${{ needs.extract_docker_image_tag_hash.outputs.DOCKER_IMAGE_TAG_HASH }}
HOST_CONFIG: hostconfigs/environment.cmake
CMAKE_CXX_COMPILER: /usr/bin/clang++
CMAKE_C_COMPILER: /usr/bin/clang
CMAKE_BUILD_TYPE: Release
BUILD_AND_TEST_ARGS: --code-checks
run: ./scripts/ci_build_and_test.sh
linux_builds:
name: ${{matrix.name}}
runs-on: ${{matrix.RUNS_ON}}
needs:
- get_docker_image_tag_hash
strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable.
fail-fast: false
matrix:
include:
- name: RHEL8.9-clang17-dbg (ubi8.9, clang-17.0.6, Debug)
DOCKER_REPOSITORY: geosx/ubi:8.9
RUNS_ON: ubuntu-22.04
CMAKE_CXX_COMPILER: clang++
CMAKE_C_COMPILER: clang
CMAKE_BUILD_TYPE: Debug
- name: RHEL8.9-clang17-rel (ubi8.9, clang-17.0.6, Release)
DOCKER_REPOSITORY: geosx/ubi:8.9
RUNS_ON: ubuntu-22.04
CMAKE_CXX_COMPILER: clang++
CMAKE_C_COMPILER: clang
CMAKE_BUILD_TYPE: Release
- name: RHEL8.9-gcc13-dbg (ubi8.9, gcc 13.2.1, Debug)
DOCKER_REPOSITORY: geosx/ubi:8.9
RUNS_ON: ubuntu-22.04
CMAKE_CXX_COMPILER: /opt/rh/gcc-toolset-13/root/bin/g++
CMAKE_C_COMPILER: /opt/rh/gcc-toolset-13/root/bin/gcc
CMAKE_BUILD_TYPE: Debug
- name: RHEL8.9-gcc13-rel (ubi8.9, gcc 13.2.1, Release)
DOCKER_REPOSITORY: geosx/ubi:8.9
RUNS_ON: ubuntu-22.04
CMAKE_CXX_COMPILER: /opt/rh/gcc-toolset-13/root/bin/g++
CMAKE_C_COMPILER: /opt/rh/gcc-toolset-13/root/bin/gcc
CMAKE_BUILD_TYPE: Release
- name: ubuntu22-gcc11-rel (ubuntu-22, gcc 11.4.0, Release)
DOCKER_REPOSITORY: geosx/ubuntu:22.04
RUNS_ON: ubuntu-22.04
CMAKE_CXX_COMPILER: /usr/bin/g++
CMAKE_C_COMPILER: /usr/bin/gcc
CMAKE_BUILD_TYPE: Release
- name: ubuntu22-clang14-rel (ubuntu-22, clang-14.0.0, Release)
DOCKER_REPOSITORY: geosx/ubuntu:22.04
RUNS_ON: ubuntu-22.04
CMAKE_CXX_COMPILER: /usr/bin/clang++
CMAKE_C_COMPILER: /usr/bin/clang
CMAKE_BUILD_TYPE: Release
- name: ubuntu22-clang14-dbg (ubuntu-22, clang-14.0.0, Debug)
DOCKER_REPOSITORY: geosx/ubuntu:22.04
RUNS_ON: ubuntu-22.04
CMAKE_CXX_COMPILER: /usr/bin/clang++
CMAKE_C_COMPILER: /usr/bin/clang
CMAKE_BUILD_TYPE: Debug
- name: ubuntu22-gcc11-dbg (ubuntu-22, gcc 11.4.0, Release)
DOCKER_REPOSITORY: geosx/ubuntu:22.04
RUNS_ON: ubuntu-22.04
CMAKE_CXX_COMPILER: /usr/bin/g++
CMAKE_C_COMPILER: /usr/bin/gcc
CMAKE_BUILD_TYPE: Debug
- name: ubuntu22-gcc11-cuda11-rel (ubuntu-22, gcc 11.4.0, cuda-11.8.0, Release)
DOCKER_REPOSITORY: geosx/ubuntu:22.04-cuda11.8
RUNS_ON: streak2
CMAKE_CXX_COMPILER: /usr/bin/g++
CMAKE_C_COMPILER: /usr/bin/gcc
CMAKE_BUILD_TYPE: Release
ENABLE_CUDA: ON
CMAKE_CUDA_ARCHITECTURES: "86"
NPROC: 4
DOCKER_RUN_ARGS: "--cpus=4 --memory=64g --runtime=nvidia --gpus all"
- name: ubuntu22-gcc11-cuda11-dbg (ubuntu-22, gcc 11.4.0, cuda-11.8.0, Debug)
DOCKER_REPOSITORY: geosx/ubuntu:22.04-cuda11.8
RUNS_ON: streak2
CMAKE_CXX_COMPILER: /usr/bin/g++
CMAKE_C_COMPILER: /usr/bin/gcc
CMAKE_BUILD_TYPE: Debug
ENABLE_CUDA: ON
CMAKE_CUDA_ARCHITECTURES: "86"
NPROC: 4
DOCKER_RUN_ARGS: "--cpus=4 --memory=64g --runtime=nvidia --gpus all"
- name: ubuntu22-clang14-cuda11-rel (ubuntu-22, clang-14.0.0, cuda-11.8.0, Release)
DOCKER_REPOSITORY: geosx/ubuntu:22.04-cuda11.8
RUNS_ON: streak2
CMAKE_CXX_COMPILER: /usr/bin/clang++
CMAKE_C_COMPILER: /usr/bin/clang
CMAKE_BUILD_TYPE: Release
ENABLE_CUDA: ON
CMAKE_CUDA_ARCHITECTURES: "86"
NPROC: 4
DOCKER_RUN_ARGS: "--cpus=4 --memory=64g --runtime=nvidia --gpus all"
- name: ubuntu22-clang14-cuda11-dbg (ubuntu-22, clang-14.0.0, cuda-11.8.0, Debug)
DOCKER_REPOSITORY: geosx/ubuntu:22.04-cuda11.8
RUNS_ON: streak2
CMAKE_CXX_COMPILER: /usr/bin/clang++
CMAKE_C_COMPILER: /usr/bin/clang
CMAKE_BUILD_TYPE: Debug
ENABLE_CUDA: ON
CMAKE_CUDA_ARCHITECTURES: "86"
NPROC: 4
DOCKER_RUN_ARGS: "--cpus=4 --memory=64g --runtime=nvidia --gpus all"
- name: RHEL8.9-clang17-cuda12-rel (ubi8.9, clang-17.0.6, cuda-12.4.1, Release)
DOCKER_REPOSITORY: geosx/ubi:8.9-cuda12.4
RUNS_ON: streak2
CMAKE_CXX_COMPILER: clang++
CMAKE_C_COMPILER: clang
CMAKE_BUILD_TYPE: Release
ENABLE_CUDA: ON
CMAKE_CUDA_ARCHITECTURES: "86"
NPROC: 4
DOCKER_RUN_ARGS: "--cpus=4 --memory=64g --runtime=nvidia --gpus all"
- name: RHEL8.9-gcc13-cuda12-rel (ubi8.8, gcc 13.2.1, cuda-12.4.1, Release)
DOCKER_REPOSITORY: geosx/ubi:8.9-cuda12.4
RUNS_ON: streak2
CMAKE_CXX_COMPILER: /opt/rh/gcc-toolset-13/root/bin/g++
CMAKE_C_COMPILER: /opt/rh/gcc-toolset-13/root/bin/gcc
CMAKE_BUILD_TYPE: Release
ENABLE_CUDA: ON
CMAKE_CUDA_ARCHITECTURES: "86"
NPROC: 4
DOCKER_RUN_ARGS: "--cpus=4 --memory=64g --runtime=nvidia --gpus all"
steps:
- name: Checkout Repository
uses: actions/[email protected]
with:
submodules: true
lfs: false
- name: Print environment
run: printenv
- name: Build and test
env:
DOCKER_REPOSITORY: ${{ matrix.DOCKER_REPOSITORY }}-${{ needs.extract_docker_image_tag_hash.outputs.DOCKER_IMAGE_TAG_HASH }}
CMAKE_CXX_COMPILER: ${{ matrix.CMAKE_CXX_COMPILER }}
CMAKE_C_COMPILER: ${{ matrix.CMAKE_C_COMPILER }}
CMAKE_BUILD_TYPE: ${{ matrix.CMAKE_BUILD_TYPE }}
ENABLE_CUDA: ${{ matrix.ENABLE_CUDA }}
CMAKE_CUDA_ARCHITECTURES: ${{ matrix.CMAKE_CUDA_ARCHITECTURES }}
NPROC: ${{ matrix.NPROC }}
BUILD_AND_TEST_ARGS: ${{ matrix.BUILD_AND_TEST_ARGS }} --build-exe
DOCKER_RUN_ARGS: ${{ matrix.DOCKER_RUN_ARGS }}
HOST_CONFIG: hostconfigs/environment.cmake
run: ./scripts/ci_build_and_test.sh
code_coverage:
runs-on: ubuntu-22.04
needs:
- get_docker_image_tag_hash
steps:
- name: Checkout Repository
uses: actions/[email protected]
with:
submodules: true
lfs: false
- name: run code coverage
env:
DOCKER_REPOSITORY: geosx/ubuntu:22.04-${{ needs.extract_docker_image_tag_hash.outputs.DOCKER_IMAGE_TAG_HASH }}
HOST_CONFIG: hostconfigs/environment.cmake
CMAKE_CXX_COMPILER: /usr/bin/g++
CMAKE_C_COMPILER: /usr/bin/gcc
CMAKE_BUILD_TYPE: Debug
BUILD_AND_TEST_ARGS: "--build-exe --code-coverage"
run: ./scripts/ci_build_and_test.sh
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
with:
files: shiva_coverage.info.cleaned
fail_ci_if_error: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
check_that_all_jobs_succeeded:
runs-on: ubuntu-22.04
needs:
- get_docker_image_tag_hash
- linux_builds
- doxygen_check
- code_checks
if: ${{ always() }}
env:
RETURN_VAL: |
${{
needs.linux_builds.result == 'success' &&
needs.doxygen_check.result == 'success' &&
needs.code_checks.result == 'success'
}}
steps:
- name: PR Success
if: ${{ contains(env.RETURN_VAL, 'true') }}
run: "true"
- name: PR Failure
if: ${{ contains(env.RETURN_VAL, 'false') }}
run: "false"