Update CI for outdated actions, build issues, add macos-14, remove mingw32 [master] #207
Workflow file for this run
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] | |
flags: [ADD_CXXFLAGS=-fvisibility=hidden] | |
download_requirements: [sudo apt install -y -qq gfortran liblapack-dev libmetis-dev libnauty2-dev] | |
include: | |
- os: macos-13 | |
build_static: false | |
flags: CC=clang CXX=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+=( --disable-shared ) | |
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 |