Add CMake CI #10
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Linux build and test | |
on: | |
push: | |
branches: | |
- 'master' | |
- 'stable/*' | |
pull_request: | |
branches: | |
- '**' | |
release: | |
types: | |
- created | |
jobs: | |
test: | |
name: Run tests | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, ubuntu-22.04] | |
build_static: [true, false] | |
download_requirements: [sudo apt install -y -qq gfortran liblapack-dev libmetis-dev libnauty2-dev] | |
include: | |
- os: macos-13 | |
build_static: false | |
flags: CC=clang OSX=13 | |
download_requirements: brew install metis bash | |
- os: macos-13 | |
build_static: false | |
flags: CC=gcc-13 CXX=g++-13 OSX=13 ADD_CXXFLAGS=-Wl,-ld_classic | |
download_requirements: brew install metis bash | |
- os: macos-14 | |
arch: arm64 | |
build_static: false | |
flags: CC=gcc-13 CXX=g++-13 OSX=14 ADD_CXXFLAGS=-Wl,-ld_classic | |
download_requirements: brew install metis bash | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v4 | |
with: | |
path: ${{ github.event.repository.name }} | |
- name: Install required packages from package manager | |
run: ${{ matrix.download_requirements }} | |
- name: Checkout coinbrew | |
uses: actions/checkout@v4 | |
with: | |
repository: coin-or/coinbrew | |
path: coinbrew | |
- name: Build project | |
run: | | |
export ${{ matrix.flags }} | |
ADD_ARGS=() | |
ADD_ARGS+=( --skip='ThirdParty/Metis ThirdParty/Mumps ThirdParty/Blas ThirdParty/Lapack' ) | |
ADD_BUILD_ARGS=() | |
ADD_BUILD_ARGS+=( --tests main --enable-relocatable ) | |
ADD_BUILD_ARGS+=( --verbosity 2 ) | |
[[ ${{ matrix.build_static }} == "true" ]] && \ | |
ADD_BUILD_ARGS+=( --static --with-lapack='-llapack -lblas -lgfortran -lquadmath -lm' ) | |
bash coinbrew/coinbrew fetch ${{ github.event.repository.name }} --skip-update \ | |
"${ADD_ARGS[@]}" | |
bash coinbrew/coinbrew build ${{ github.event.repository.name }} \ | |
"${ADD_ARGS[@]}" "${ADD_BUILD_ARGS[@]}" \ | |
ADD_CXXFLAGS="${ADD_CXXFLAGS}" CC=${CC} CXX=${CXX} | |
[[ ${CC} ]] && CC="${CC}" || CC="" | |
echo "CC=${CC}" >> $GITHUB_ENV | |
- name: Archive dist contents | |
run: | | |
cp ${{ github.event.repository.name }}/README.md dist/ | |
cp ${{ github.event.repository.name }}/LICENSE dist/ | |
tar -czvf release.tar.gz -C dist . | |
- name: Checkout package name generation script | |
uses: actions/checkout@v4 | |
with: | |
repository: coin-or-tools/platform-analysis-tools | |
path: tools | |
ref: 0.0.2 | |
- name: Retrieve platform info | |
run: | | |
python3 -m venv venv | |
source venv/bin/activate | |
pip install -r tools/requirements.txt | |
[[ ${{ matrix.build_static }} == "true" ]] && buildtype=static || buildtype= | |
platform_str=`python3 tools/hsf_get_platform.py -b $buildtype` | |
echo "platform_string=${platform_str}" >> $GITHUB_ENV | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ github.event.repository.name }}-${{ env.platform_string }}.tar.gz | |
path: release.tar.gz | |
if-no-files-found: error | |
- name: Upload package to release | |
if: ${{ github.event_name == 'release'}} | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ github.event.release.upload_url }} | |
asset_path: ./release.tar.gz | |
asset_name: ${{ github.event.repository.name }}-${{ github.event.release.tag_name }}-${{ env.platform_string }}.tar.gz | |
asset_content_type: application/gzip |