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
}}