1
0
mirror of https://github.com/TREX-CoE/trexio.git synced 2024-12-22 20:35:44 +01:00
trexio/.github/workflows/actions.yml
2024-11-10 21:46:56 +01:00

200 lines
5.8 KiB
YAML

name: TREXIO CI
on:
push:
branches:
- master
tags:
# After vMajor.Minor.Patch _anything_ is allowed (without "/") !
- v[0-9]+.[0-9]+.[0-9]+*
pull_request:
branches: [ master ]
jobs:
get_commit_message:
name: Get commit message
runs-on: ubuntu-22.04
outputs:
message: ${{ steps.commit_message.outputs.message }}
steps:
- name: Checkout the repo
uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791
# Gets the correct commit message for pull request
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Get commit message
id: commit_message
run: |
set -xe
COMMIT_MSG=$(git log --no-merges -1 --oneline)
echo "message=$COMMIT_MSG" >> $GITHUB_OUTPUT
echo github.ref ${{ github.ref }}
trexio_ubuntu:
name: x86 Ubuntu
runs-on: ubuntu-22.04
needs: get_commit_message
steps:
- uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791
- name: check versions
run: |
grep AC_INIT configure.ac | tr -d '[]' | awk -F, '{ print $2 }' > configure_v
grep -w VERSION CMakeLists.txt | grep -v 'cmake_minimum_required' | awk '{ print $2 }' > cmake_v
grep version python/pytrexio/_version.py | tr -d '"' | awk '{ print $3 }' > python_v
grep version rust/trexio/Cargo.toml | grep -v features | tr -d '"' | awk '{ print $3 }' > rust_v
grep version ocaml/trexio/dune-project | tr -d '()' | awk '{ print $2 }' > ocaml_v
diff configure_v cmake_v
diff configure_v python_v
diff configure_v rust_v
diff configure_v ocaml_v
- name: setup fixed Python version for testing
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f
with:
python-version: '3.10'
- name: install dependencies
run: |
sudo apt-get update
sudo apt-get install libhdf5-dev emacs
- name: configure with autotools
run: |
./autogen.sh
./configure --enable-silent-rules
- name: compile TREXIO
run: make -j2
- name: check TREXIO
run: make -j2 check
- name: Archive test log file
if: failure()
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
with:
name: test-report-ubuntu
path: test-suite.log
- name: create venv
run: |
python3 -m venv trexio-venv
source trexio-venv/bin/activate
- name: install Python API
run: |
source trexio-venv/bin/activate
make python-install
- name: check Python API
run: |
source trexio-venv/bin/activate
make python-test
- name: build and move Python API distribution
run: |
source trexio-venv/bin/activate
make python-sdist
cp python/dist/trexio-*.tar.gz .
- name: publish Python API distribution as an artifact
if: >-
contains(needs.get_commit_message.outputs.message, '[wheel build]') ||
github.event_name == 'release'
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
with:
name: pytrexio-source
path: ./trexio-*.tar.gz
- name: maintainer clean
run: make maintainer-clean
- name: reconfigure with clang and AddressSanitizer
run: |
./autogen.sh
./configure CC=clang-15 CFLAGS="-O2 -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-fsanitize=address" --enable-silent-rules
- name: recompile TREXIO
run: make -j2
- name: recheck TREXIO for memory leaks
run: make -j2 check
- name: Archive test log file
if: failure()
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
with:
name: test-report-ubuntu-memory
path: test-suite.log
- name: maintainer clean
run: make maintainer-clean
trexio_macos:
name: x86 and arm64 MacOS
strategy:
# macos-13 = x86_64 ; macos-14 = aarch64
matrix:
os: [macos-13, macos-14]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791
- name: setup fixed Python version for testing
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f
with:
python-version: '3.12'
- name: install dependencies
run: |
brew install emacs
brew install hdf5@1.14
brew install automake
brew install libtool
# SWIG 4.3.0 with clang failed CI for macos@aarch64 - lol what? => pinnin for now
brew install swig@4.2.1
brew --prefix hdf5
- name: configure with autotools
run: |
./autogen.sh
./configure CC=gcc-12 FC=gfortran-12 --enable-silent-rules
- name: compile TREXIO
run: make -j3
- name: check TREXIO
run: make -j3 check
- name: create venv
run: |
python3 -m venv trexio-venv
source trexio-venv/bin/activate
- name: compile Python API
run: |
export H5_CFLAGS="-I$(brew --prefix hdf5)/include"
export H5_LDFLAGS="-L$(brew --prefix hdf5)/lib"
source trexio-venv/bin/activate
make python-install
- name: test Python API
run: |
source trexio-venv/bin/activate
make python-test
- name: Archive test log file
if: failure()
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
with:
name: test-report-${{ matrix.os }}
path: test-suite.log
- name: clean
run: make clean