summaryrefslogtreecommitdiffstats
path: root/.github/workflows/build-macos.yml
blob: dd6e41540667f6ccda11ccfbff26d0a771ee0c3c (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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
---
# CI code for build and test on macOS
name: macOS Build and test
on:
  push: # Master branch checks only validate the build and generate artifacts for testing.
    branches:
      - master
  pull_request: null # PR checks only validate the build and generate artifacts for testing.

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}

jobs:
  file-check: # Check what files changed if we’re being run in a PR or on a push.
    name: Check Modified Files
    runs-on: ubuntu-latest
    outputs:
      run: ${{ steps.check-run.outputs.run }}
    steps:
      - name: Checkout
        id: checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          submodules: recursive
      - name: Check files
        id: check-files
        uses: tj-actions/changed-files@v43
        with:
          since_last_remote_commit: ${{ github.event_name != 'pull_request' }}
          files: |
            **/*.c
            **/*.cc
            **/*.h
            **/*.hh
            **/*.in
            **/*.patch
            **/*.cmake
            CMakeLists.txt
            netdata-installer.sh
            .github/workflows/build-macos.yml
            .github/scripts/run-updater-check.sh
            packaging/cmake/
            packaging/installer/
            packaging/*.sh
            packaging/*.version
            packaging/*.checksums
            src/aclk/aclk-schemas/
            src/ml/dlib/
            src/fluent-bit/
            src/web/server/h2o/libh2o/
          files_ignore: |
            netdata.spec.in
            **/*.md
      - name: List all changed files in pattern
        continue-on-error: true
        env:
          ALL_CHANGED_FILES: ${{ steps.check-files.outputs.all_changed_files }}
        run: |
          for file in ${ALL_CHANGED_FILES}; do
            echo "$file was changed"
          done
      - name: Check Run
        id: check-run
        run: |
          if [ "${{ steps.check-files.outputs.any_modified }}" == "true" ] || [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
            echo 'run=true' >> "${GITHUB_OUTPUT}"
          else
            echo 'run=false' >> "${GITHUB_OUTPUT}"
          fi

  build-test:
    env:
      DISABLE_TELEMETRY: 1
    runs-on: ${{ matrix.runner }}
    needs:
      - file-check
    strategy:
      fail-fast: false
      max-parallel: 3
      matrix:
        include:
          - name: macos-12
            runner: macos-12
          - name: macos-13
            runner: macos-13
          - name: macos-14-M1
            runner: macos-14
    steps:
      - name: Skip Check
        id: skip
        if: needs.file-check.outputs.run != 'true'
        run: echo "SKIPPED"
      - uses: actions/checkout@v4
        id: checkout
        if: needs.file-check.outputs.run == 'true'
        with:
          submodules: recursive
      - name: Install latest bash
        id: install-bash
        if: needs.file-check.outputs.run == 'true'
        run: |
          brew install bash
      - name: Install netdata dependencies
        id: install-nd-dep
        if: needs.file-check.outputs.run == 'true'
        run: |
          bash ./packaging/installer/install-required-packages.sh --dont-wait --non-interactive netdata
      - name: Build from source
        id: build-source
        if: needs.file-check.outputs.run == 'true'
        run: |
          sudo bash ./netdata-installer.sh --install-no-prefix /usr/local/netdata --dont-wait --dont-start-it --require-cloud --one-time-build
      - name: Test Agent start up
        id: test-agent
        if: needs.file-check.outputs.run == 'true'
        run: |
          /usr/local/netdata/usr/sbin/netdata -D > ./netdata.log 2>&1 &
          ./packaging/runtime-check.sh
      - name: Failure Notification
        uses: rtCamp/action-slack-notify@v2
        env:
          SLACK_COLOR: 'danger'
          SLACK_FOOTER: ''
          SLACK_ICON_EMOJI: ':github-actions:'
          SLACK_TITLE: 'Build & test from source macOS failed:'
          SLACK_USERNAME: 'GitHub Actions'
          SLACK_MESSAGE: |-
              ${{ github.repository }}: macOS Build and test.
              Checkout: ${{ steps.checkout.outcome }}
              Setup runner: ${{ steps.install-bash.outcome }}
              Install netdata required packages: ${{ steps.install-nd-dep.outcome }}
              Build from source: ${{ steps.build-source.outcome }}
              Test Agent runtime: ${{ steps.test-agent.outcome }}
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
        if: >-
          ${{
            failure()
            && startsWith(github.ref, 'refs/heads/master')
            && github.event_name != 'pull_request'
            && github.repository == 'netdata/netdata'
          }}