aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
blob: 87668cd6620c0c3bcb15731a161633945b0c80b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# 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: CI
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.ref }}
  cancel-in-progress: ${{ github.event_name == 'pull_request' }}

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:
  macos-native-x86_64:
    name: macOS 13 native, x86_64 [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-13  # Use M1 once available https://github.com/github/roadmap/issues/528

    # 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@v3

      - name: Clang version
        run: clang --version

      - name: Install Homebrew packages
        run: brew install boost libevent qt@5 miniupnpc libnatpmp ccache zeromq qrencode libtool automake gnu-getopt

      - name: Set Ccache directory
        run: echo "CCACHE_DIR=${RUNNER_TEMP}/ccache_dir" >> "$GITHUB_ENV"

      - name: Restore 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'
        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 }}