@cryptotaxi247 / netdata-1 / commits / 020499d25

Fix handling of CI skipping. (#16022)

* Fix handling of CI skipping. This moves the file change detection logic into the workflows themselves, avoiding issues with GitHub randomly changing how path filtering works. * Fix workflows. * Fix output name. * Further fix action parameters. * Fix uploading test environments. * Add distros.yml to files checked.

Austin S. Hemmelgarn committed Sep 20, 2023 at 08:03 UTC 020499d259a830e06347cc7ba54a7fd90d4446b9
8 files changed +352 -425
.github/workflows/build-dummy.yml deleted
-127
@@ -1,127 +0,0 @@
1 ----
2 -# Ci code for building release artifacts.
3 -#
4 -# This workflow exists so we can require these checks to pass, but skip
5 -# them on PRs that have nothing to do with the source code.
6 -name: Build
7 -on:
8 - pull_request: # PR checks only validate the build and generate artifacts for testing.
9 - paths-ignore: # This MUST be kept in-sync with the paths-ignore key for the build-dummy.yml workflow.
10 - - '**.c'
11 - - '**.cc'
12 - - '**.h'
13 - - '**.hh'
14 - - '**.in'
15 - - '!netdata.spec.in'
16 - - 'configure.ac'
17 - - 'netdata-installer.sh'
18 - - '**/Makefile*'
19 - - 'Makefile*'
20 - - '.github/workflows/build.yml'
21 - - '.github/scripts/build-static.sh'
22 - - '.github/scripts/get-static-cache-key.sh'
23 - - '.github/scripts/gen-matrix-build.py'
24 - - '.github/scripts/run-updater-check.sh'
25 - - 'build/**'
26 - - 'packaging/makeself/**'
27 - - 'packaging/installer/**'
28 - - 'aclk/aclk-schemas/'
29 - - 'ml/dlib/'
30 - - 'mqtt_websockets'
31 - - 'web/server/h2o/libh2o'
32 - - '!**.md'
33 -concurrency: # This keeps multiple instances of the job from running concurrently for the same ref and event type.
34 - group: build-${{ github.ref }}-${{ github.event_name }}
35 - cancel-in-progress: true
36 -jobs:
37 - build-dist: # Build the distribution tarball and store it as an artifact.
38 - name: Build Distribution Tarball
39 - runs-on: ubuntu-latest
40 - steps:
41 - - run: echo 'NOT REQUIRED'
42 -
43 - build-static: # Build the static binary archives, and store them as artifacts.
44 - name: Build Static
45 - runs-on: ubuntu-latest
46 - strategy:
47 - matrix:
48 - arch:
49 - - x86_64
50 - - armv7l
51 - - aarch64
52 - - ppc64le
53 - steps:
54 - - run: echo 'NOT REQUIRED'
55 -
56 - matrix: # Generate the shared build matrix for our build tests.
57 - name: Prepare Build Matrix
58 - runs-on: ubuntu-latest
59 - outputs:
60 - matrix: ${{ steps.set-matrix.outputs.matrix }}
61 - steps:
62 - - name: Checkout
63 - id: checkout
64 - uses: actions/checkout@v4
65 - - name: Prepare tools
66 - id: prepare
67 - run: |
68 - sudo apt-get update && sudo apt-get install -y python3-ruamel.yaml
69 - - name: Read build matrix
70 - id: set-matrix
71 - run: |
72 - matrix="$(.github/scripts/gen-matrix-build.py)"
73 - echo "Generated matrix: ${matrix}"
74 - echo "matrix=${matrix}" >> "${GITHUB_OUTPUT}"
75 -
76 - prepare-test-images: # Prepare the test environments for our build checks. This also checks dependency handling code for each tested environment.
77 - name: Prepare Test Environments
78 - runs-on: ubuntu-latest
79 - needs:
80 - - matrix
81 - env:
82 - RETRY_DELAY: 300
83 - strategy:
84 - fail-fast: false
85 - matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
86 - steps:
87 - - run: echo 'NOT REQUIRED'
88 -
89 - source-build: # Test various source build arrangements.
90 - name: Test Source Build
91 - runs-on: ubuntu-latest
92 - needs:
93 - - matrix
94 - strategy:
95 - fail-fast: false
96 - matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
97 - steps:
98 - - run: echo 'NOT REQUIRED'
99 -
100 - updater-check: # Test the generated dist archive using the updater code.
101 - name: Test Generated Distfile and Updater Code
102 - runs-on: ubuntu-latest
103 - needs:
104 - - matrix
105 - strategy:
106 - fail-fast: false
107 - matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
108 - steps:
109 - - run: echo 'NOT REQUIRED'
110 -
111 - prepare-upload: # Consolidate the artifacts for uploading or releasing.
112 - name: Prepare Artifacts
113 - runs-on: ubuntu-latest
114 - steps:
115 - - run: echo 'NOT REQUIRED'
116 -
117 - artifact-verification-dist: # Verify the regular installer works with the consolidated artifacts.
118 - name: Test Consolidated Artifacts (Source)
119 - runs-on: ubuntu-latest
120 - steps:
121 - - run: echo 'NOT REQUIRED'
122 -
123 - artifact-verification-static: # Verify the static installer works with the consolidated artifacts.
124 - name: Test Consolidated Artifacts (Static)
125 - runs-on: ubuntu-latest
126 - steps:
127 - - run: echo 'NOT REQUIRED'
.github/workflows/build.yml
+137 -34
@@ -5,31 +5,7 @@ on:
5 push: # Master branch checks only validate the build and generate artifacts for testing.
6 branches:
7 - master
8 - pull_request: # PR checks only validate the build and generate artifacts for testing.
9 - paths: # This MUST be kept in-sync with the paths-ignore key for the build-dummy.yml workflow.
10 - - '**.c'
11 - - '**.cc'
12 - - '**.h'
13 - - '**.hh'
14 - - '**.in'
15 - - '!netdata.spec.in'
16 - - 'configure.ac'
17 - - 'netdata-installer.sh'
18 - - '**/Makefile*'
19 - - 'Makefile*'
20 - - '.github/workflows/build.yml'
21 - - '.github/scripts/build-static.sh'
22 - - '.github/scripts/get-static-cache-key.sh'
23 - - '.github/scripts/gen-matrix-build.py'
24 - - '.github/scripts/run-updater-check.sh'
25 - - 'build/**'
26 - - 'packaging/makeself/**'
27 - - 'packaging/installer/**'
28 - - 'aclk/aclk-schemas/'
29 - - 'ml/dlib/'
30 - - 'mqtt_websockets'
31 - - 'web/server/h2o/libh2o'
32 - - '!**.md'
8 + pull_request: null # PR checks only validate the build and generate artifacts for testing.
9 workflow_dispatch: # Dispatch runs build and validate, then push to the appropriate storage location.
10 inputs:
11 type:
@@ -44,30 +20,90 @@ concurrency: # This keeps multiple instances of the job from running concurrentl
20 group: build-${{ github.ref }}-${{ github.event_name }}
21 cancel-in-progress: true
22 jobs:
23 + file-check: # Check what files changed if we’re being run in a PR or on a push.
24 + name: Check Modified Files
25 + runs-on: ubuntu-latest
26 + outputs:
27 + run: ${{ steps.check-run.outputs.run }}
28 + steps:
29 + - name: Checkout
30 + id: checkout
31 + uses: actions/checkout@v4
32 + with:
33 + fetch-depth: 0
34 + submodules: recursive
35 + - name: Check files
36 + id: check-files
37 + uses: tj-actions/changed-files@v39
38 + with:
39 + since_last_remote_commit: ${{ github.event_name != 'pull_request' }}
40 + files: |
41 + **.c
42 + **.cc
43 + **.h
44 + **.hh
45 + **.in
46 + configure.ac
47 + netdata-installer.sh
48 + **/Makefile*
49 + Makefile*
50 + .github/data/distros.yml
51 + .github/workflows/build.yml
52 + .github/scripts/build-static.sh
53 + .github/scripts/get-static-cache-key.sh
54 + .github/scripts/gen-matrix-build.py
55 + .github/scripts/run-updater-check.sh
56 + build/**
57 + packaging/makeself/**
58 + packaging/installer/**
59 + aclk/aclk-schemas/
60 + ml/dlib/
61 + mqtt_websockets
62 + web/server/h2o/libh2o
63 + files_ignore: |
64 + netdata.spec.in
65 + **.md
66 + - name: Check Run
67 + id: check-run
68 + run: |
69 + if [ "${{ steps.check-files.outputs.any_modified }}" == "true" ] || [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
70 + echo 'run=true' >> "${GITHUB_OUTPUT}"
71 + else
72 + echo 'run=false' >> "${GITHUB_OUTPUT}"
73 + fi
74 +
75 build-dist: # Build the distribution tarball and store it as an artifact.
76 name: Build Distribution Tarball
77 runs-on: ubuntu-latest
78 + needs:
79 + - file-check
80 outputs:
81 distfile: ${{ steps.build.outputs.distfile }}
82 steps:
83 + - name: Skip Check
84 + id: skip
85 + if: needs.file-check.outputs.run != 'true'
86 + run: echo "SKIPPED"
87 - name: Checkout
88 id: checkout
89 + if: needs.file-check.outputs.run == 'true'
90 uses: actions/checkout@v4
91 with:
92 fetch-depth: 0
93 submodules: recursive
94 - name: Fix tags
95 id: fix-tags
61 - if: github.event_name != 'push'
96 + if: github.event_name != 'push' && needs.file-check.outputs.run == 'true'
97 run: |
98 git fetch --tags --force
99 - name: Mark Stable
100 id: channel
66 - if: github.event_name == 'workflow_dispatch' && github.event.inputs.type != 'nightly'
101 + if: github.event_name == 'workflow_dispatch' && github.event.inputs.type != 'nightly' && needs.file-check.outputs.run == 'true'
102 run: |
103 sed -i 's/^RELEASE_CHANNEL="nightly"/RELEASE_CHANNEL="stable"/' netdata-installer.sh
104 - name: Build
105 id: build
106 + if: needs.file-check.outputs.run == 'true'
107 run: |
108 git describe
109 mkdir -p artifacts
@@ -85,6 +121,7 @@ jobs:
121 cp netdata-*.tar.gz artifacts/
122 - name: Store
123 id: store
124 + if: needs.file-check.outputs.run == 'true'
125 uses: actions/upload-artifact@v3
126 with:
127 name: dist-tarball
@@ -112,11 +149,14 @@ jobs:
149 && startsWith(github.ref, 'refs/heads/master')
150 && github.event_name != 'pull_request'
151 && github.repository == 'netdata/netdata'
152 + && needs.file-check.outputs.run == 'true'
153 }}
154
155 build-static: # Build the static binary archives, and store them as artifacts.
156 name: Build Static
157 runs-on: ubuntu-latest
158 + needs:
159 + - file-check
160 strategy:
161 matrix:
162 arch:
@@ -125,38 +165,43 @@ jobs:
165 - aarch64
166 - ppc64le
167 steps:
168 + - name: Skip Check
169 + id: skip
170 + if: needs.file-check.outputs.run != 'true'
171 + run: echo "SKIPPED"
172 - name: Checkout
173 id: checkout
174 + if: needs.file-check.outputs.run == 'true'
175 uses: actions/checkout@v4
176 with:
177 fetch-depth: 0
178 submodules: recursive
179 - name: Fix tags
180 id: fix-tags
136 - if: github.event_name != 'push'
181 + if: github.event_name != 'push' && needs.file-check.outputs.run == 'true'
182 run: |
183 git fetch --tags --force
184 - name: Mark Stable
185 id: channel
141 - if: github.event_name == 'workflow_dispatch' && github.event.inputs.type != 'nightly'
186 + if: github.event_name == 'workflow_dispatch' && github.event.inputs.type != 'nightly' && needs.file-check.outputs.run == 'true'
187 run: |
188 sed -i 's/^RELEASE_CHANNEL="nightly"/RELEASE_CHANNEL="stable"/' netdata-installer.sh packaging/makeself/install-or-update.sh
189 - name: Get Cache Key
145 - if: github.event_name != 'pull_request' || ! contains(github.event.pull_request.labels.*.name, 'run-ci/no-cache')
190 + if: (github.event_name != 'pull_request' || ! contains(github.event.pull_request.labels.*.name, 'run-ci/no-cache')) && needs.file-check.outputs.run == 'true'
191 id: cache-key
192 run: .github/scripts/get-static-cache-key.sh ${{ matrix.arch }} "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/no-cache') }}"
193 - name: Cache
149 - if: github.event_name != 'pull_request' || ! contains(github.event.pull_request.labels.*.name, 'run-ci/no-cache')
194 + if: (github.event_name != 'pull_request' || ! contains(github.event.pull_request.labels.*.name, 'run-ci/no-cache')) && needs.file-check.outputs.run == 'true'
195 id: cache
196 uses: actions/cache@v3
197 with:
198 path: artifacts/cache
199 key: ${{ steps.cache-key.outputs.key }}
200 - name: Build
156 - if: github.event_name != 'workflow_dispatch' # Don’t use retries on PRs.
201 + if: github.event_name != 'workflow_dispatch' && needs.file-check.outputs.run == 'true' # Don’t use retries on PRs.
202 run: .github/scripts/build-static.sh ${{ matrix.arch }}
203 - name: Build
159 - if: github.event_name == 'workflow_dispatch'
204 + if: github.event_name == 'workflow_dispatch' && needs.file-check.outputs.run == 'true'
205 id: build
206 uses: nick-fields/retry@v2
207 with:
@@ -165,6 +210,7 @@ jobs:
210 command: .github/scripts/build-static.sh ${{ matrix.arch }}
211 - name: Store
212 id: store
213 + if: needs.file-check.outputs.run == 'true'
214 uses: actions/upload-artifact@v3
215 with:
216 name: static-archive
@@ -192,6 +238,7 @@ jobs:
238 && startsWith(github.ref, 'refs/heads/master')
239 && github.event_name != 'pull_request'
240 && github.repository == 'netdata/netdata'
241 + && needs.file-check.outputs.run == 'true'
242 }}
243
244 matrix: # Generate the shared build matrix for our build tests.
@@ -344,42 +391,53 @@ jobs:
391 needs:
392 - matrix
393 - prepare-test-images
394 + - file-check
395 strategy:
396 fail-fast: false
397 max-parallel: 8
398 matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
399 steps:
400 + - name: Skip Check
401 + id: skip
402 + if: needs.file-check.outputs.run != 'true'
403 + run: echo "SKIPPED"
404 - name: Checkout
405 id: checkout
406 + if: needs.file-check.outputs.run == 'true'
407 uses: actions/checkout@v4
408 with:
409 submodules: recursive
410 - name: Fetch test environment
411 id: fetch
412 + if: needs.file-check.outputs.run == 'true'
413 uses: actions/download-artifact@v3
414 with:
415 name: ${{ matrix.artifact_key }}-test-env
416 - name: Load test environment
417 id: load
418 + if: needs.file-check.outputs.run == 'true'
419 run: docker load --input image.tar
420 - name: Regular build on ${{ matrix.distro }}
421 id: build-basic
422 + if: needs.file-check.outputs.run == 'true'
423 run: |
424 docker run --security-opt seccomp=unconfined -w /netdata test:${{ matrix.artifact_key }} \
425 /bin/sh -c 'autoreconf -ivf && ./configure --disable-dependency-tracking && make -j2'
426 - name: netdata-installer on ${{ matrix.distro }}, disable cloud
427 id: build-no-cloud
428 + if: needs.file-check.outputs.run == 'true'
429 run: |
430 docker run --security-opt seccomp=unconfined -w /netdata test:${{ matrix.artifact_key }} \
431 /bin/sh -c './netdata-installer.sh --dont-wait --dont-start-it --disable-cloud --one-time-build'
432 - name: netdata-installer on ${{ matrix.distro }}, require cloud
433 id: build-cloud
434 + if: needs.file-check.outputs.run == 'true'
435 run: |
436 docker run --security-opt seccomp=unconfined -w /netdata test:${{ matrix.artifact_key }} \
437 /bin/sh -c './netdata-installer.sh --dont-wait --dont-start-it --require-cloud --one-time-build'
438 - name: netdata-installer on ${{ matrix.distro }}, require cloud, no JSON-C
439 id: build-no-jsonc
382 - if: matrix.jsonc_removal != ''
440 + if: matrix.jsonc_removal != '' && needs.file-check.outputs.run == 'true'
441 run: |
442 docker run --security-opt seccomp=unconfined -w /netdata test:${{ matrix.artifact_key }} \
443 /bin/sh -c '/rmjsonc.sh && ./netdata-installer.sh --dont-wait --dont-start-it --require-cloud --one-time-build'
@@ -407,6 +465,7 @@ jobs:
465 && startsWith(github.ref, 'refs/heads/master')
466 && github.event_name != 'pull_request'
467 && github.repository == 'netdata/netdata'
468 + && needs.file-check.outputs.run == 'true'
469 }}
470
471 updater-check: # Test the generated dist archive using the updater code.
@@ -417,6 +476,7 @@ jobs:
476 - build-dist
477 - matrix
478 - prepare-test-images
479 + - file-check
480 strategy:
481 fail-fast: false
482 max-parallel: 8
@@ -429,17 +489,24 @@ jobs:
489 volumes:
490 - ${{ github.workspace }}:/usr/local/apache2/htdocs/
491 steps:
492 + - name: Skip Check
493 + id: skip
494 + if: needs.file-check.outputs.run != 'true'
495 + run: echo "SKIPPED"
496 - name: Checkout
497 id: checkout
498 + if: needs.file-check.outputs.run == 'true'
499 uses: actions/checkout@v4
500 - name: Fetch dist tarball artifacts
501 id: fetch-tarball
502 + if: needs.file-check.outputs.run == 'true'
503 uses: actions/download-artifact@v3
504 with:
505 name: dist-tarball
506 path: dist-tarball
507 - name: Prepare artifact directory
508 id: prepare
509 + if: needs.file-check.outputs.run == 'true'
510 run: |
511 mkdir -p artifacts/download/latest || exit 1
512 echo "9999.0.0-0" > artifacts/download/latest/latest-version.txt || exit 1
@@ -450,14 +517,17 @@ jobs:
517 cat sha256sums.txt
518 - name: Fetch test environment
519 id: fetch-test-environment
520 + if: needs.file-check.outputs.run == 'true'
521 uses: actions/download-artifact@v3
522 with:
523 name: ${{ matrix.artifact_key }}-test-env
524 - name: Load test environment
525 id: load
526 + if: needs.file-check.outputs.run == 'true'
527 run: docker load --input image.tar
528 - name: Install netdata and run the updater on ${{ matrix.distro }}
529 id: updater-check
530 + if: needs.file-check.outputs.run == 'true'
531 run: |
532 docker run --security-opt seccomp=unconfined -e DISABLE_TELEMETRY=1 --network host -w /netdata test:${{ matrix.artifact_key }} \
533 /netdata/.github/scripts/run-updater-check.sh
@@ -484,6 +554,7 @@ jobs:
554 && startsWith(github.ref, 'refs/heads/master')
555 && github.event_name != 'pull_request'
556 && github.repository == 'netdata/netdata'
557 + && needs.file-check.outputs.run == 'true'
558 }}
559
560 prepare-upload: # Consolidate the artifacts for uploading or releasing.
@@ -492,27 +563,37 @@ jobs:
563 needs:
564 - build-dist
565 - build-static
566 + - file-check
567 steps:
568 + - name: Skip Check
569 + id: skip
570 + if: needs.file-check.outputs.run != 'true'
571 + run: echo "SKIPPED"
572 - name: Checkout
573 id: checkout
574 + if: needs.file-check.outputs.run == 'true'
575 uses: actions/checkout@v4
576 - name: Prepare Environment
577 id: prepare
578 + if: needs.file-check.outputs.run == 'true'
579 run: mkdir -p artifacts
580 - name: Retrieve Dist Tarball
581 id: fetch-dist
582 + if: needs.file-check.outputs.run == 'true'
583 uses: actions/download-artifact@v3
584 with:
585 name: dist-tarball
586 path: dist-tarball
587 - name: Retrieve Static Build Artifacts
588 id: fetch-static
589 + if: needs.file-check.outputs.run == 'true'
590 uses: actions/download-artifact@v3
591 with:
592 name: static-archive
593 path: static-archive
594 - name: Prepare Artifacts
595 id: consolidate
596 + if: needs.file-check.outputs.run == 'true'
597 working-directory: ./artifacts/
598 run: |
599 mv ../dist-tarball/* . || exit 1
@@ -524,6 +605,7 @@ jobs:
605 cat sha256sums.txt
606 - name: Store Artifacts
607 id: store
608 + if: needs.file-check.outputs.run == 'true'
609 uses: actions/upload-artifact@v3
610 with:
611 name: final-artifacts
@@ -552,6 +634,7 @@ jobs:
634 && startsWith(github.ref, 'refs/heads/master')
635 && github.event_name != 'pull_request'
636 && github.repository == 'netdata/netdata'
637 + && needs.file-check.outputs.run == 'true'
638 }}
639
640 artifact-verification-dist: # Verify the regular installer works with the consolidated artifacts.
@@ -559,6 +642,7 @@ jobs:
642 runs-on: ubuntu-latest
643 needs:
644 - prepare-upload
645 + - file-check
646 services:
647 apache: # This gets used to serve the dist tarball for the updater script.
648 image: httpd:2.4
@@ -567,22 +651,30 @@ jobs:
651 volumes:
652 - ${{ github.workspace }}:/usr/local/apache2/htdocs/
653 steps:
654 + - name: Skip Check
655 + id: skip
656 + if: needs.file-check.outputs.run != 'true'
657 + run: echo "SKIPPED"
658 - name: Checkout
659 id: checkout
660 + if: needs.file-check.outputs.run == 'true'
661 uses: actions/checkout@v4
662 - name: Fetch artifacts
663 id: fetch
664 + if: needs.file-check.outputs.run == 'true'
665 uses: actions/download-artifact@v3
666 with:
667 name: final-artifacts
668 path: artifacts
669 - name: Prepare artifacts directory
670 id: prepare
671 + if: needs.file-check.outputs.run == 'true'
672 run: |
673 mkdir -p download/latest
674 mv artifacts/* download/latest
675 - name: Verify that artifacts work with installer
676 id: verify
677 + if: needs.file-check.outputs.run == 'true'
678 env:
679 NETDATA_TARBALL_BASEURL: http://localhost:8080/
680 run: packaging/installer/kickstart.sh --build-only --dont-start-it --disable-telemetry --dont-wait
@@ -606,6 +698,7 @@ jobs:
698 && startsWith(github.ref, 'refs/heads/master')
699 && github.event_name != 'pull_request'
700 && github.repository == 'netdata/netdata'
701 + && needs.file-check.outputs.run == 'true'
702 }}
703
704 artifact-verification-static: # Verify the static installer works with the consolidated artifacts.
@@ -613,6 +706,7 @@ jobs:
706 runs-on: ubuntu-latest
707 needs:
708 - prepare-upload
709 + - file-check
710 services:
711 apache: # This gets used to serve the static archives.
712 image: httpd:2.4
@@ -621,22 +715,30 @@ jobs:
715 volumes:
716 - ${{ github.workspace }}:/usr/local/apache2/htdocs/
717 steps:
718 + - name: Skip Check
719 + id: skip
720 + if: needs.file-check.outputs.run != 'true'
721 + run: echo "SKIPPED"
722 - name: Checkout
723 id: checkout
724 + if: needs.file-check.outputs.run == 'true'
725 uses: actions/checkout@v4
726 - name: Fetch artifacts
727 id: fetch-artifacts
728 + if: needs.file-check.outputs.run == 'true'
729 uses: actions/download-artifact@v3
730 with:
731 name: final-artifacts
732 path: artifacts
733 - name: Prepare artifacts directory
734 id: prepare
735 + if: needs.file-check.outputs.run == 'true'
736 run: |
737 mkdir -p download/latest
738 mv artifacts/* download/latest
739 - name: Verify that artifacts work with installer
740 id: verify
741 + if: needs.file-check.outputs.run == 'true'
742 env:
743 NETDATA_TARBALL_BASEURL: http://localhost:8080/
744 run: packaging/installer/kickstart.sh --static-only --dont-start-it --disable-telemetry
@@ -660,6 +762,7 @@ jobs:
762 && startsWith(github.ref, 'refs/heads/master')
763 && github.event_name != 'pull_request'
764 && github.repository == 'netdata/netdata'
765 + && needs.file-check.outputs.run == 'true'
766 }}
767
768 upload-nightly: # Upload the nightly build artifacts to GCS.
.github/workflows/checks-dummy.yml deleted
-42
@@ -1,42 +0,0 @@
1 ----
2 -name: Checks
3 -on:
4 - pull_request:
5 - paths-ignore: # This MUST be kept in sync with the paths key for the checks.yml workflow.
6 - - '**.c'
7 - - '**.cc'
8 - - '**.h'
9 - - '**.hh'
10 - - '**.in'
11 - - '!netdata.spec.in'
12 - - 'configure.ac'
13 - - '**/Makefile*'
14 - - 'Makefile*'
15 - - '.gitignore'
16 - - '.github/workflows/checks.yml'
17 - - 'build/**'
18 - - 'aclk/aclk-schemas/'
19 - - 'ml/dlib/'
20 - - 'mqtt_websockets'
21 - - 'web/server/h2o/libh2o'
22 -env:
23 - DISABLE_TELEMETRY: 1
24 -concurrency:
25 - group: checks-${{ github.ref }}
26 - cancel-in-progress: true
27 -jobs:
28 - libressl-checks:
29 - name: LibreSSL
30 - runs-on: ubuntu-latest
31 - steps:
32 - - run: "echo 'NOT REQUIRED'"
33 - clang-checks:
34 - name: Clang
35 - runs-on: ubuntu-latest
36 - steps:
37 - - run: "echo 'NOT REQUIRED'"
38 - gitignore-check:
39 - name: .gitignore
40 - runs-on: ubuntu-latest
41 - steps:
42 - - run: "echo 'NOT REQUIRED'"
.github/workflows/checks.yml
+75 -37
@@ -2,58 +2,77 @@
2 name: Checks
3 on:
4 push:
5 - paths:
6 - - '**.c'
7 - - '**.cc'
8 - - '**.h'
9 - - '**.hh'
10 - - '**.in'
11 - - '!netdata.spec.in'
12 - - 'configure.ac'
13 - - '**/Makefile*'
14 - - 'Makefile*'
15 - - '.gitignore'
16 - - '.github/workflows/checks.yml'
17 - - 'build/**'
18 - - 'aclk/aclk-schemas/'
19 - - 'ml/dlib/'
20 - - 'mqtt_websockets'
21 - - 'web/server/h2o/libh2o'
5 branches:
6 - master
24 - pull_request:
25 - paths: # This MUST be kept in-sync with the paths-ignore key for the checks-dummy.yml workflow.
26 - - '**.c'
27 - - '**.cc'
28 - - '**.h'
29 - - '**.hh'
30 - - '**.in'
31 - - '!netdata.spec.in'
32 - - 'configure.ac'
33 - - '**/Makefile*'
34 - - 'Makefile*'
35 - - '.gitignore'
36 - - '.github/workflows/checks.yml'
37 - - 'build/**'
38 - - 'aclk/aclk-schemas/'
39 - - 'ml/dlib/'
40 - - 'mqtt_websockets'
41 - - 'web/server/h2o/libh2o'
7 + pull_request: null
8 env:
9 DISABLE_TELEMETRY: 1
10 concurrency:
11 group: checks-${{ github.ref }}
12 cancel-in-progress: true
13 jobs:
14 + file-check: # Check what files changed if we’re being run in a PR or on a push.
15 + name: Check Modified Files
16 + runs-on: ubuntu-latest
17 + outputs:
18 + run: ${{ steps.check-run.outputs.run }}
19 + steps:
20 + - name: Checkout
21 + id: checkout
22 + uses: actions/checkout@v4
23 + with:
24 + fetch-depth: 0
25 + submodules: recursive
26 + - name: Check files
27 + id: check-files
28 + uses: tj-actions/changed-files@v39
29 + with:
30 + since_last_remote_commit: ${{ github.event_name != 'pull_request' }}
31 + files: |
32 + **.c
33 + **.cc
34 + **.h
35 + **.hh
36 + **.in
37 + configure.ac
38 + **/Makefile*
39 + Makefile*
40 + .gitignore
41 + .github/workflows/checks.yml
42 + build/**
43 + aclk/aclk-schemas/
44 + ml/dlib/
45 + mqtt_websockets
46 + web/server/h2o/libh2o
47 + files_ignore: |
48 + netdata.spec.in
49 + **.md
50 + - name: Check Run
51 + id: check-run
52 + run: |
53 + if [ "${{ steps.check-files.outputs.any_modified }}" == "true" ] || [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
54 + echo 'run=true' >> "${GITHUB_OUTPUT}"
55 + else
56 + echo 'run=false' >> "${GITHUB_OUTPUT}"
57 + fi
58 +
59 libressl-checks:
60 name: LibreSSL
61 + needs:
62 + - file-check
63 runs-on: ubuntu-latest
64 steps:
65 + - name: Skip Check
66 + id: skip
67 + if: needs.file-check.outputs.run != 'true'
68 + run: echo "SKIPPED"
69 - name: Checkout
70 + if: needs.file-check.outputs.run == 'true'
71 uses: actions/checkout@v4
72 with:
73 submodules: recursive
74 - name: Build
75 + if: needs.file-check.outputs.run == 'true'
76 run: >
77 docker run -v "$PWD":/netdata -w /netdata alpine:latest /bin/sh -c
78 'apk add bash;
@@ -63,30 +82,49 @@ jobs:
82 autoreconf -ivf;
83 ./configure --disable-dependency-tracking;
84 make;'
85 +
86 clang-checks:
87 name: Clang
88 + needs:
89 + - file-check
90 runs-on: ubuntu-latest
91 steps:
92 + - name: Skip Check
93 + id: skip
94 + if: needs.file-check.outputs.run != 'true'
95 + run: echo "SKIPPED"
96 - name: Checkout
97 + if: needs.file-check.outputs.run == 'true'
98 uses: actions/checkout@v4
99 with:
100 submodules: recursive
101 - name: Build
75 - run: |
76 - docker build -f .github/dockerfiles/Dockerfile.clang .
102 + if: needs.file-check.outputs.run == 'true'
103 + run: docker build -f .github/dockerfiles/Dockerfile.clang .
104 +
105 gitignore-check:
106 name: .gitignore
107 + needs:
108 + - file-check
109 runs-on: ubuntu-latest
110 steps:
111 + - name: Skip Check
112 + id: skip
113 + if: needs.file-check.outputs.run != 'true'
114 + run: echo "SKIPPED"
115 - name: Checkout
116 + if: needs.file-check.outputs.run == 'true'
117 uses: actions/checkout@v4
118 with:
119 submodules: recursive
120 - name: Prepare environment
121 + if: needs.file-check.outputs.run == 'true'
122 run: ./packaging/installer/install-required-packages.sh --dont-wait --non-interactive netdata
123 - name: Build netdata
124 + if: needs.file-check.outputs.run == 'true'
125 run: ./netdata-installer.sh --dont-start-it --disable-telemetry --dont-wait --install-prefix /tmp/install --one-time-build
126 - name: Check that repo is clean
127 + if: needs.file-check.outputs.run == 'true'
128 run: |
129 git status --porcelain=v1 > /tmp/porcelain
130 if [ -s /tmp/porcelain ]; then
.github/workflows/docker-dummy.yml deleted
-51
@@ -1,51 +0,0 @@
1 ----
2 -name: Docker
3 -on:
4 - pull_request:
5 - paths-ignore: # This MUST be kept in-sync with the paths key for the dummy.yml workflow.
6 - - '**.c'
7 - - '**.cc'
8 - - '**.h'
9 - - '**.hh'
10 - - '**.in'
11 - - '!netdata.spec.in'
12 - - '.dockerignore'
13 - - 'configure.ac'
14 - - 'netdata-installer.sh'
15 - - '**/Makefile*'
16 - - 'Makefile*'
17 - - '.github/workflows/docker.yml'
18 - - '.github/scripts/docker-test.sh'
19 - - 'build/**'
20 - - 'packaging/docker/**'
21 - - 'packaging/installer/**'
22 - - 'aclk/aclk-schemas/'
23 - - 'ml/dlib/'
24 - - 'mqtt_websockets'
25 - - 'web/server/h2o/libh2o'
26 - - '!**.md'
27 -env:
28 - DISABLE_TELEMETRY: 1
29 -concurrency:
30 - group: docker-${{ github.ref }}-${{ github.event_name }}
31 - cancel-in-progress: true
32 -jobs:
33 - docker-test:
34 - name: Docker Runtime Test
35 - runs-on: ubuntu-latest
36 - steps:
37 - - run: echo 'NOT REQUIRED'
38 -
39 - docker-ci:
40 - name: Docker Alt Arch Builds
41 - needs: docker-test
42 - runs-on: ubuntu-latest
43 - strategy:
44 - matrix:
45 - platforms:
46 - - linux/i386
47 - - linux/arm/v7
48 - - linux/arm64
49 - - linux/ppc64le
50 - steps:
51 - - run: echo 'NOT REQUIRED'
.github/workflows/docker.yml
+73 -25
@@ -4,29 +4,7 @@ on:
4 push:
5 branches:
6 - master
7 - pull_request:
8 - paths: # This MUST be kept in-sync with the paths-ignore key for the docker-dummy.yml workflow.
9 - - '**.c'
10 - - '**.cc'
11 - - '**.h'
12 - - '**.hh'
13 - - '**.in'
14 - - '!netdata.spec.in'
15 - - '.dockerignore'
16 - - 'configure.ac'
17 - - 'netdata-installer.sh'
18 - - '**/Makefile*'
19 - - 'Makefile*'
20 - - '.github/workflows/docker.yml'
21 - - '.github/scripts/docker-test.sh'
22 - - 'build/**'
23 - - 'packaging/docker/**'
24 - - 'packaging/installer/**'
25 - - 'aclk/aclk-schemas/'
26 - - 'ml/dlib/'
27 - - 'mqtt_websockets'
28 - - 'web/server/h2o/libh2o'
29 - - '!**.md'
7 + pull_request: null
8 workflow_dispatch:
9 inputs:
10 version:
@@ -39,20 +17,78 @@ concurrency:
17 group: docker-${{ github.ref }}-${{ github.event_name }}
18 cancel-in-progress: true
19 jobs:
20 + file-check: # Check what files changed if we’re being run in a PR or on a push.
21 + name: Check Modified Files
22 + runs-on: ubuntu-latest
23 + outputs:
24 + run: ${{ steps.check-run.outputs.run }}
25 + steps:
26 + - name: Checkout
27 + id: checkout
28 + uses: actions/checkout@v4
29 + with:
30 + fetch-depth: 0
31 + submodules: recursive
32 + - name: Check files
33 + id: file-check
34 + uses: tj-actions/changed-files@v39
35 + with:
36 + since_last_remote_commit: ${{ github.event_name != 'pull_request' }}
37 + files: |
38 + **.c
39 + **.cc
40 + **.h
41 + **.hh
42 + **.in
43 + .dockerignore
44 + configure.ac
45 + netdata-installer.sh
46 + **/Makefile*
47 + Makefile*
48 + .github/workflows/docker.yml
49 + .github/scripts/docker-test.sh
50 + build/**
51 + packaging/docker/**
52 + packaging/installer/**
53 + aclk/aclk-schemas/
54 + ml/dlib/
55 + mqtt_websockets
56 + web/server/h2o/libh2o
57 + files_ignore: |
58 + netdata.spec.in
59 + **.md
60 + - name: Check Run
61 + id: check-run
62 + run: |
63 + if [ "${{ steps.file-check.outputs.any_modified }}" == "true" ] || [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
64 + echo 'run=true' >> "${GITHUB_OUTPUT}"
65 + else
66 + echo 'run=false' >> "${GITHUB_OUTPUT}"
67 + fi
68 +
69 docker-test:
70 name: Docker Runtime Test
71 + needs:
72 + - file-check
73 runs-on: ubuntu-latest
74 steps:
75 + - name: Skip Check
76 + id: skip
77 + if: needs.file-check.outputs.run != 'true'
78 + run: echo "SKIPPED"
79 - name: Checkout
80 id: checkout
81 + if: needs.file-check.outputs.run == 'true'
82 uses: actions/checkout@v4
83 with:
84 submodules: recursive
85 - name: Setup Buildx
86 id: prepare
87 + if: needs.file-check.outputs.run == 'true'
88 uses: docker/setup-buildx-action@v3
89 - name: Test Build
90 id: build
91 + if: needs.file-check.outputs.run == 'true'
92 uses: docker/build-push-action@v5
93 with:
94 load: true
@@ -60,6 +96,7 @@ jobs:
96 tags: netdata/netdata:test
97 - name: Test Image
98 id: test
99 + if: needs.file-check.outputs.run == 'true'
100 run: .github/scripts/docker-test.sh
101 - name: Failure Notification
102 uses: rtCamp/action-slack-notify@v2
@@ -82,12 +119,15 @@ jobs:
119 && github.event_name != 'pull_request'
120 && startsWith(github.ref, 'refs/heads/master')
121 && github.repository == 'netdata/netdata'
122 + && needs.file-check.outputs.run == 'true'
123 }}
124
125 docker-ci:
126 if: github.event_name != 'workflow_dispatch'
127 name: Docker Alt Arch Builds
90 - needs: docker-test
128 + needs:
129 + - docker-test
130 + - file-check
131 runs-on: ubuntu-latest
132 strategy:
133 matrix:
@@ -97,20 +137,27 @@ jobs:
137 - linux/arm64
138 - linux/ppc64le
139 steps:
140 + - name: Skip Check
141 + id: skip
142 + if: needs.file-check.outputs.run != 'true'
143 + run: echo "SKIPPED"
144 - name: Checkout
145 id: checkout
146 + if: needs.file-check.outputs.run == 'true'
147 uses: actions/checkout@v4
148 with:
149 submodules: recursive
150 - name: Setup QEMU
151 id: qemu
107 - if: matrix.platforms != 'linux/i386'
152 + if: matrix.platforms != 'linux/i386' && needs.file-check.outputs.run == 'true'
153 uses: docker/setup-qemu-action@v3
154 - name: Setup Buildx
155 id: buildx
156 + if: needs.file-check.outputs.run == 'true'
157 uses: docker/setup-buildx-action@v3
158 - name: Build
159 id: build
160 + if: needs.file-check.outputs.run == 'true'
161 uses: docker/build-push-action@v5
162 with:
163 platforms: ${{ matrix.platforms }}
@@ -138,6 +185,7 @@ jobs:
185 && github.event_name != 'pull_request'
186 && startsWith(github.ref, 'refs/heads/master')
187 && github.repository == 'netdata/netdata'
188 + && needs.file-check.outputs.run == 'true'
189 }}
190
191 normalize-tag: # Fix the release tag if needed
.github/workflows/packaging-dummy.yml deleted
-80
@@ -1,80 +0,0 @@
1 ----
2 -# Handles building of binary packages for the agent.
3 -#
4 -# This workflow exists so that we can make these required checks but
5 -# still skip running them on PRs where they are not relevant.
6 -name: Packages
7 -on:
8 - pull_request:
9 - types:
10 - - opened
11 - - reopened
12 - - labeled
13 - - synchronize
14 - paths-ignore: # This MUST be kept in-sync with the paths key for the packaging.yml workflow.
15 - - '**.c'
16 - - '**.cc'
17 - - '**.h'
18 - - '**.hh'
19 - - '**.in'
20 - - 'netdata.spec.in'
21 - - 'configure.ac'
22 - - '**/Makefile*'
23 - - 'Makefile*'
24 - - '.github/workflows/packaging.yml'
25 - - '.github/scripts/gen-matrix-packaging.py'
26 - - '.github/scripts/pkg-test.sh'
27 - - 'build/**'
28 - - 'packaging/*.sh'
29 - - 'packaging/*.checksums'
30 - - 'packaging/*.version'
31 - - 'contrib/debian/**'
32 - - 'aclk/aclk-schemas/'
33 - - 'ml/dlib/'
34 - - 'mqtt_websockets'
35 - - 'web/server/h2o/libh2o'
36 - - '!**.md'
37 -env:
38 - DISABLE_TELEMETRY: 1
39 - REPO_PREFIX: netdata/netdata
40 -concurrency:
41 - group: packages-${{ github.ref }}-${{ github.event_name }}
42 - cancel-in-progress: true
43 -jobs:
44 - matrix:
45 - name: Prepare Build Matrix
46 - runs-on: ubuntu-latest
47 - outputs:
48 - matrix: ${{ steps.set-matrix.outputs.matrix }}
49 - steps:
50 - - name: Checkout
51 - id: checkout
52 - uses: actions/checkout@v4
53 - - name: Prepare tools
54 - id: prepare
55 - run: |
56 - sudo apt-get update && sudo apt-get install -y python3-ruamel.yaml
57 - - name: Read build matrix
58 - id: set-matrix
59 - run: |
60 - if [ "${{ github.event_name }}" = "pull_request" ] && \
61 - [ "${{ !contains(github.event.pull_request.labels.*.name, 'run-ci/packaging') }}" = "true" ]; then
62 - matrix="$(.github/scripts/gen-matrix-packaging.py 1)"
63 - else
64 - matrix="$(.github/scripts/gen-matrix-packaging.py 0)"
65 - fi
66 - echo "Generated matrix: ${matrix}"
67 - echo "matrix=${matrix}" >> "${GITHUB_OUTPUT}"
68 -
69 - build:
70 - name: Build
71 - runs-on: ubuntu-latest
72 - env:
73 - DOCKER_CLI_EXPERIMENTAL: enabled
74 - needs:
75 - - matrix
76 - strategy:
77 - matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
78 - fail-fast: false
79 - steps:
80 - - run: echo 'NOT REQUIRED'
.github/workflows/packaging.yml
+67 -29
@@ -8,31 +8,6 @@ on:
8 - reopened
9 - labeled
10 - synchronize
11 - paths: # This MUST be kept in-sync with the paths-ignore key for the packaging-dummy.yml workflow.
12 - - '**.c'
13 - - '**.cc'
14 - - '**.h'
15 - - '**.hh'
16 - - '**.in'
17 - - 'netdata.spec.in'
18 - - 'configure.ac'
19 - - '**/Makefile*'
20 - - 'Makefile*'
21 - - '.github/workflows/packaging.yml'
22 - - '.github/scripts/gen-matrix-packaging.py'
23 - - '.github/scripts/pkg-test.sh'
24 - - 'build/**'
25 - - 'packaging/*.sh'
26 - - 'packaging/*.checksums'
27 - - 'packaging/*.version'
28 - - 'contrib/debian/**'
29 - - 'aclk/aclk-schemas/'
30 - - 'ml/dlib/'
31 - - 'mqtt_websockets'
32 - - 'web/server/h2o/libh2o'
33 - - '!**.md'
34 - branches:
35 - - master
11 push:
12 branches:
13 - master
@@ -52,6 +27,57 @@ concurrency:
27 group: packages-${{ github.ref }}-${{ github.event_name }}
28 cancel-in-progress: true
29 jobs:
30 + file-check: # Check what files changed if we’re being run in a PR or on a push.
31 + name: Check Modified Files
32 + runs-on: ubuntu-latest
33 + outputs:
34 + run: ${{ steps.check-run.outputs.run }}
35 + steps:
36 + - name: Checkout
37 + id: checkout
38 + uses: actions/checkout@v4
39 + with:
40 + fetch-depth: 0
41 + submodules: recursive
42 + - name: Check files
43 + id: file-check
44 + uses: tj-actions/changed-files@v39
45 + with:
46 + since_last_remote_commit: ${{ github.event_name != 'pull_request' }}
47 + files: |
48 + **.c
49 + **.cc
50 + **.h
51 + **.hh
52 + **.in
53 + netdata.spec.in
54 + configure.ac
55 + **/Makefile*
56 + Makefile*
57 + .github/data/distros.yml
58 + .github/workflows/packaging.yml
59 + .github/scripts/gen-matrix-packaging.py
60 + .github/scripts/pkg-test.sh
61 + build/**
62 + packaging/*.sh
63 + packaging/*.checksums
64 + packaging/*.version
65 + contrib/debian/**
66 + aclk/aclk-schemas/
67 + ml/dlib/
68 + mqtt_websockets
69 + web/server/h2o/libh2o
70 + files_ignore: |
71 + **.md
72 + - name: Check Run
73 + id: check-run
74 + run: |
75 + if [ "${{ steps.file-check.outputs.any_modified }}" == "true" ] || [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
76 + echo 'run=true' >> "${GITHUB_OUTPUT}"
77 + else
78 + echo 'run=false' >> "${GITHUB_OUTPUT}"
79 + fi
80 +
81 matrix:
82 name: Prepare Build Matrix
83 runs-on: ubuntu-latest
@@ -161,6 +187,7 @@ jobs:
187 needs:
188 - matrix
189 - version-check
190 + - file-check
191 strategy:
192 matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
193 # We intentiaonally disable the fail-fast behavior so that a
@@ -169,24 +196,31 @@ jobs:
196 fail-fast: false
197 max-parallel: 8
198 steps:
199 + - name: Skip Check
200 + id: skip
201 + if: needs.file-check.outputs.run != 'true'
202 + run: echo "SKIPPED"
203 - name: Checkout
204 id: checkout
205 + if: needs.file-check.outputs.run == 'true'
206 uses: actions/checkout@v4
207 with:
208 fetch-depth: 0 # We need full history for versioning
209 submodules: recursive
210 - name: Setup QEMU
211 id: qemu
180 - if: matrix.platform != 'linux/amd64' && matrix.platform != 'linux/i386'
212 + if: matrix.platform != 'linux/amd64' && matrix.platform != 'linux/i386' && needs.file-check.outputs.run == 'true'
213 uses: docker/setup-qemu-action@v3
214 - name: Prepare Docker Environment
215 id: docker-config
216 + if: needs.file-check.outputs.run == 'true'
217 shell: bash
218 run: |
219 echo '{"cgroup-parent": "actions-job.slice", "experimental": true}' | sudo tee /etc/docker/daemon.json 2>/dev/null
220 sudo service docker restart
221 - name: Fetch images
222 id: fetch-images
223 + if: needs.file-check.outputs.run == 'true'
224 uses: nick-invision/retry@v2
225 with:
226 max_attempts: 3
@@ -197,12 +231,14 @@ jobs:
231 docker pull --platform ${{ matrix.platform }} netdata/package-builders:${{ matrix.distro }}${{ matrix.version }}
232 - name: Build Packages
233 id: build
234 + if: needs.file-check.outputs.run == 'true'
235 shell: bash
236 run: |
237 docker run --security-opt seccomp=unconfined -e DISABLE_TELEMETRY=1 -e VERSION=${{ needs.version-check.outputs.version }} \
238 --platform=${{ matrix.platform }} -v "$PWD":/netdata netdata/package-builders:${{ matrix.distro }}${{ matrix.version }}
239 - name: Save Packages
240 id: artifacts
241 + if: needs.file-check.outputs.run == 'true'
242 continue-on-error: true
243 uses: actions/upload-artifact@v3
244 with:
@@ -210,6 +246,7 @@ jobs:
246 path: ${{ github.workspace }}/artifacts/*
247 - name: Test Packages
248 id: test
249 + if: needs.file-check.outputs.run == 'true'
250 shell: bash
251 run: |
252 docker run --security-opt seccomp=unconfined -e DISABLE_TELEMETRY=1 -e DISTRO=${{ matrix.distro }} \
@@ -218,7 +255,7 @@ jobs:
255 /netdata/.github/scripts/pkg-test.sh
256 - name: Upload to PackageCloud
257 id: upload
221 - if: github.event_name == 'workflow_dispatch' && github.repository == 'netdata/netdata'
258 + if: github.event_name == 'workflow_dispatch' && github.repository == 'netdata/netdata' && needs.file-check.outputs.run == 'true'
259 continue-on-error: true
260 shell: bash
261 env:
@@ -232,7 +269,7 @@ jobs:
269 done
270 - name: SSH setup
271 id: ssh-setup
235 - if: github.event_name == 'workflow_dispatch' && github.repository == 'netdata/netdata'
272 + if: github.event_name == 'workflow_dispatch' && github.repository == 'netdata/netdata' && needs.file-check.outputs.run == 'true'
273 uses: shimataro/ssh-key-action@v2
274 with:
275 key: ${{ secrets.NETDATABOT_PACKAGES_SSH_KEY }}
@@ -240,7 +277,7 @@ jobs:
277 known_hosts: ${{ secrets.PACKAGES_KNOWN_HOSTS }}
278 - name: Upload to packages.netdata.cloud
279 id: package-upload
243 - if: github.event_name == 'workflow_dispatch' && github.repository == 'netdata/netdata'
280 + if: github.event_name == 'workflow_dispatch' && github.repository == 'netdata/netdata' && needs.file-check.outputs.run == 'true'
281 run: |
282 .github/scripts/package-upload.sh \
283 ${{ matrix.repo_distro }} \
@@ -272,4 +309,5 @@ jobs:
309 && github.event_name != 'pull_request'
310 && startsWith(github.ref, 'refs/heads/master')
311 && github.repository == 'netdata/netdata'
312 + && needs.file-check.outputs.run == 'true'
313 }}