diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/build-dummy.yml | 127 | ||||
-rw-r--r-- | .github/workflows/build.yml | 26 | ||||
-rw-r--r-- | .github/workflows/checks-dummy.yml | 42 | ||||
-rw-r--r-- | .github/workflows/checks.yml | 36 | ||||
-rw-r--r-- | .github/workflows/dashboard-pr.yml | 2 | ||||
-rw-r--r-- | .github/workflows/docker-dummy.yml | 51 | ||||
-rw-r--r-- | .github/workflows/docker.yml | 24 | ||||
-rw-r--r-- | .github/workflows/packaging-dummy.yml | 80 | ||||
-rw-r--r-- | .github/workflows/packaging.yml | 23 | ||||
-rw-r--r-- | .github/workflows/release.yml | 6 | ||||
-rw-r--r-- | .github/workflows/review.yml | 24 |
11 files changed, 422 insertions, 19 deletions
diff --git a/.github/workflows/build-dummy.yml b/.github/workflows/build-dummy.yml new file mode 100644 index 000000000..6bf327e2d --- /dev/null +++ b/.github/workflows/build-dummy.yml @@ -0,0 +1,127 @@ +--- +# Ci code for building release artifacts. +# +# This workflow exists so we can require these checks to pass, but skip +# them on PRs that have nothing to do with the source code. +name: Build +on: + pull_request: # PR checks only validate the build and generate artifacts for testing. + paths-ignore: # This MUST be kept in-sync with the paths-ignore key for the build-dummy.yml workflow. + - '**.c' + - '**.cc' + - '**.h' + - '**.hh' + - '**.in' + - '!netdata.spec.in' + - 'configure.ac' + - 'netdata-installer.sh' + - '**/Makefile*' + - 'Makefile*' + - '.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' + - '!**.md' +concurrency: # This keeps multiple instances of the job from running concurrently for the same ref and event type. + group: build-${{ github.ref }}-${{ github.event_name }} + cancel-in-progress: true +jobs: + build-dist: # Build the distribution tarball and store it as an artifact. + name: Build Distribution Tarball + runs-on: ubuntu-latest + steps: + - run: echo 'NOT REQUIRED' + + build-static: # Build the static binary archives, and store them as artifacts. + name: Build Static + runs-on: ubuntu-latest + strategy: + matrix: + arch: + - x86_64 + - armv7l + - aarch64 + - ppc64le + steps: + - run: echo 'NOT REQUIRED' + + matrix: # Generate the shared build matrix for our build tests. + name: Prepare Build Matrix + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - name: Checkout + id: checkout + uses: actions/checkout@v3 + - name: Prepare tools + id: prepare + run: | + sudo apt-get update && sudo apt-get install -y python3-ruamel.yaml + - name: Read build matrix + id: set-matrix + run: | + matrix="$(.github/scripts/gen-matrix-build.py)" + echo "Generated matrix: ${matrix}" + echo "matrix=${matrix}" >> "${GITHUB_OUTPUT}" + + prepare-test-images: # Prepare the test environments for our build checks. This also checks dependency handling code for each tested environment. + name: Prepare Test Environments + runs-on: ubuntu-latest + needs: + - matrix + env: + RETRY_DELAY: 300 + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.matrix.outputs.matrix) }} + steps: + - run: echo 'NOT REQUIRED' + + source-build: # Test various source build arrangements. + name: Test Source Build + runs-on: ubuntu-latest + needs: + - matrix + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.matrix.outputs.matrix) }} + steps: + - run: echo 'NOT REQUIRED' + + updater-check: # Test the generated dist archive using the updater code. + name: Test Generated Distfile and Updater Code + runs-on: ubuntu-latest + needs: + - matrix + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.matrix.outputs.matrix) }} + steps: + - run: echo 'NOT REQUIRED' + + prepare-upload: # Consolidate the artifacts for uploading or releasing. + name: Prepare Artifacts + runs-on: ubuntu-latest + steps: + - run: echo 'NOT REQUIRED' + + artifact-verification-dist: # Verify the regular installer works with the consolidated artifacts. + name: Test Consolidated Artifacts (Source) + runs-on: ubuntu-latest + steps: + - run: echo 'NOT REQUIRED' + + artifact-verification-static: # Verify the static installer works with the consolidated artifacts. + name: Test Consolidated Artifacts (Static) + runs-on: ubuntu-latest + steps: + - run: echo 'NOT REQUIRED' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index da828f51e..114eb2c53 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,7 +5,31 @@ on: push: # Master branch checks only validate the build and generate artifacts for testing. branches: - master - pull_request: null # PR checks only validate the build and generate artifacts for testing. + pull_request: # PR checks only validate the build and generate artifacts for testing. + paths: # This MUST be kept in-sync with the paths-ignore key for the build-dummy.yml workflow. + - '**.c' + - '**.cc' + - '**.h' + - '**.hh' + - '**.in' + - '!netdata.spec.in' + - 'configure.ac' + - 'netdata-installer.sh' + - '**/Makefile*' + - 'Makefile*' + - '.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' + - '!**.md' workflow_dispatch: # Dispatch runs build and validate, then push to the appropriate storage location. inputs: type: diff --git a/.github/workflows/checks-dummy.yml b/.github/workflows/checks-dummy.yml new file mode 100644 index 000000000..369d70ff9 --- /dev/null +++ b/.github/workflows/checks-dummy.yml @@ -0,0 +1,42 @@ +--- +name: Checks +on: + pull_request: + paths-ignore: # This MUST be kept in sync with the paths key for the checks.yml workflow. + - '**.c' + - '**.cc' + - '**.h' + - '**.hh' + - '**.in' + - '!netdata.spec.in' + - 'configure.ac' + - '**/Makefile*' + - 'Makefile*' + - '.gitignore' + - '.github/workflows/checks.yml' + - 'build/**' + - 'aclk/aclk-schemas/' + - 'ml/dlib/' + - 'mqtt_websockets' + - 'web/server/h2o/libh2o' +env: + DISABLE_TELEMETRY: 1 +concurrency: + group: checks-${{ github.ref }} + cancel-in-progress: true +jobs: + libressl-checks: + name: LibreSSL + runs-on: ubuntu-latest + steps: + - run: "echo 'NOT REQUIRED'" + clang-checks: + name: Clang + runs-on: ubuntu-latest + steps: + - run: "echo 'NOT REQUIRED'" + gitignore-check: + name: .gitignore + runs-on: ubuntu-latest + steps: + - run: "echo 'NOT REQUIRED'" diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 799f8d991..4c892ffce 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -2,9 +2,43 @@ name: Checks on: push: + paths: + - '**.c' + - '**.cc' + - '**.h' + - '**.hh' + - '**.in' + - '!netdata.spec.in' + - 'configure.ac' + - '**/Makefile*' + - 'Makefile*' + - '.gitignore' + - '.github/workflows/checks.yml' + - 'build/**' + - 'aclk/aclk-schemas/' + - 'ml/dlib/' + - 'mqtt_websockets' + - 'web/server/h2o/libh2o' branches: - master - pull_request: null + pull_request: + paths: # This MUST be kept in-sync with the paths-ignore key for the checks-dummy.yml workflow. + - '**.c' + - '**.cc' + - '**.h' + - '**.hh' + - '**.in' + - '!netdata.spec.in' + - 'configure.ac' + - '**/Makefile*' + - 'Makefile*' + - '.gitignore' + - '.github/workflows/checks.yml' + - 'build/**' + - 'aclk/aclk-schemas/' + - 'ml/dlib/' + - 'mqtt_websockets' + - 'web/server/h2o/libh2o' env: DISABLE_TELEMETRY: 1 concurrency: diff --git a/.github/workflows/dashboard-pr.yml b/.github/workflows/dashboard-pr.yml index c7d14c486..ac414da10 100644 --- a/.github/workflows/dashboard-pr.yml +++ b/.github/workflows/dashboard-pr.yml @@ -25,7 +25,7 @@ jobs: - name: Update Files id: update run: | - web/gui/bundle_dashboard.py ${{ github.event.inputs.dashboard_version }} + web/gui/bundle_dashboard_v1.py ${{ github.event.inputs.dashboard_version }} - name: Create Pull Request id: pr uses: peter-evans/create-pull-request@v5 diff --git a/.github/workflows/docker-dummy.yml b/.github/workflows/docker-dummy.yml new file mode 100644 index 000000000..64131dac5 --- /dev/null +++ b/.github/workflows/docker-dummy.yml @@ -0,0 +1,51 @@ +--- +name: Docker +on: + pull_request: + paths-ignore: # This MUST be kept in-sync with the paths key for the dummy.yml workflow. + - '**.c' + - '**.cc' + - '**.h' + - '**.hh' + - '**.in' + - '!netdata.spec.in' + - '.dockerignore' + - 'configure.ac' + - 'netdata-installer.sh' + - '**/Makefile*' + - 'Makefile*' + - '.github/workflows/docker.yml' + - '.github/scripts/docker-test.sh' + - 'build/**' + - 'packaging/docker/**' + - 'packaging/installer/**' + - 'aclk/aclk-schemas/' + - 'ml/dlib/' + - 'mqtt_websockets' + - 'web/server/h2o/libh2o' + - '!**.md' +env: + DISABLE_TELEMETRY: 1 +concurrency: + group: docker-${{ github.ref }}-${{ github.event_name }} + cancel-in-progress: true +jobs: + docker-test: + name: Docker Runtime Test + runs-on: ubuntu-latest + steps: + - run: echo 'NOT REQUIRED' + + docker-ci: + name: Docker Alt Arch Builds + needs: docker-test + runs-on: ubuntu-latest + strategy: + matrix: + platforms: + - linux/i386 + - linux/arm/v7 + - linux/arm64 + - linux/ppc64le + steps: + - run: echo 'NOT REQUIRED' diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 5eec3df74..aad83ced5 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -4,7 +4,29 @@ on: push: branches: - master - pull_request: null + pull_request: + paths: # This MUST be kept in-sync with the paths-ignore key for the docker-dummy.yml workflow. + - '**.c' + - '**.cc' + - '**.h' + - '**.hh' + - '**.in' + - '!netdata.spec.in' + - '.dockerignore' + - 'configure.ac' + - 'netdata-installer.sh' + - '**/Makefile*' + - 'Makefile*' + - '.github/workflows/docker.yml' + - '.github/scripts/docker-test.sh' + - 'build/**' + - 'packaging/docker/**' + - 'packaging/installer/**' + - 'aclk/aclk-schemas/' + - 'ml/dlib/' + - 'mqtt_websockets' + - 'web/server/h2o/libh2o' + - '!**.md' workflow_dispatch: inputs: version: diff --git a/.github/workflows/packaging-dummy.yml b/.github/workflows/packaging-dummy.yml new file mode 100644 index 000000000..653227e1c --- /dev/null +++ b/.github/workflows/packaging-dummy.yml @@ -0,0 +1,80 @@ +--- +# Handles building of binary packages for the agent. +# +# This workflow exists so that we can make these required checks but +# still skip running them on PRs where they are not relevant. +name: Packages +on: + pull_request: + types: + - opened + - reopened + - labeled + - synchronize + paths-ignore: # This MUST be kept in-sync with the paths key for the packaging.yml workflow. + - '**.c' + - '**.cc' + - '**.h' + - '**.hh' + - '**.in' + - 'netdata.spec.in' + - 'configure.ac' + - '**/Makefile*' + - 'Makefile*' + - '.github/workflows/packaging.yml' + - '.github/scripts/gen-matrix-packaging.py' + - '.github/scripts/pkg-test.sh' + - 'build/**' + - 'packaging/*.sh' + - 'packaging/*.checksums' + - 'packaging/*.version' + - 'contrib/debian/**' + - 'aclk/aclk-schemas/' + - 'ml/dlib/' + - 'mqtt_websockets' + - 'web/server/h2o/libh2o' + - '!**.md' +env: + DISABLE_TELEMETRY: 1 + REPO_PREFIX: netdata/netdata +concurrency: + group: packages-${{ github.ref }}-${{ github.event_name }} + cancel-in-progress: true +jobs: + matrix: + name: Prepare Build Matrix + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - name: Checkout + id: checkout + uses: actions/checkout@v3 + - name: Prepare tools + id: prepare + run: | + sudo apt-get update && sudo apt-get install -y python3-ruamel.yaml + - name: Read build matrix + id: set-matrix + run: | + if [ "${{ github.event_name }}" = "pull_request" ] && \ + [ "${{ !contains(github.event.pull_request.labels.*.name, 'run-ci/packaging') }}" = "true" ]; then + matrix="$(.github/scripts/gen-matrix-packaging.py 1)" + else + matrix="$(.github/scripts/gen-matrix-packaging.py 0)" + fi + echo "Generated matrix: ${matrix}" + echo "matrix=${matrix}" >> "${GITHUB_OUTPUT}" + + build: + name: Build + runs-on: ubuntu-latest + env: + DOCKER_CLI_EXPERIMENTAL: enabled + needs: + - matrix + strategy: + matrix: ${{ fromJson(needs.matrix.outputs.matrix) }} + fail-fast: false + steps: + - run: echo 'NOT REQUIRED' diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml index a8d502847..7e8c7e527 100644 --- a/.github/workflows/packaging.yml +++ b/.github/workflows/packaging.yml @@ -8,6 +8,29 @@ on: - reopened - labeled - synchronize + paths: # This MUST be kept in-sync with the paths-ignore key for the packaging-dummy.yml workflow. + - '**.c' + - '**.cc' + - '**.h' + - '**.hh' + - '**.in' + - 'netdata.spec.in' + - 'configure.ac' + - '**/Makefile*' + - 'Makefile*' + - '.github/workflows/packaging.yml' + - '.github/scripts/gen-matrix-packaging.py' + - '.github/scripts/pkg-test.sh' + - 'build/**' + - 'packaging/*.sh' + - 'packaging/*.checksums' + - 'packaging/*.version' + - 'contrib/debian/**' + - 'aclk/aclk-schemas/' + - 'ml/dlib/' + - 'mqtt_websockets' + - 'web/server/h2o/libh2o' + - '!**.md' branches: - master push: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ef9bf94b4..e675d789f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -125,7 +125,7 @@ jobs: with: token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} repo: ${{ github.repository }} - workflow: Build + workflow: build.yml ref: ${{ needs.update-changelogs.outputs.ref }} inputs: '{"version": "${{ needs.update-changelogs.outputs.version }}", "type": "${{ needs.update-changelogs.outputs.type }}"}' - name: Failure Notification @@ -160,7 +160,7 @@ jobs: with: token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} repo: ${{ github.repository }} - workflow: Docker + workflow: docker.yml ref: ${{ needs.update-changelogs.outputs.ref }} inputs: '{"version": "${{ needs.update-changelogs.outputs.version }}"}' - name: Failure Notification @@ -195,7 +195,7 @@ jobs: with: token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} repo: ${{ github.repository }} - workflow: Packages + workflow: packaging.yml ref: ${{ needs.update-changelogs.outputs.ref }} inputs: '{"version": "${{ needs.update-changelogs.outputs.version }}", "type": "${{ needs.update-changelogs.outputs.type }}"}' - name: Failure Notification diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml index 5756e4b21..6a580afa6 100644 --- a/.github/workflows/review.yml +++ b/.github/workflows/review.yml @@ -38,23 +38,23 @@ jobs: else echo "run=false" >> "${GITHUB_OUTPUT}" fi - - name: Check files for clang-format - id: clangformat - run: | - if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/clang-format') }}" = "true" ]; then - echo "run=true" >> "${GITHUB_OUTPUT}" - elif git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '\.cpp$|\.cxx$|\.c$|\.hpp$|\.hxx$|\.h$' ; then - echo "run=true" >> "${GITHUB_OUTPUT}" - echo 'C/C++ code has changed, need to run clang-format.' - else - echo "run=false" >> "${GITHUB_OUTPUT}" - fi + # - name: Check files for clang-format + # id: clangformat + # run: | + # if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/clang-format') }}" = "true" ]; then + # echo "run=true" >> "${GITHUB_OUTPUT}" + # elif git diff --name-only origin/${{ github.base_ref }} HEAD | grep -Eq '\.cpp$|\.cxx$|\.c$|\.hpp$|\.hxx$|\.h$' ; then + # echo "run=true" >> "${GITHUB_OUTPUT}" + # echo 'C/C++ code has changed, need to run clang-format.' + # else + # echo "run=false" >> "${GITHUB_OUTPUT}" + # fi - name: Check files for eslint id: eslint run: | if [ "${{ contains(github.event.pull_request.labels.*.name, 'run-ci/eslint') }}" = "true" ]; then echo "run=true" >> "${GITHUB_OUTPUT}" - elif git diff --name-only origin/${{ github.base_ref }} HEAD | grep -v "web/gui/dashboard" | grep -Eq '.*\.js|node\.d\.plugin\.in' ; then + elif git diff --name-only origin/${{ github.base_ref }} HEAD | grep -v "web/gui/v1" | grep -v "web/gui/v2" | grep -Eq '.*\.js|node\.d\.plugin\.in' ; then echo "run=true" >> "${GITHUB_OUTPUT}" echo 'JS files have changed, need to run ESLint.' else |