GitHub CI: Remove macos-12, add macos-15 #5
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: CI | |
# Trigger the workflow on push or pull request | |
on: [ push, pull_request ] | |
jobs: | |
build-check: | |
name: "Check: code cleanliness" | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check tabs and whitespace | |
shell: bash | |
run: ".github/workflows/check_whitespace.sh" | |
build-ubuntu: | |
strategy: | |
matrix: | |
os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04 ] | |
fail-fast: false | |
name: "Build ${{ matrix.os }}" | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download bsc | |
uses: B-Lang-org/download-bsc@v1 | |
with: | |
os: ${{ matrix.os }} | |
path: ../ | |
- name: Build | |
run: | | |
export PATH=$PWD/../bsc/bin:$PATH | |
make | |
tar czf inst.tar.gz inst | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }} build | |
path: inst.tar.gz | |
build-macOS: | |
strategy: | |
matrix: | |
os: [ macos-13, macos-14, macos-15 ] | |
fail-fast: false | |
name: "Build ${{ matrix.os }}" | |
runs-on: ${{ matrix. os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download bsc | |
uses: B-Lang-org/download-bsc@v1 | |
with: | |
os: ${{ matrix.os }} | |
path: ../ | |
- name: Build | |
run: | | |
export PATH=$PWD/../bsc/bin:$PATH | |
make | |
tar czf inst.tar.gz inst | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }} build | |
path: inst.tar.gz | |
test-ubuntu: | |
strategy: | |
matrix: | |
os: [ ubuntu-20.04, ubuntu-22.04, ubuntu-24.04 ] | |
fail-fast: false | |
name: "Test ${{ matrix.os }}" | |
runs-on: ${{ matrix.os }} | |
needs: build-ubuntu | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
shell: bash | |
run: "sudo .github/workflows/install_dependencies_testsuite_ubuntu.sh" | |
# Can this be cached from the previous job? | |
- name: Download bsc | |
id: download | |
uses: B-Lang-org/download-bsc@v1 | |
with: | |
os: ${{ matrix.os }} | |
path: ../ | |
# Checkout the testsuite at the same version | |
- name: Download testsuite | |
run: | | |
git clone -n https://github.com/B-Lang-org/bsc ../bsc-testsuite | |
cd ../bsc-testsuite | |
git checkout ${{ steps.download.outputs.commit }} | |
- name: Add contrib tests to testsuite | |
run: | | |
cp -r testing/bsc.contrib ../bsc-testsuite/testsuite/ | |
- name: Download bsc-contrib | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ matrix.os }} build | |
- name: Install bsc-contrib | |
run: "tar xzf inst.tar.gz" | |
# Restore previous ccache cache of compiled object files. Use a SHA | |
# in the key so that a new cache file is generated after every | |
# successful build, and have the restore-key use the most recent. | |
- name: CCache cache files | |
uses: actions/cache@v4 | |
with: | |
path: ${{ GITHUB.WORKSPACE }}/ccache | |
key: ${{ matrix.os }}-ccache-${{ github.sha }} | |
restore-keys: | | |
${{ matrix.os }}-ccache- | |
- name: Run testsuite | |
env: | |
CCACHE_DIR: ${{ GITHUB.WORKSPACE }}/ccache | |
run: | | |
# Use ccache to avoid recompiling generated .cxx every run. | |
ccache --zero-stats --max-size 500M | |
export PATH=/usr/lib/ccache:$PATH | |
# Use the LLVM linker as the C++ linker | |
# for a moderate build-time speedup over ld.bfd | |
export LINKER=lld | |
export LDFLAGS="-Wl,-fuse-ld=$LINKER" | |
# Always archive logs, even if make fails (and terminates this script | |
# because it's invoked with :set -eo pipefile) | |
trap ./archive_logs.sh EXIT | |
# Use -O0 for significantly faster C++ compiles (which more | |
# than make up for slower simulations) | |
export CXXFLAGS="-O0" | |
cd ../bsc-testsuite/testsuite | |
export TEST_RELEASE=$PWD/../../bsc | |
export BSCCONTRIBDIR=$PWD/../../bsc-contrib/inst | |
# Insert additional directories as necessary | |
make -C bsc.contrib check | |
# Show ccache stats so we can see what the hit-rate is like. | |
- name: CCache stats | |
env: | |
CCACHE_DIR: ${{ GITHUB.WORKSPACE }}/ccache | |
run: ccache --show-stats | |
# Move the test logs to GITHUB.WORKSPACE | |
# because upload-artifact doesn't support relative paths | |
- name: Move test logs | |
if: failure() | |
run: mv ../bsc-testsuite/testsuite/logs.tar.gz . | |
# Save test logs on failure so we can diagnose | |
- name: Archive test logs | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-logs-${{ matrix.os }} | |
path: logs.tar.gz | |
test-macOS: | |
strategy: | |
matrix: | |
os: [ macos-13, macos-14, macos-15 ] | |
fail-fast: false | |
name: "Test ${{ matrix.os }}" | |
runs-on: ${{ matrix. os }} | |
needs: build-macos | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
shell: bash | |
run: ".github/workflows/install_dependencies_testsuite_macos.sh" | |
# Can this be cached from the previous job? | |
- name: Download bsc | |
id: download | |
uses: B-Lang-org/download-bsc@v1 | |
with: | |
os: ${{ matrix.os }} | |
path: ../ | |
# Checkout the testsuite at the same version | |
- name: Download testsuite | |
run: | | |
git clone -n https://github.com/B-Lang-org/bsc ../bsc-testsuite | |
cd ../bsc-testsuite | |
git checkout ${{ steps.download.outputs.commit }} | |
- name: Add contrib tests to testsuite | |
run: | | |
cp -r testing/bsc.contrib ../bsc-testsuite/testsuite/ | |
- name: Download bsc-contrib | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ matrix.os }} build | |
- name: Install bsc-contrib | |
run: "tar xzf inst.tar.gz" | |
# Restore previous ccache cache of compiled object files. Use a SHA | |
# in the key so that a new cache file is generated after every | |
# successful build, and have the restore-key use the most recent. | |
- name: CCache cache files | |
uses: actions/cache@v4 | |
with: | |
path: ${{ GITHUB.WORKSPACE }}/ccache | |
key: ${{ matrix.os }}-ccache-${{ github.sha }} | |
restore-keys: | | |
${{ matrix.os }}-ccache- | |
- name: Run testsuite | |
env: | |
CCACHE_DIR: ${{ GITHUB.WORKSPACE }}/ccache | |
run: | | |
# Use ccache to avoid recompiling generated .cxx every run. | |
ccache --zero-stats --max-size 500M | |
export PATH=$(brew --prefix)/opt/local/ccache/libexec:$PATH | |
# Always archive logs, even if make fails (and terminates this script | |
# because it's invoked with :set -eo pipefile) | |
trap ./archive_logs.sh EXIT | |
# Use -O0 for significantly faster C++ compiles (which more | |
# than make up for slower simulations) | |
export CXXFLAGS="-O0" | |
cd ../bsc-testsuite/testsuite | |
export TEST_RELEASE=$PWD/../../bsc | |
export BSCCONTRIBDIR=$PWD/../../bsc-contrib/inst | |
# Insert additional directories as necessary | |
make -C bsc.contrib check | |
# Show ccache stats so we can see what the hit-rate is like. | |
- name: CCache stats | |
env: | |
CCACHE_DIR: ${{ GITHUB.WORKSPACE }}/ccache | |
run: ccache --show-stats | |
# Move the test logs to GITHUB.WORKSPACE | |
# because upload-artifact doesn't support relative paths | |
- name: Move test logs | |
if: failure() | |
run: mv ../bsc-testsuite/testsuite/logs.tar.gz . | |
# Save test logs on failure so we can diagnose | |
- name: Archive test logs | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-logs-${{ matrix.os }} | |
path: logs.tar.gz |