Skip to content

Add CI

Add CI #1

Workflow file for this run

name: CI Tests
on:
pull_request:
types: [opened, synchronize, reopened]
# Do not run if the only files changed cannot affect the build
paths-ignore:
- "**.md"
- "**.MD"
- "LICENCE"
- "COPYRIGHT"
jobs:
#GNU:
#runs-on: ${{ matrix.os }}
#strategy:
#matrix:
#os: [ubuntu-22.04, ubuntu-24.04, macos-13, macos-14]
#compiler: [gfortran-11, gfortran-12, gfortran-13]
## gfortran-10 is only on ubuntu-22.04
## gfortran-14 is available on ubuntu-24.04
#include:
#- os: ubuntu-22.04
#compiler: gfortran-10
#- os: ubuntu-24.04
#compiler: gfortran-14
#exclude:
#- os: ubuntu-24.04
#compiler: gfortran-11
#- os: ubuntu-22.04
#compiler: gfortran-13
## fail-fast if set to 'true' here is good for production, but when
## debugging, set to 'false'. fail-fast means if *any* ci test in the matrix fails
## GitHub Actions will stop any other test immediately. So good for production, bad
## when trying to figure something out. For more info see:
## https://www.edwardthomson.com/blog/github_actions_6_fail_fast_matrix_workflows.html
#fail-fast: false
#env:
#FC: ${{ matrix.compiler }}
#LANGUAGE: en_US.UTF-8
#LC_ALL: en_US.UTF-8
#LANG: en_US.UTF-8
#LC_TYPE: en_US.UTF-8
#OMPI_ALLOW_RUN_AS_ROOT: 1
#OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1
#OMPI_MCA_btl_vader_single_copy_mechanism: none
#name: ${{ matrix.os }} / ${{ matrix.compiler }}
#steps:
#- name: Compiler Versions
#run: |
#${FC} --version
#cmake --version
#- name: Checkout
#uses: actions/checkout@v4
#with:
#fetch-depth: 1
#submodules: true
#- name: Set all directories as git safe
#run: |
#git config --global --add safe.directory '*'
#- name: Cache MPI
#id: cache-mpi
#uses: actions/cache@v4
#with:
#path: ~/local/openmpi
#key: mpi-${{ runner.os }}-${{ matrix.os }}-${{ matrix.compiler }}
#- name: Build MPI
#if: steps.cache-mpi.outputs.cache-hit != 'true'
#run: |
#sh ${GITHUB_WORKSPACE}/tools/ci-install-mpi.sh openmpi 5.0.2
#- name: Set MPI Environment
#run: |
#echo "${HOME}/local/openmpi/bin" >> $GITHUB_PATH
#echo "LD_LIBRARY_PATH=${HOME}/local/openmpi/lib" >> $GITHUB_ENV
#echo "DYLD_LIBRARY_PATH=${HOME}/local/openmpi/lib" >> $GITHUB_ENV
#- name: MPI Versions
#run: |
#${FC} --version
#mpirun --version
#mpifort --show
#- name: Build pFUnit
#run: |
#bash ./tools/ci-install-pfunit.bash
#- name: Build and Install Demos
#run: |
#cmake -B build -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_PREFIX_PATH=../install
#cmake --build build --parallel 4 --target install
#cmake -B build -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_PREFIX_PATH=../install
#cmake --build build --parallel 4 --target install
#- name: Build and Run Tests target
#run: |
#cmake --build build --parallel 4 --target build-tests
#cmake --build build --parallel 4 --target tests
#- name: Run Ctest
#run: ctest --test-dir build --parallel 1 --output-on-failure --repeat until-pass:4
#- name: Archive log files on failure
#uses: actions/upload-artifact@v4
#if: failure()
#with:
#name: logfiles
#path: |
#build/**/*.log
Intel:
runs-on: ubuntu-latest
env:
FC: ifx
CC: icx
name: Intel Fortran
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
submodules: true
- name: Set all directories as git safe
run: |
git config --global --add safe.directory '*'
- name: Setup Intel oneAPI repository
run: |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
sudo apt-get update
- name: Install Intel oneAPI compilers
timeout-minutes: 5
run: sudo apt-get install intel-oneapi-compiler-fortran intel-oneapi-compiler-dpcpp-cpp
# optional
- name: Install Intel MPI
timeout-minutes: 5
run: sudo apt-get install intel-oneapi-mpi intel-oneapi-mpi-devel
- name: Setup Intel oneAPI environment
run: |
source /opt/intel/oneapi/setvars.sh
printenv >> $GITHUB_ENV
printenv | grep intel
- name: Versions
run: |
${FC} --version
${CC} --version
mpirun --version
cmake --version
- name: Build pFUnit
run: |
bash ./tools/ci-install-pfunit.bash
- name: Add PFUNIT_DIR to environment
run: |
echo "PFUNIT_DIR=${HOME}/Software/GFE" >> $GITHUB_ENV
- name: Run Basic Demo (GNU Make)
run: |
cd Basic
./build_with_make_and_run.x
- name: Run Basic Demo (CMake)
run: |
cd Basic
./build_with_cmake_and_run.x
- name: Archive log files on failure
uses: actions/upload-artifact@v4
if: failure()
with:
name: logfiles
path: |
build/**/*.log
#Nvidia:
#runs-on: ubuntu-20.04
#container: nvcr.io/nvidia/nvhpc:24.5-devel-cuda12.4-ubuntu22.04
#env:
#FC: nvfortran
#name: Nvidia HPC
#steps:
#- name: Versions
#run: |
#${FC} --version
#cmake --version
#- name: Checkout
#uses: actions/checkout@v4
#with:
#fetch-depth: 1
#submodules: true
#- name: Set all directories as git safe
#run: |
#git config --global --add safe.directory '*'
#- name: Add python-is-python3 package
#run: |
#apt-get update
#apt-get install -y python-is-python3
#- name: Build pFUnit
#run: |
#bash ./tools/ci-install-pfunit.bash
#- name: Build and Install Demos
#run: |
#cmake -B build -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_PREFIX_PATH=../install
#cmake --build build --parallel 4 --target install
#cmake -B build -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_PREFIX_PATH=../install
#cmake --build build --parallel 4 --target install
#- name: Build and Run Tests target
#run: |
#cmake --build build --parallel 4 --target build-tests
#cmake --build build --parallel 4 --target tests
#- name: Run Ctest
#run: ctest --test-dir build --parallel 1 --output-on-failure --repeat until-pass:4
#- name: Archive log files on failure
#uses: actions/upload-artifact@v4
#if: failure()
#with:
#name: logfiles
#path: |
#build/**/*.log