diff --git a/.github/workflows/ci-github-actions.yaml b/.github/workflows/ci-github-actions.yaml new file mode 100644 index 00000000..cb37adb2 --- /dev/null +++ b/.github/workflows/ci-github-actions.yaml @@ -0,0 +1,83 @@ +name: GitHub Actions CI + +on: + push: + branches: + - develop + - feature-gh-actions + pull_request: + branches: + - develop + +jobs: + + linux: + runs-on: ubuntu-latest + container: ${{ matrix.container }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_JOBNAME: ${{ matrix.jobname }} + GH_OS: Linux + strategy: + fail-fast: false + matrix: + jobname: [ + ubuntu22-gcc, + ubuntu22-clang, + ] + include: + - jobname: ubuntu22-gcc + container: + image: ghcr.io/philipfackler/xolotl-ci:ubuntu22-dev + options: -u root + - jobname: ubuntu22-clang + container: + image: ghcr.io/philipfackler/xolotl-ci:ubuntu22-dev + options: -u root + + steps: + - name: Checkout Action + uses: actions/checkout@v1 + + - name: Configure + run: CI/scripts/run_step.sh configure + + - name: Build + run: CI/scripts/run_step.sh build + + - name: Test + run: CI/scripts/run_step.sh test + + + macos: + runs-on: macos-latest + env: + GH_YML_JOBNAME: ${{ matrix.jobname }} + GH_YML_OS: macOS + + strategy: + fail-fast: false + matrix: + jobname: [ + macos1015-xcode11 + ] + + steps: + - name: Checkout Action + uses: actions/checkout@v1 + + - name: Setup Dependencies + run: | + brew install boost open-mpi hdf5-mpi make python@3.10 + echo "PATH=/opt/homebrew/opt/python@3.10/libexec/bin:$PATH" >> $GITHUB_ENV + + - name: Configure + run: CI/scripts/run_step.sh configure + env: + PATH: ${{ env.PATH }} + + - name: Build + run: CI/scripts/run_step.sh build + + - name: Test + run: CI/scripts/run_step.sh test diff --git a/CI/docker/ubuntu22/Dockerfile b/CI/docker/ubuntu22/Dockerfile new file mode 100644 index 00000000..5f77080d --- /dev/null +++ b/CI/docker/ubuntu22/Dockerfile @@ -0,0 +1,34 @@ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND noninteractive + +# Install dependencies +RUN apt-get update -y +RUN apt-get upgrade -y +RUN apt-get install -y \ + python3 \ + clang \ + clang-tidy \ + g++ \ + git \ + gdb \ + make \ + cmake \ + cmake-curses-gui \ + mpi-default-dev \ + libblas-dev \ + liblapack-dev \ + libhdf5-mpi-dev \ + libboost-filesystem-dev \ + libboost-program-options-dev \ + libboost-test-dev \ + libboost-log-dev \ + bzip2 \ + sudo + +RUN useradd -mr -u 10000 builduser +RUN adduser builduser sudo +RUN echo "builduser:builduser" | chpasswd + +USER builduser +WORKDIR /home/builduser diff --git a/CI/scripts/run_step.sh b/CI/scripts/run_step.sh new file mode 100755 index 00000000..25c6c81c --- /dev/null +++ b/CI/scripts/run_step.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +echo -e "\nCheck gcc and clang compilers\n" +gcc --version +clang --version + +case "$1" in + + configure) + + git config --global --add safe.directory ${GITHUB_WORKSPACE} + + case "${GH_JOBNAME}" in + *"clang"*) + export CC=clang + export CXX=clang++ + export OMPI_CC=clang + export OMPI_CXX=clang++ + ;; + *) + ;; + esac + + cd ${GITHUB_WORKSPACE}/.. + + git clone https://gitlab.com/petsc/petsc.git -b v3.21.6 petsc + cd petsc + bash ${GITHUB_WORKSPACE}/../xolotl/scripts/build_petsc.sh \ + --prefix=${GITHUB_WORKSPACE}/../install \ + --skip-pull + + cd ${GITHUB_WORKSPACE}/.. + mkdir build + cd build + + cmake -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/../install ${GITHUB_WORKSPACE} + + ;; + + build) + cd ${GITHUB_WORKSPACE}/../build + make -j4 + ;; + + test) + cd ${GITHUB_WORKSPACE}/../build + ctest -VV --label-exclude xolotl.tests.system + ./test/system/SystemTester -- -t + ;; + + *) + echo " Invalid step" "$1" + exit -1 + ;; +esac diff --git a/xolotl/util/include/xolotl/util/StepSequence.h b/xolotl/util/include/xolotl/util/StepSequence.h index 0427bf99..8f3af907 100644 --- a/xolotl/util/include/xolotl/util/StepSequence.h +++ b/xolotl/util/include/xolotl/util/StepSequence.h @@ -1,5 +1,7 @@ #pragma once +#include + #include namespace xolotl