forked from bitcoin/bitcoin
-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9e12b35
commit ccdf0cc
Showing
1 changed file
with
100 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
# Copyright (c) 2023 The Bitcoin Core developers | ||
# Distributed under the MIT software license, see the accompanying | ||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||
|
||
name: macos-matrix | ||
on: | ||
# See: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request. | ||
pull_request: | ||
# See: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#push. | ||
push: | ||
branches: | ||
- '**' | ||
tags-ignore: | ||
- '**' | ||
|
||
concurrency: | ||
group: ${{ github.event_name != 'pull_request' && github.run_id || github.ref }} | ||
cancel-in-progress: true | ||
|
||
env: | ||
DANGER_RUN_CI_ON_HOST: 1 | ||
CI_FAILFAST_TEST_LEAVE_DANGLING: 1 # GHA does not care about dangling processes and setting this variable avoids killing the CI script itself on error | ||
MAKEJOBS: '-j10' | ||
|
||
jobs: | ||
test-each-commit: | ||
name: 'test each commit' | ||
runs-on: [ macos-11, macos-12, macos-12-large, macos-13-large, macos-13-xlarge ] | ||
if: github.event_name == 'pull_request' && github.event.pull_request.commits != 1 | ||
timeout-minutes: 360 # Use maximum time, see https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes. Assuming a worst case time of 1 hour per commit, this leads to a --max-count=6 below. | ||
env: | ||
MAX_COUNT: 6 | ||
steps: | ||
- run: echo "FETCH_DEPTH=$((${{ github.event.pull_request.commits }} + 2))" >> "$GITHUB_ENV" | ||
- uses: actions/checkout@v4 | ||
with: | ||
ref: ${{ github.event.pull_request.head.sha }} | ||
fetch-depth: ${{ env.FETCH_DEPTH }} | ||
- run: | | ||
git checkout HEAD~ | ||
echo "COMMIT_AFTER_LAST_MERGE=$(git log $(git log --merges -1 --format=%H)..HEAD --format=%H --max-count=${{ env.MAX_COUNT }} | tail -1)" >> "$GITHUB_ENV" | ||
- run: sudo apt install clang ccache build-essential libtool autotools-dev automake pkg-config bsdmainutils python3-zmq libevent-dev libboost-dev libsqlite3-dev libdb++-dev systemtap-sdt-dev libminiupnpc-dev libnatpmp-dev libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools qtwayland5 libqrencode-dev -y | ||
- name: Compile and run tests | ||
run: | | ||
# Use clang++, because it is a bit faster and uses less memory than g++ | ||
git rebase --exec "echo Running test-one-commit on \$( git log -1 ) && ./autogen.sh && CC=clang CXX=clang++ ./configure && make clean && make -j $(nproc) check && ./test/functional/test_runner.py -j $(( $(nproc) * 2 ))" ${{ env.COMMIT_AFTER_LAST_MERGE }}~1 | ||
macos-native-matrix: | ||
name: 'macos native matrix, x86_64, Arm64, no depends, sqlite only, gui' | ||
# Use latest image, but hardcode version to avoid silent upgrades (and breaks). | ||
# See: https://github.com/actions/runner-images#available-images. | ||
# runs-on: [ macos-11 ] | ||
# runs-on: [ macos-12 ] | ||
# runs-on: [ macos-12-large ] | ||
# runs-on: [ macos-13 ] | ||
# runs-on: [ macos-13-large ] | ||
runs-on: [ macos-13-xlarge ] | ||
# runs-on: [ macos-11, macos-12, macos-12-large, macos-13-large, macos-13-xlarge ] | ||
|
||
# No need to run on the read-only mirror, unless it is a PR. | ||
if: github.repository != 'bitcoin-core/gui' || github.event_name == 'pull_request' | ||
|
||
timeout-minutes: 120 | ||
|
||
env: | ||
FILE_ENV: './ci/test/00_setup_env_mac_native.sh' | ||
BASE_ROOT_DIR: ${{ github.workspace }} | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Clang version | ||
run: clang --version | ||
|
||
- name: Install Homebrew packages | ||
run: brew install automake libtool pkg-config gnu-getopt ccache boost libevent miniupnpc libnatpmp zeromq qt@5 qrencode | ||
|
||
- name: Set Ccache directory | ||
run: echo "CCACHE_DIR=${RUNNER_TEMP}/ccache_dir" >> "$GITHUB_ENV" | ||
|
||
- name: Restore Ccache cache | ||
id: ccache-cache | ||
uses: actions/cache/restore@v3 | ||
with: | ||
path: ${{ env.CCACHE_DIR }} | ||
key: ${{ github.job }}-ccache-${{ github.run_id }} | ||
restore-keys: ${{ github.job }}-ccache- | ||
|
||
- name: CI script | ||
run: ./ci/test_run_all.sh | ||
|
||
- name: Save Ccache cache | ||
uses: actions/cache/save@v3 | ||
if: github.event_name != 'pull_request' && steps.ccache-cache.outputs.cache-hit != 'true' | ||
with: | ||
path: ${{ env.CCACHE_DIR }} | ||
# https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache | ||
key: ${{ github.job }}-ccache-${{ github.run_id }} | ||
|