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

201 lines
5.9 KiB
YAML
Raw Normal View History

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 ]
2022-01-07 11:03:00 +01:00
jobs:
2022-01-07 11:03:00 +01:00
get_commit_message:
name: Get commit message
runs-on: ubuntu-22.04
2022-01-07 11:03:00 +01:00
outputs:
message: ${{ steps.commit_message.outputs.message }}
steps:
- name: Checkout the repo
2023-04-03 21:40:59 +02:00
uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791
2022-01-07 11:03:00 +01:00
# 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 }}
2022-01-07 11:03:00 +01:00
trexio_ubuntu:
2024-08-18 09:18:48 +02:00
name: x86 Ubuntu
runs-on: ubuntu-22.04
needs: get_commit_message
steps:
2023-04-03 21:40:59 +02:00
- uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791
2022-01-07 11:03:00 +01:00
2023-10-27 13:07:48 +02:00
- 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
2024-11-10 21:34:27 +01:00
- name: setup fixed Python version for testing
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f
with:
python-version: '3.10'
2022-01-07 11:03:00 +01:00
- name: install dependencies
run: |
sudo apt-get update
sudo apt-get install libhdf5-dev emacs
2022-01-07 11:03:00 +01:00
- name: configure with autotools
run: |
./autogen.sh
./configure --enable-silent-rules
2022-01-07 11:03:00 +01:00
- name: compile TREXIO
2022-07-08 11:26:17 +02:00
run: make -j2
2022-01-07 11:03:00 +01:00
- name: check TREXIO
2022-07-08 11:26:17 +02:00
run: make -j2 check
2023-01-04 13:25:06 +01:00
- name: Archive test log file
if: failure()
2024-08-18 10:04:37 +02:00
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
2023-01-04 13:25:06 +01:00
with:
2023-01-04 13:38:17 +01:00
name: test-report-ubuntu
2023-01-04 13:25:06 +01:00
path: test-suite.log
- name: create venv
2022-01-07 11:03:00 +01:00
run: |
python3 -m venv trexio-venv
source trexio-venv/bin/activate
2022-01-07 11:03:00 +01:00
- 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 .
2022-01-07 11:03:00 +01:00
- name: publish Python API distribution as an artifact
if: >-
contains(needs.get_commit_message.outputs.message, '[wheel build]') ||
github.event_name == 'release'
2024-08-18 10:04:37 +02:00
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
2022-01-07 11:03:00 +01:00
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()
2024-08-18 10:04:37 +02:00
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
with:
2024-08-18 10:04:37 +02:00
name: test-report-ubuntu-memory
path: test-suite.log
- name: maintainer clean
run: make maintainer-clean
trexio_macos:
2024-08-18 09:18:48 +02:00
name: x86 and arm64 MacOS
strategy:
# macos-13 = x86_64 ; macos-14 = aarch64
matrix:
os: [macos-13, macos-14]
runs-on: ${{ matrix.os }}
steps:
2023-04-03 21:40:59 +02:00
- uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791
2022-01-07 11:03:00 +01:00
2024-11-10 21:34:27 +01:00
- name: setup fixed Python version for testing
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f
with:
python-version: '3.12'
- name: install dependencies
run: |
brew install emacs
2024-08-18 09:18:48 +02:00
brew install hdf5@1.14
brew install automake
brew install libtool
2024-11-10 21:57:54 +01:00
# SWIG 4.3.0 from homebrew with clang failed CI for macos@aarch64 - lol what?
pip install swig==4.2.1.post0
swig -version
- name: configure with autotools
run: |
2024-11-10 21:57:54 +01:00
brew --prefix hdf5
./autogen.sh
2024-08-18 09:18:48 +02:00
./configure CC=gcc-12 FC=gfortran-12 --enable-silent-rules
2022-01-07 11:03:00 +01:00
- name: compile TREXIO
2023-04-03 22:53:02 +02:00
run: make -j3
2022-01-07 11:03:00 +01:00
- name: check TREXIO
2023-04-03 22:53:02 +02:00
run: make -j3 check
2023-05-05 16:21:09 +02:00
- name: create venv
run: |
python3 -m venv trexio-venv
source trexio-venv/bin/activate
2023-05-05 16:21:09 +02:00
- 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
2023-05-05 16:21:09 +02:00
make python-install
- name: test Python API
run: |
source trexio-venv/bin/activate
make python-test
2022-01-07 11:03:00 +01:00
2023-01-04 13:25:06 +01:00
- name: Archive test log file
if: failure()
2024-08-18 10:04:37 +02:00
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
2023-01-04 13:25:06 +01:00
with:
2024-08-18 09:18:48 +02:00
name: test-report-${{ matrix.os }}
2023-01-04 13:25:06 +01:00
path: test-suite.log
- name: clean
run: make clean