summaryrefslogtreecommitdiffstats
path: root/.github/workflows/build.yml
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-07-24 09:54:23 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-07-24 09:54:44 +0000
commit836b47cb7e99a977c5a23b059ca1d0b5065d310e (patch)
tree1604da8f482d02effa033c94a84be42bc0c848c3 /.github/workflows/build.yml
parentReleasing debian version 1.44.3-2. (diff)
downloadnetdata-836b47cb7e99a977c5a23b059ca1d0b5065d310e.tar.xz
netdata-836b47cb7e99a977c5a23b059ca1d0b5065d310e.zip
Merging upstream version 1.46.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '.github/workflows/build.yml')
-rw-r--r--.github/workflows/build.yml282
1 files changed, 177 insertions, 105 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 4a6debc46..cd48a63bc 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -25,6 +25,7 @@ jobs:
runs-on: ubuntu-latest
outputs:
run: ${{ steps.check-run.outputs.run }}
+ skip-go: ${{ steps.check-go.outputs.skip-go }}
steps:
- name: Checkout
id: checkout
@@ -32,45 +33,80 @@ jobs:
with:
fetch-depth: 0
submodules: recursive
- - name: Check files
- id: check-files
- uses: tj-actions/changed-files@v40
+ - name: Check source files
+ id: check-source-files
+ uses: tj-actions/changed-files@v44
with:
since_last_remote_commit: ${{ github.event_name != 'pull_request' }}
files: |
- **.c
- **.cc
- **.h
- **.hh
- **.in
- configure.ac
+ **/*.c
+ **/*.cc
+ **/*.h
+ **/*.hh
+ **/*.in
+ **/*.patch
+ src/aclk/aclk-schemas/
+ src/ml/dlib/
+ src/fluent-bit/
+ src/web/server/h2o/libh2o/
+ files_ignore: |
+ netdata.spec.in
+ **/*.md
+ - name: Check build files
+ id: check-build-files
+ uses: tj-actions/changed-files@v44
+ with:
+ since_last_remote_commit: ${{ github.event_name != 'pull_request' }}
+ files: |
+ **/*.cmake
+ CMakeLists.txt
netdata-installer.sh
- **/Makefile*
- Makefile*
.github/data/distros.yml
.github/workflows/build.yml
.github/scripts/build-static.sh
.github/scripts/get-static-cache-key.sh
.github/scripts/gen-matrix-build.py
.github/scripts/run-updater-check.sh
- build/**
- packaging/makeself/**
- packaging/installer/**
- aclk/aclk-schemas/
- ml/dlib/
- mqtt_websockets
- web/server/h2o/libh2o
+ packaging/cmake/
+ packaging/makeself/
+ packaging/installer/
+ packaging/*.sh
+ packaging/*.version
+ packaging/*.checksums
files_ignore: |
- netdata.spec.in
- **.md
+ **/*.md
+ packaging/repoconfig/
+ - name: List all changed files in pattern
+ continue-on-error: true
+ env:
+ CHANGED_SOURCE_FILES: ${{ steps.check-source-files.outputs.all_changed_files }}
+ CHANGED_BUILD_FILES: ${{ steps.check-build-files.outputs.all_changed_files }}
+ run: |
+ for file in ${CHANGED_SOURCE_FILES} ${CHANGED_BUILD_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
+ if [ "${{ steps.check-source-files.outputs.any_modified }}" == "true" ] || [ "${{ steps.check-build-files.outputs.any_modified }}" == "true" ] || [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
echo 'run=true' >> "${GITHUB_OUTPUT}"
else
echo 'run=false' >> "${GITHUB_OUTPUT}"
fi
+ - name: Check Go
+ id: check-go
+ env:
+ OTHER_CHANGED_FILES: ${{ steps.check-source-files.outputs.other_changed_files }}
+ run: |
+ if [ '${{ github.event_name }}' == 'pull_request' ]; then
+ if echo "${OTHER_CHANGED_FILES}" | grep -q '.*/(.*\.go|go\.mod|go\.sum)$' || [ "${{ steps.check-build-files.outputs.any_modified }}" == "true" ]; then
+ echo 'skip-go=' >> "${GITHUB_OUTPUT}"
+ else
+ echo 'skip-go=--disable-go' >> "${GITHUB_OUTPUT}"
+ fi
+ else
+ echo 'skip-go=' >> "${GITHUB_OUTPUT}"
+ fi
build-dist: # Build the distribution tarball and store it as an artifact.
name: Build Distribution Tarball
@@ -105,24 +141,17 @@ jobs:
id: build
if: needs.file-check.outputs.run == 'true'
run: |
- git describe
- mkdir -p artifacts
- ./packaging/installer/install-required-packages.sh --dont-wait --non-interactive netdata
- autoreconf -ivf
- ./configure --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --libexecdir=/usr/libexec \
- --with-zlib \
- --with-math \
- --with-user=netdata
- make dist
+ mkdir -p artifacts/
+ tar --create --file "artifacts/netdata-$(git describe).tar.gz" \
+ --sort=name --posix --auto-compress --exclude=artifacts/ --exclude=.git \
+ --exclude=.gitignore --exclude=.gitattributes --exclude=.gitmodules \
+ --transform "s/^\\.\\//netdata-$(git describe)\\//" --verbose .
+ cd artifacts/
echo "distfile=$(find . -name 'netdata-*.tar.gz')" >> "${GITHUB_OUTPUT}"
- cp netdata-*.tar.gz artifacts/
- name: Store
id: store
if: needs.file-check.outputs.run == 'true'
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: dist-tarball
path: artifacts/*.tar.gz
@@ -161,6 +190,7 @@ jobs:
matrix:
arch:
- x86_64
+ - armv6l
- armv7l
- aarch64
- ppc64le
@@ -193,27 +223,31 @@ jobs:
- name: Cache
if: (github.event_name != 'pull_request' || ! contains(github.event.pull_request.labels.*.name, 'run-ci/no-cache')) && needs.file-check.outputs.run == 'true'
id: cache
- uses: actions/cache@v3
+ uses: actions/cache@v4
with:
path: artifacts/cache
key: ${{ steps.cache-key.outputs.key }}
- name: Build
if: github.event_name != 'workflow_dispatch' && needs.file-check.outputs.run == 'true' # Don’t use retries on PRs.
- run: .github/scripts/build-static.sh ${{ matrix.arch }}
+ run: |
+ export EXTRA_INSTALL_FLAGS=${{ needs.file-check.outputs.skip-go }}
+ .github/scripts/build-static.sh ${{ matrix.arch }}
- name: Build
if: github.event_name == 'workflow_dispatch' && needs.file-check.outputs.run == 'true'
id: build
- uses: nick-fields/retry@v2
+ uses: nick-fields/retry@v3
with:
timeout_minutes: 180
max_attempts: 3
- command: .github/scripts/build-static.sh ${{ matrix.arch }}
+ command: |
+ export EXTRA_INSTALL_FLAGS=${{ needs.file-check.outputs.skip-go }}
+ .github/scripts/build-static.sh ${{ matrix.arch }}
- name: Store
id: store
if: needs.file-check.outputs.run == 'true'
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
- name: static-archive
+ name: dist-static-${{ matrix.arch }}
path: artifacts/*.gz.run
retention-days: 30
- name: Failure Notification
@@ -254,7 +288,8 @@ jobs:
- name: Prepare tools
id: prepare
run: |
- sudo apt-get update && sudo apt-get install -y python3-ruamel.yaml
+ sudo apt-get update || true
+ sudo apt-get install -y python3-ruamel.yaml
- name: Read build matrix
id: set-matrix
run: |
@@ -354,7 +389,7 @@ jobs:
tags: test:${{ matrix.artifact_key }}
- name: Upload image artifact
id: upload
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact_key }}-test-env
path: /tmp/image.tar
@@ -410,37 +445,36 @@ jobs:
- name: Fetch test environment
id: fetch
if: needs.file-check.outputs.run == 'true'
- uses: actions/download-artifact@v3
+ uses: Wandalen/wretry.action@v3
with:
- name: ${{ matrix.artifact_key }}-test-env
+ action: actions/download-artifact@v4
+ with: |
+ name: ${{ matrix.artifact_key }}-test-env
+ path: .
+ attempt_limit: 3
+ attempt_delay: 2000
- name: Load test environment
id: load
if: needs.file-check.outputs.run == 'true'
run: docker load --input image.tar
- - name: Regular build on ${{ matrix.distro }}
- id: build-basic
- if: needs.file-check.outputs.run == 'true'
- run: |
- docker run --security-opt seccomp=unconfined -w /netdata test:${{ matrix.artifact_key }} \
- /bin/sh -c 'autoreconf -ivf && ./configure --disable-dependency-tracking && make -j2'
- name: netdata-installer on ${{ matrix.distro }}, disable cloud
id: build-no-cloud
if: needs.file-check.outputs.run == 'true'
run: |
docker run --security-opt seccomp=unconfined -w /netdata test:${{ matrix.artifact_key }} \
- /bin/sh -c './netdata-installer.sh --dont-wait --dont-start-it --disable-cloud --one-time-build'
+ /bin/sh -c './netdata-installer.sh --dont-wait --dont-start-it --disable-cloud --one-time-build ${{ needs.file-check.outputs.skip-go }}'
- name: netdata-installer on ${{ matrix.distro }}, require cloud
id: build-cloud
if: needs.file-check.outputs.run == 'true'
run: |
docker run --security-opt seccomp=unconfined -w /netdata test:${{ matrix.artifact_key }} \
- /bin/sh -c './netdata-installer.sh --dont-wait --dont-start-it --require-cloud --one-time-build'
+ /bin/sh -c './netdata-installer.sh --dont-wait --dont-start-it --require-cloud --one-time-build ${{ needs.file-check.outputs.skip-go }}'
- name: netdata-installer on ${{ matrix.distro }}, require cloud, no JSON-C
id: build-no-jsonc
if: matrix.jsonc_removal != '' && needs.file-check.outputs.run == 'true'
run: |
docker run --security-opt seccomp=unconfined -w /netdata test:${{ matrix.artifact_key }} \
- /bin/sh -c '/rmjsonc.sh && ./netdata-installer.sh --dont-wait --dont-start-it --require-cloud --one-time-build'
+ /bin/sh -c '/rmjsonc.sh && ./netdata-installer.sh --dont-wait --dont-start-it --require-cloud --one-time-build ${{ needs.file-check.outputs.skip-go }}'
- name: Failure Notification
uses: rtCamp/action-slack-notify@v2
env:
@@ -454,7 +488,6 @@ jobs:
Checkout: ${{ steps.checkout.outcome }}
Fetch test environment: ${{ steps.fetch.outcome }}
Load test environment: ${{ steps.load.outcome }}
- Regular build: ${{ steps.build-basic.outcome }}
netdata-installer, disable cloud: ${{ steps.build-no-cloud.outcome }}
netdata-installer, require cloud: ${{ steps.build-cloud.outcome }}
netdata-installer, no JSON-C: ${{ steps.build-no-jsonc.outcome }}
@@ -500,27 +533,40 @@ jobs:
- name: Fetch dist tarball artifacts
id: fetch-tarball
if: needs.file-check.outputs.run == 'true'
- uses: actions/download-artifact@v3
+ uses: Wandalen/wretry.action@v3
with:
- name: dist-tarball
- path: dist-tarball
+ action: actions/download-artifact@v4
+ with: |
+ name: dist-tarball
+ path: dist-tarball
+ attempt_limit: 3
+ attempt_delay: 2000
- name: Prepare artifact directory
id: prepare
if: needs.file-check.outputs.run == 'true'
run: |
- mkdir -p artifacts/download/latest || exit 1
- echo "9999.0.0-0" > artifacts/download/latest/latest-version.txt || exit 1
- cp dist-tarball/* artifacts/download/latest || exit 1
- cd artifacts/download/latest || exit 1
+ mkdir -p artifacts/download/v9999.0.0 || exit 1
+ mkdir -p artifacts/latest || exit 1
+ echo "v9999.0.0" > artifacts/latest/latest-version.txt || exit 1
+ cp dist-tarball/* artifacts/download/v9999.0.0 || exit 1
+ cd artifacts/download/v9999.0.0 || exit 1
ln -s ${{ needs.build-dist.outputs.distfile }} netdata-latest.tar.gz || exit 1
+ ls -lFh
sha256sum -b ./* > "sha256sums.txt" || exit 1
cat sha256sums.txt
+ cd ../.. || exit 1
+ ls -lR
- name: Fetch test environment
id: fetch-test-environment
if: needs.file-check.outputs.run == 'true'
- uses: actions/download-artifact@v3
+ uses: Wandalen/wretry.action@v3
with:
- name: ${{ matrix.artifact_key }}-test-env
+ action: actions/download-artifact@v4
+ with: |
+ name: ${{ matrix.artifact_key }}-test-env
+ path: .
+ attempt_limit: 3
+ attempt_delay: 2000
- name: Load test environment
id: load
if: needs.file-check.outputs.run == 'true'
@@ -529,8 +575,9 @@ jobs:
id: updater-check
if: needs.file-check.outputs.run == 'true'
run: |
- docker run --security-opt seccomp=unconfined -e DISABLE_TELEMETRY=1 --network host -w /netdata test:${{ matrix.artifact_key }} \
- /netdata/.github/scripts/run-updater-check.sh
+ docker run --security-opt seccomp=unconfined -e DISABLE_TELEMETRY=1 --network host -w /netdata \
+ -e EXTRA_INSTALL_FLAGS=${{ needs.file-check.outputs.skip-go }} \
+ test:${{ matrix.artifact_key }} /netdata/.github/scripts/run-updater-check.sh
- name: Failure Notification
uses: rtCamp/action-slack-notify@v2
env:
@@ -577,27 +624,24 @@ jobs:
id: prepare
if: needs.file-check.outputs.run == 'true'
run: mkdir -p artifacts
- - name: Retrieve Dist Tarball
+ - name: Retrieve Build Artifacts
id: fetch-dist
if: needs.file-check.outputs.run == 'true'
- uses: actions/download-artifact@v3
+ uses: Wandalen/wretry.action@v3
with:
- name: dist-tarball
- path: dist-tarball
- - name: Retrieve Static Build Artifacts
- id: fetch-static
- if: needs.file-check.outputs.run == 'true'
- uses: actions/download-artifact@v3
- with:
- name: static-archive
- path: static-archive
+ action: actions/download-artifact@v4
+ with: |
+ pattern: dist-*
+ path: dist-artifacts
+ merge-multiple: true
+ attempt_limit: 3
+ attempt_delay: 2000
- name: Prepare Artifacts
id: consolidate
if: needs.file-check.outputs.run == 'true'
working-directory: ./artifacts/
run: |
- mv ../dist-tarball/* . || exit 1
- mv ../static-archive/* . || exit 1
+ mv ../dist-artifacts/* . || exit 1
ln -s ${{ needs.build-dist.outputs.distfile }} netdata-latest.tar.gz || exit 1
cp ../packaging/version ./latest-version.txt || exit 1
cp ../integrations/integrations.js ./integrations.js || exit 1
@@ -606,7 +650,7 @@ jobs:
- name: Store Artifacts
id: store
if: needs.file-check.outputs.run == 'true'
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: final-artifacts
path: artifacts/*
@@ -621,10 +665,9 @@ jobs:
SLACK_USERNAME: 'GitHub Actions'
SLACK_MESSAGE: |-
${{ github.repository }}: Failed to prepare release artifacts for upload.
- CHeckout: ${{ steps.checkout.outcome }}
+ Checkout: ${{ steps.checkout.outcome }}
Prepare environment: ${{ steps.prepare.outcome }}
Fetch dist tarball: ${{ steps.fetch-dist.outcome }}
- Fetch static builds: ${{ steps.fetch-static.outcome }}
Consolidate artifacts: ${{ steps.consolidate.outcome }}
Store: ${{ steps.store.outcome }}
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
@@ -662,16 +705,21 @@ jobs:
- name: Fetch artifacts
id: fetch
if: needs.file-check.outputs.run == 'true'
- uses: actions/download-artifact@v3
+ uses: Wandalen/wretry.action@v3
with:
- name: final-artifacts
- path: artifacts
+ action: actions/download-artifact@v4
+ with: |
+ name: final-artifacts
+ path: artifacts
+ attempt_limit: 3
+ attempt_delay: 2000
- name: Prepare artifacts directory
id: prepare
if: needs.file-check.outputs.run == 'true'
run: |
mkdir -p download/latest
mv artifacts/* download/latest
+ ls -al download/latest
- name: Verify that artifacts work with installer
id: verify
if: needs.file-check.outputs.run == 'true'
@@ -726,16 +774,21 @@ jobs:
- name: Fetch artifacts
id: fetch-artifacts
if: needs.file-check.outputs.run == 'true'
- uses: actions/download-artifact@v3
+ uses: Wandalen/wretry.action@v3
with:
- name: final-artifacts
- path: artifacts
+ action: actions/download-artifact@v4
+ with: |
+ name: final-artifacts
+ path: artifacts
+ attempt_limit: 3
+ attempt_delay: 2000
- name: Prepare artifacts directory
id: prepare
if: needs.file-check.outputs.run == 'true'
run: |
mkdir -p download/latest
mv artifacts/* download/latest
+ ls -al download/latest
- name: Verify that artifacts work with installer
id: verify
if: needs.file-check.outputs.run == 'true'
@@ -775,26 +828,30 @@ jobs:
steps:
- name: Retrieve Artifacts
id: fetch
- uses: actions/download-artifact@v3
+ uses: Wandalen/wretry.action@v3
with:
- name: final-artifacts
- path: final-artifacts
+ action: actions/download-artifact@v4
+ with: |
+ name: final-artifacts
+ path: final-artifacts
+ attempt_limit: 3
+ attempt_delay: 2000
- name: Authenticate to GCS
id: gcs-auth
- uses: google-github-actions/auth@v1
+ uses: google-github-actions/auth@v2
with:
project_id: ${{ secrets.GCP_NIGHTLY_STORAGE_PROJECT }}
credentials_json: ${{ secrets.GCS_STORAGE_SERVICE_KEY_JSON }}
- name: Setup GCS
id: gcs-setup
- uses: google-github-actions/setup-gcloud@v1.1.1
+ uses: google-github-actions/setup-gcloud@v2.1.0
- name: Upload Artifacts
id: upload
- uses: google-github-actions/upload-cloud-storage@v1.0.3
+ uses: google-github-actions/upload-cloud-storage@v2.1.0
with:
destination: ${{ secrets.GCP_NIGHTLY_STORAGE_BUCKET }}
gzip: false
- path: ./final-artifacts
+ path: ./final-artifacts/latest-version.txt
parent: false
- name: Failure Notification
uses: rtCamp/action-slack-notify@v2
@@ -840,10 +897,14 @@ jobs:
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }}
- name: Retrieve Artifacts
id: fetch
- uses: actions/download-artifact@v3
+ uses: Wandalen/wretry.action@v3
with:
- name: final-artifacts
- path: final-artifacts
+ action: actions/download-artifact@v4
+ with: |
+ name: final-artifacts
+ path: final-artifacts
+ attempt_limit: 3
+ attempt_delay: 2000
- name: Prepare version info
id: version
run: |
@@ -871,7 +932,7 @@ jobs:
with:
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }}
- name: Init python environment for publish release metadata
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
id: init-python
with:
python-version: "3.12"
@@ -891,11 +952,17 @@ jobs:
key: ${{ secrets.NETDATABOT_PACKAGES_SSH_KEY }}
name: id_ecdsa
known_hosts: ${{ secrets.PACKAGES_KNOWN_HOSTS }}
- - name: Sync newer releases
+ - name: Sync release info to packages.netdata.cloud
id: sync-releases
+ continue-on-error: true
if: github.event_name == 'workflow_dispatch' && github.repository == 'netdata/netdata' && steps.check-latest-version.outputs.versions_needs_update == 'true'
run: |
- .github/scripts/upload-new-version-tags.sh
+ .github/scripts/upload-new-version-tags.sh packages.netdata.cloud
+ - name: Sync release info to packages2.netdata.cloud
+ id: sync-releases2
+ if: github.event_name == 'workflow_dispatch' && github.repository == 'netdata/netdata' && steps.check-latest-version.outputs.versions_needs_update == 'true'
+ run: |
+ .github/scripts/upload-new-version-tags.sh packages.netdata.cloud
- name: Failure Notification
uses: rtCamp/action-slack-notify@v2
env:
@@ -916,7 +983,8 @@ jobs:
Setup python environment: ${{ steps.setup-python.outcome }}
Check the nearly published release against the advertised: ${{ steps.check-latest-version.outcome }}
Setup ssh: ${{ steps.ssh-setup.outcome }}
- Sync with the releases: ${{ steps.sync-releases.outcome }}
+ Sync release info to packages.netdata.cloud: ${{ steps.sync-releases.outcome }}
+ Sync release info to packages2.netdata.cloud: ${{ steps.sync-releases2.outcome }}
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
if: >-
${{
@@ -954,10 +1022,14 @@ jobs:
uses: actions/checkout@v4
- name: Retrieve Artifacts
id: fetch
- uses: actions/download-artifact@v3
+ uses: Wandalen/wretry.action@v3
with:
- name: final-artifacts
- path: final-artifacts
+ action: actions/download-artifact@v4
+ with: |
+ name: final-artifacts
+ path: final-artifacts
+ attempt_limit: 3
+ attempt_delay: 2000
- name: Create Release
id: create-release
uses: ncipollo/release-action@v1