mirror of
https://github.com/netdata/netdata.git
synced 2025-04-08 07:10:12 +00:00

* Move to using CPack for repository configuration packages. This simplifies testing of changes to the configuration itself, as well as making package builds marginally faster. * Fix CMake handling for old RPM distros. * Fix openSUSE detection. * Fix file installation. * Override code ownership for packaging/repoconfig/CMakeLists.txt This way changes won’t bother people who aren’t actually responsible for it. * Update CI skip logic to work correctly with new repoconfig setup. * Add improved status messages.
143 lines
4.7 KiB
YAML
143 lines
4.7 KiB
YAML
---
|
||
# 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@v44
|
||
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
|
||
packaging/repoconfig/
|
||
- 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-all
|
||
- 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'
|
||
}}
|