2020-03-06 17:44:06 +00:00
|
|
|
|
---
|
2024-03-06 13:54:19 +00:00
|
|
|
|
# Handle building docker images both for CI checks and for eleases.
|
|
|
|
|
#
|
|
|
|
|
# The case of releaases is unfortunately rather complicated, as Docker
|
|
|
|
|
# tooling does not have great support for handling of multiarch images
|
|
|
|
|
# published to multiple registries. As a result, we have to build the
|
|
|
|
|
# images, export the cache, and then _rebuild_ the images using the exported
|
|
|
|
|
# cache but with different output parameters for buildx. We also need to
|
|
|
|
|
# do the second build step as a separate job for each registry so that a
|
|
|
|
|
# failure to publish one place won’t break publishing elsewhere.
|
2020-03-06 17:44:06 +00:00
|
|
|
|
name: Docker
|
|
|
|
|
on:
|
|
|
|
|
push:
|
|
|
|
|
branches:
|
|
|
|
|
- master
|
2023-09-20 12:03:14 +00:00
|
|
|
|
pull_request: null
|
2021-01-15 14:45:05 +00:00
|
|
|
|
workflow_dispatch:
|
|
|
|
|
inputs:
|
|
|
|
|
version:
|
2022-02-23 13:20:49 +00:00
|
|
|
|
description: Version Tag
|
2021-02-08 16:10:47 +00:00
|
|
|
|
default: nightly
|
2021-01-15 14:45:05 +00:00
|
|
|
|
required: true
|
2021-06-15 11:08:01 +00:00
|
|
|
|
env:
|
2022-02-15 14:23:32 +00:00
|
|
|
|
DISABLE_TELEMETRY: 1
|
2021-10-13 13:55:10 +00:00
|
|
|
|
concurrency:
|
|
|
|
|
group: docker-${{ github.ref }}-${{ github.event_name }}
|
|
|
|
|
cancel-in-progress: true
|
2020-03-06 17:44:06 +00:00
|
|
|
|
jobs:
|
2023-09-20 12:03:14 +00:00
|
|
|
|
file-check: # Check what files changed if we’re being run in a PR or on a push.
|
|
|
|
|
name: Check Modified Files
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
outputs:
|
|
|
|
|
run: ${{ steps.check-run.outputs.run }}
|
2024-04-10 13:38:44 +00:00
|
|
|
|
skip-go: ${{ steps.check-go.outputs.skip-go }}
|
2023-09-20 12:03:14 +00:00
|
|
|
|
steps:
|
|
|
|
|
- name: Checkout
|
|
|
|
|
id: checkout
|
2024-03-06 13:54:19 +00:00
|
|
|
|
if: github.event_name != 'workflow_dispatch'
|
2023-09-20 12:03:14 +00:00
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
with:
|
|
|
|
|
fetch-depth: 0
|
|
|
|
|
submodules: recursive
|
2024-04-10 13:38:44 +00:00
|
|
|
|
- name: Check source files
|
|
|
|
|
id: check-source-files
|
2024-03-06 13:54:19 +00:00
|
|
|
|
if: github.event_name != 'workflow_dispatch'
|
2024-08-26 07:59:05 +00:00
|
|
|
|
uses: tj-actions/changed-files@v45
|
2023-09-20 12:03:14 +00:00
|
|
|
|
with:
|
|
|
|
|
since_last_remote_commit: ${{ github.event_name != 'pull_request' }}
|
|
|
|
|
files: |
|
2024-02-10 18:43:44 +00:00
|
|
|
|
**/*.c
|
|
|
|
|
**/*.cc
|
|
|
|
|
**/*.h
|
|
|
|
|
**/*.hh
|
|
|
|
|
**/*.in
|
|
|
|
|
**/*.patch
|
2024-04-10 13:38:44 +00:00
|
|
|
|
src/aclk/aclk-schemas/
|
|
|
|
|
src/ml/dlib/
|
|
|
|
|
src/fluent-bit/
|
|
|
|
|
src/web/server/h2o/libh2o/
|
|
|
|
|
files_ignore: |
|
|
|
|
|
netdata.spec.in
|
|
|
|
|
**/*.md
|
|
|
|
|
- name: Check build system files
|
|
|
|
|
id: check-build-files
|
|
|
|
|
if: github.event_name != 'workflow_dispatch'
|
2024-08-26 07:59:05 +00:00
|
|
|
|
uses: tj-actions/changed-files@v45
|
2024-04-10 13:38:44 +00:00
|
|
|
|
with:
|
|
|
|
|
since_last_remote_commit: ${{ github.event_name != 'pull_request' }}
|
|
|
|
|
files: |
|
2023-09-20 12:03:14 +00:00
|
|
|
|
.dockerignore
|
2023-12-13 14:41:20 +00:00
|
|
|
|
CMakeLists.txt
|
2024-02-02 16:49:03 +00:00
|
|
|
|
netdata-installer.sh
|
2025-02-07 11:53:35 +00:00
|
|
|
|
.github/data/distros.yml
|
2023-09-20 12:03:14 +00:00
|
|
|
|
.github/workflows/docker.yml
|
|
|
|
|
.github/scripts/docker-test.sh
|
2025-02-03 16:26:11 +00:00
|
|
|
|
.github/scripts/gen-matrix-docker.py
|
2024-03-05 13:49:58 +00:00
|
|
|
|
.github/scripts/gen-docker-tags.py
|
|
|
|
|
.github/scripts/gen-docker-imagetool-args.py
|
2024-02-26 09:20:37 +00:00
|
|
|
|
packaging/cmake/
|
2024-02-10 15:04:32 +00:00
|
|
|
|
packaging/docker/
|
|
|
|
|
packaging/installer/
|
2024-02-02 16:49:03 +00:00
|
|
|
|
packaging/runtime-check.sh
|
|
|
|
|
packaging/*.version
|
|
|
|
|
packaging/*.checksums
|
2023-09-20 12:03:14 +00:00
|
|
|
|
files_ignore: |
|
2024-02-10 18:43:44 +00:00
|
|
|
|
**/*.md
|
2024-06-18 12:43:02 +00:00
|
|
|
|
packaging/repoconfig/
|
2024-02-12 09:59:32 +00:00
|
|
|
|
- name: List all changed files in pattern
|
|
|
|
|
continue-on-error: true
|
2024-03-06 13:54:19 +00:00
|
|
|
|
if: github.event_name != 'workflow_dispatch'
|
2024-02-10 18:43:44 +00:00
|
|
|
|
env:
|
2024-04-10 13:38:44 +00:00
|
|
|
|
CHANGED_SOURCE_FILES: ${{ steps.check-source-files.outputs.all_changed_files }}
|
|
|
|
|
CHANGED_BUILD_FILES: ${{ steps.check-build-files.outputs.all_changed_files }}
|
2024-02-10 18:43:44 +00:00
|
|
|
|
run: |
|
2024-04-10 13:38:44 +00:00
|
|
|
|
for file in ${CHANGED_SOURCE_FILES} ${CHANGED_BUILD_FILES} ; do
|
2024-02-12 09:59:32 +00:00
|
|
|
|
echo "$file was changed"
|
2024-02-10 18:43:44 +00:00
|
|
|
|
done
|
2023-09-20 12:03:14 +00:00
|
|
|
|
- name: Check Run
|
|
|
|
|
id: check-run
|
|
|
|
|
run: |
|
2024-04-10 13:38:44 +00:00
|
|
|
|
if [ "${{ steps.check-source-files.outputs.any_modified }}" == "true" ] || [ "${{ steps.check-build-files.outputs.any_modified }}" == "true" ] || [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
|
2023-09-20 12:03:14 +00:00
|
|
|
|
echo 'run=true' >> "${GITHUB_OUTPUT}"
|
|
|
|
|
else
|
|
|
|
|
echo 'run=false' >> "${GITHUB_OUTPUT}"
|
|
|
|
|
fi
|
2024-04-10 13:38:44 +00:00
|
|
|
|
- name: Check Go
|
|
|
|
|
id: check-go
|
|
|
|
|
env:
|
|
|
|
|
OTHER_CHANGED_FILES: ${{ steps.check-source-files.outputs.other_changed_files }}
|
|
|
|
|
run: |
|
|
|
|
|
if [ '${{ github.event_name }}' == 'pull_request' ]; then
|
|
|
|
|
if echo "${OTHER_CHANGED_FILES}" | grep -q '.*/(.*\.go|go\.mod|go\.sum)$' || [ "${{ steps.check-build-files.outputs.any_modified }}" == "true" ]; then
|
|
|
|
|
echo 'skip-go=' >> "${GITHUB_OUTPUT}"
|
|
|
|
|
else
|
|
|
|
|
echo 'skip-go=--disable-go' >> "${GITHUB_OUTPUT}"
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
echo 'skip-go=' >> "${GITHUB_OUTPUT}"
|
|
|
|
|
fi
|
2023-09-20 12:03:14 +00:00
|
|
|
|
|
2025-02-03 16:26:11 +00:00
|
|
|
|
matrix:
|
|
|
|
|
name: Generate Docker Build Matrix
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
outputs:
|
|
|
|
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
|
|
|
steps:
|
|
|
|
|
- name: Checkout
|
|
|
|
|
id: checkout
|
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
- name: Prepare tools
|
|
|
|
|
id: prepare
|
|
|
|
|
run: |
|
|
|
|
|
sudo apt-get update || true
|
|
|
|
|
sudo apt-get install -y python3-ruamel.yaml
|
|
|
|
|
- name: Read build matrix
|
|
|
|
|
id: set-matrix
|
|
|
|
|
run: |
|
|
|
|
|
matrix="$(.github/scripts/gen-matrix-docker.py)"
|
|
|
|
|
echo "Generated matrix: ${matrix}"
|
|
|
|
|
echo "matrix=${matrix}" >> "${GITHUB_OUTPUT}"
|
|
|
|
|
- name: Failure Notification
|
|
|
|
|
uses: rtCamp/action-slack-notify@v2
|
|
|
|
|
env:
|
|
|
|
|
SLACK_COLOR: 'danger'
|
|
|
|
|
SLACK_FOOTER: ''
|
|
|
|
|
SLACK_ICON_EMOJI: ':github-actions:'
|
|
|
|
|
SLACK_TITLE: 'Docker build matrix preparation failed:'
|
|
|
|
|
SLACK_USERNAME: 'GitHub Actions'
|
|
|
|
|
SLACK_MESSAGE: |-
|
|
|
|
|
${{ github.repository }}: Failed to prepare build matrix for build checks.
|
|
|
|
|
Checkout: ${{ steps.checkout.outcome }}
|
|
|
|
|
Prepare tools: ${{ steps.prepare.outcome }}
|
|
|
|
|
Read build matrix: ${{ steps.set-matrix.outcome }}
|
|
|
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
|
if: >-
|
|
|
|
|
${{
|
|
|
|
|
failure()
|
|
|
|
|
&& startsWith(github.ref, 'refs/heads/master')
|
|
|
|
|
&& github.event_name != 'pull_request'
|
|
|
|
|
&& github.repository == 'netdata/netdata'
|
|
|
|
|
}}
|
|
|
|
|
|
2024-03-06 13:54:19 +00:00
|
|
|
|
build-images:
|
|
|
|
|
name: Build Docker Images
|
|
|
|
|
needs:
|
|
|
|
|
- file-check
|
2025-02-03 16:26:11 +00:00
|
|
|
|
- matrix
|
|
|
|
|
runs-on: ${{ matrix.runner }}
|
2024-03-06 13:54:19 +00:00
|
|
|
|
strategy:
|
2025-02-03 16:26:11 +00:00
|
|
|
|
matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
|
|
|
|
|
# Fail fast on releases, but run everything to completion on other triggers.
|
2025-01-23 19:21:28 +00:00
|
|
|
|
fail-fast: false
|
2024-03-06 13:54:19 +00:00
|
|
|
|
steps:
|
|
|
|
|
- name: Skip Check
|
|
|
|
|
id: skip
|
|
|
|
|
if: needs.file-check.outputs.run != 'true'
|
|
|
|
|
run: echo "SKIPPED"
|
|
|
|
|
- name: Checkout
|
|
|
|
|
id: checkout
|
|
|
|
|
if: needs.file-check.outputs.run == 'true'
|
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
with:
|
|
|
|
|
fetch-depth: 0
|
|
|
|
|
submodules: recursive
|
|
|
|
|
- name: Generate Artifact Name
|
|
|
|
|
id: artifact-name
|
|
|
|
|
if: github.repository == 'netdata/netdata' && needs.file-check.outputs.run == 'true' && github.event_name == 'workflow_dispatch'
|
|
|
|
|
run: echo "platform=$(echo ${{ matrix.platform }} | tr '/' '-' | cut -f 2- -d '-')" >> "${GITHUB_OUTPUT}"
|
|
|
|
|
- name: Mark image as official
|
|
|
|
|
id: env
|
|
|
|
|
if: github.repository == 'netdata/netdata' && needs.file-check.outputs.run == 'true' && github.event_name == 'workflow_dispatch'
|
|
|
|
|
run: echo "OFFICIAL_IMAGE=true" >> "${GITHUB_ENV}"
|
|
|
|
|
- name: Setup QEMU
|
|
|
|
|
id: qemu
|
2025-02-03 16:26:11 +00:00
|
|
|
|
if: matrix.qemu && needs.file-check.outputs.run == 'true'
|
2025-01-24 13:49:35 +00:00
|
|
|
|
run: |
|
|
|
|
|
sudo apt-get update
|
|
|
|
|
sudo apt-get upgrade -y
|
|
|
|
|
sudo apt-get install -y qemu-user-static
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- name: Setup Buildx
|
|
|
|
|
id: prepare
|
|
|
|
|
if: needs.file-check.outputs.run == 'true'
|
|
|
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
|
- name: Build Image
|
|
|
|
|
id: build
|
|
|
|
|
if: needs.file-check.outputs.run == 'true'
|
2024-06-24 07:33:28 +00:00
|
|
|
|
uses: docker/build-push-action@v6
|
2024-03-06 13:54:19 +00:00
|
|
|
|
with:
|
|
|
|
|
platforms: ${{ matrix.platform }}
|
|
|
|
|
tags: netdata/netdata:test
|
|
|
|
|
load: true
|
|
|
|
|
cache-to: type=local,dest=/tmp/build-cache,mode=max
|
2024-04-10 13:38:44 +00:00
|
|
|
|
build-args: |
|
|
|
|
|
OFFICIAL_IMAGE=${{ env.OFFICIAL_IMAGE }}
|
|
|
|
|
EXTRA_INSTALL_OPTS=${{ needs.file-check.outputs.skip-go }}
|
2025-03-13 13:57:24 +00:00
|
|
|
|
BUILD_VERSION=test
|
|
|
|
|
BUILD_DATE=${{ github.event.repository.updated_at }}
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- name: Test Image
|
|
|
|
|
id: test
|
|
|
|
|
if: needs.file-check.outputs.run == 'true' && matrix.platform == 'linux/amd64'
|
|
|
|
|
run: .github/scripts/docker-test.sh
|
|
|
|
|
- name: Upload Cache
|
|
|
|
|
id: upload-cache
|
|
|
|
|
if: github.repository == 'netdata/netdata' && needs.file-check.outputs.run == 'true' && github.event_name == 'workflow_dispatch'
|
2025-02-24 08:18:57 +00:00
|
|
|
|
uses: actions/upload-artifact@v4.6.1
|
2024-03-06 13:54:19 +00:00
|
|
|
|
with:
|
|
|
|
|
name: cache-${{ steps.artifact-name.outputs.platform }}
|
|
|
|
|
path: /tmp/build-cache/*
|
|
|
|
|
retention-days: 1
|
|
|
|
|
- name: Failure Notification
|
|
|
|
|
uses: rtCamp/action-slack-notify@v2
|
|
|
|
|
env:
|
|
|
|
|
SLACK_COLOR: 'danger'
|
|
|
|
|
SLACK_FOOTER: ''
|
|
|
|
|
SLACK_ICON_EMOJI: ':github-actions:'
|
|
|
|
|
SLACK_TITLE: 'Docker build failed:'
|
|
|
|
|
SLACK_USERNAME: 'GitHub Actions'
|
|
|
|
|
SLACK_MESSAGE: |-
|
|
|
|
|
${{ github.repository }}: Building or testing Docker image for ${{ matrix.platform }} failed.
|
|
|
|
|
Checkout: ${{ steps.checkout.outcome }}
|
|
|
|
|
Determine artifact name: ${{ steps.artifact-name.outcome }}
|
|
|
|
|
Setup environment: ${{ steps.env.outcome }}
|
|
|
|
|
Setup QEMU: ${{ steps.qemu.outcome }}
|
|
|
|
|
Setup buildx: ${{ steps.prepare.outcome }}
|
|
|
|
|
Build image: ${{ steps.build.outcome }}
|
|
|
|
|
Test image: ${{ steps.test.outcome }}
|
|
|
|
|
Upload build cache: ${{ steps.upload-cache.outcome }}
|
|
|
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
|
if: >-
|
|
|
|
|
${{
|
|
|
|
|
failure()
|
|
|
|
|
&& github.event_name != 'pull_request'
|
|
|
|
|
&& github.repository == 'netdata/netdata'
|
|
|
|
|
&& needs.file-check.outputs.run == 'true'
|
|
|
|
|
}}
|
|
|
|
|
|
2024-03-05 13:49:58 +00:00
|
|
|
|
gen-tags:
|
|
|
|
|
name: Generate Docker Tags
|
2020-03-06 17:44:06 +00:00
|
|
|
|
runs-on: ubuntu-latest
|
2024-03-06 13:54:19 +00:00
|
|
|
|
if: github.event_name == 'workflow_dispatch'
|
2024-03-05 13:49:58 +00:00
|
|
|
|
outputs:
|
|
|
|
|
tags: ${{ steps.tag.outputs.tags }}
|
2020-03-06 17:44:06 +00:00
|
|
|
|
steps:
|
2024-03-05 14:27:19 +00:00
|
|
|
|
- name: Checkout
|
|
|
|
|
id: checkout
|
|
|
|
|
uses: actions/checkout@v4
|
2024-03-05 13:49:58 +00:00
|
|
|
|
- name: Generate Tags
|
|
|
|
|
id: tag
|
|
|
|
|
run: |
|
|
|
|
|
if [ ${{ github.event_name }} = 'workflow_dispatch' ]; then
|
|
|
|
|
echo "tags=$(.github/scripts/gen-docker-tags.py ${{ github.event_name }} ${{ github.event.inputs.version }})" >> "${GITHUB_OUTPUT}"
|
|
|
|
|
else
|
|
|
|
|
echo "tags=$(.github/scripts/gen-docker-tags.py ${{ github.event_name }} '')" >> "${GITHUB_OUTPUT}"
|
|
|
|
|
fi
|
2021-09-22 13:43:37 +00:00
|
|
|
|
|
2024-03-06 13:54:19 +00:00
|
|
|
|
build-images-docker-hub:
|
|
|
|
|
name: Push Images to Docker Hub
|
|
|
|
|
if: github.event_name == 'workflow_dispatch'
|
2023-09-20 12:03:14 +00:00
|
|
|
|
needs:
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- build-images
|
2024-03-05 13:49:58 +00:00
|
|
|
|
- gen-tags
|
2025-02-03 16:26:11 +00:00
|
|
|
|
- matrix
|
2021-09-22 13:43:37 +00:00
|
|
|
|
strategy:
|
2025-02-03 16:26:11 +00:00
|
|
|
|
matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
|
|
|
|
|
runs-on: ${{ matrix.runner }}
|
2021-09-22 13:43:37 +00:00
|
|
|
|
steps:
|
|
|
|
|
- name: Checkout
|
2022-02-23 13:20:49 +00:00
|
|
|
|
id: checkout
|
2023-09-11 11:16:49 +00:00
|
|
|
|
uses: actions/checkout@v4
|
2021-09-22 13:43:37 +00:00
|
|
|
|
with:
|
2024-03-05 13:49:58 +00:00
|
|
|
|
fetch-depth: 0
|
2021-09-22 13:43:37 +00:00
|
|
|
|
submodules: recursive
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- name: Generate Artifact Name
|
|
|
|
|
id: artifact-name
|
|
|
|
|
run: echo "platform=$(echo ${{ matrix.platform }} | tr '/' '-' | cut -f 2- -d '-')" >> "${GITHUB_OUTPUT}"
|
|
|
|
|
- name: Download Cache
|
|
|
|
|
id: fetch-cache
|
|
|
|
|
uses: actions/download-artifact@v4
|
|
|
|
|
with:
|
|
|
|
|
name: cache-${{ steps.artifact-name.outputs.platform }}
|
|
|
|
|
path: /tmp/build-cache
|
2021-10-19 11:29:28 +00:00
|
|
|
|
- name: Mark image as official
|
2022-02-23 13:20:49 +00:00
|
|
|
|
id: env
|
2024-03-06 13:54:19 +00:00
|
|
|
|
if: github.repository == 'netdata/netdata'
|
2022-02-23 13:20:49 +00:00
|
|
|
|
run: echo "OFFICIAL_IMAGE=true" >> "${GITHUB_ENV}"
|
2020-12-10 13:17:07 +00:00
|
|
|
|
- name: Setup QEMU
|
2022-02-23 13:20:49 +00:00
|
|
|
|
id: qemu
|
2025-02-03 16:26:11 +00:00
|
|
|
|
if: matrix.qemu
|
2023-09-18 07:54:34 +00:00
|
|
|
|
uses: docker/setup-qemu-action@v3
|
2020-12-10 13:17:07 +00:00
|
|
|
|
- name: Setup Buildx
|
2024-03-05 13:49:58 +00:00
|
|
|
|
id: prepare
|
2023-09-18 09:14:26 +00:00
|
|
|
|
uses: docker/setup-buildx-action@v3
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- name: Registry Login
|
|
|
|
|
id: login
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
2023-09-18 07:54:07 +00:00
|
|
|
|
uses: docker/login-action@v3
|
2021-01-15 14:45:05 +00:00
|
|
|
|
with:
|
|
|
|
|
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
|
|
|
|
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
|
2024-03-05 13:49:58 +00:00
|
|
|
|
- name: Build Image
|
2022-02-23 13:20:49 +00:00
|
|
|
|
id: build
|
2024-06-24 07:33:28 +00:00
|
|
|
|
uses: docker/build-push-action@v6
|
2020-12-10 13:17:07 +00:00
|
|
|
|
with:
|
2024-03-05 13:49:58 +00:00
|
|
|
|
platforms: ${{ matrix.platform }}
|
2024-03-06 13:54:19 +00:00
|
|
|
|
cache-from: type=local,src=/tmp/build-cache
|
2024-03-06 19:16:32 +00:00
|
|
|
|
outputs: type=image,name=netdata/netdata,push-by-digest=true,name-canonical=true,push=true
|
2025-03-13 13:57:24 +00:00
|
|
|
|
build-args: |
|
|
|
|
|
OFFICIAL_IMAGE=${{ env.OFFICIAL_IMAGE }}
|
|
|
|
|
BUILD_VERSION=${{ github.event.inputs.version }}
|
|
|
|
|
BUILD_DATE=${{ github.event.repository.updated_at }}
|
2024-04-12 17:02:25 +00:00
|
|
|
|
- name: Export Digest
|
|
|
|
|
id: export-digest
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
|
|
|
|
run: |
|
|
|
|
|
mkdir -p /tmp/digests
|
|
|
|
|
digest="${{ steps.build.outputs.digest }}"
|
|
|
|
|
touch "/tmp/digests/${digest#sha256:}"
|
|
|
|
|
- name: Upload digest
|
|
|
|
|
id: upload-digest
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
2025-02-24 08:18:57 +00:00
|
|
|
|
uses: actions/upload-artifact@v4.6.1
|
2024-04-12 17:02:25 +00:00
|
|
|
|
with:
|
|
|
|
|
name: docker-digests-${{ steps.artifact-name.outputs.platform }}
|
|
|
|
|
path: /tmp/digests/*
|
|
|
|
|
if-no-files-found: error
|
|
|
|
|
retention-days: 1
|
2021-03-17 13:28:28 +00:00
|
|
|
|
- name: Failure Notification
|
|
|
|
|
uses: rtCamp/action-slack-notify@v2
|
|
|
|
|
env:
|
|
|
|
|
SLACK_COLOR: 'danger'
|
2021-09-27 14:16:39 +00:00
|
|
|
|
SLACK_FOOTER: ''
|
2021-03-17 13:28:28 +00:00
|
|
|
|
SLACK_ICON_EMOJI: ':github-actions:'
|
2024-03-06 13:54:19 +00:00
|
|
|
|
SLACK_TITLE: 'Docker Hub upload failed:'
|
2021-03-17 13:28:28 +00:00
|
|
|
|
SLACK_USERNAME: 'GitHub Actions'
|
2022-03-09 13:44:07 +00:00
|
|
|
|
SLACK_MESSAGE: |-
|
2024-03-06 13:54:19 +00:00
|
|
|
|
${{ github.repository }}: Creating or uploading Docker image for ${{ matrix.platform }} on Docker Hub failed.
|
2024-03-05 13:49:58 +00:00
|
|
|
|
Checkout: ${{ steps.checkout.outcome }}
|
2024-03-06 13:54:19 +00:00
|
|
|
|
Determine artifact name: ${{ steps.artifact-name.outcome }}
|
|
|
|
|
Fetch build cache: ${{ steps.fetch-cache.outcome }}
|
2022-02-23 13:20:49 +00:00
|
|
|
|
Setup environment: ${{ steps.env.outcome }}
|
|
|
|
|
Setup QEMU: ${{ steps.qemu.outcome }}
|
2024-03-05 13:49:58 +00:00
|
|
|
|
Setup buildx: ${{ steps.prepare.outcome }}
|
2024-03-06 13:54:19 +00:00
|
|
|
|
Login to registry: ${{ steps.login.outcome }}
|
2024-03-05 13:49:58 +00:00
|
|
|
|
Build image: ${{ steps.build.outcome }}
|
|
|
|
|
Export digest: ${{ steps.export-digest.outcome }}
|
|
|
|
|
Upload digest: ${{ steps.upload-digest.outcome }}
|
2021-03-17 13:28:28 +00:00
|
|
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
|
if: >-
|
|
|
|
|
${{
|
|
|
|
|
failure()
|
2022-07-06 13:16:33 +00:00
|
|
|
|
&& github.repository == 'netdata/netdata'
|
2021-03-17 13:28:28 +00:00
|
|
|
|
}}
|
2022-07-13 11:17:37 +00:00
|
|
|
|
|
2024-03-06 13:54:19 +00:00
|
|
|
|
publish-docker-hub:
|
|
|
|
|
name: Consolidate and tag images for DockerHub
|
2022-07-13 11:17:37 +00:00
|
|
|
|
if: github.event_name == 'workflow_dispatch'
|
|
|
|
|
needs:
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- build-images-docker-hub
|
2024-03-05 13:49:58 +00:00
|
|
|
|
- gen-tags
|
2022-07-13 11:17:37 +00:00
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
steps:
|
2024-03-06 17:44:39 +00:00
|
|
|
|
- name: Checkout
|
|
|
|
|
id: checkout
|
|
|
|
|
uses: actions/checkout@v4
|
2024-03-05 13:49:58 +00:00
|
|
|
|
- name: Download digests
|
|
|
|
|
id: fetch-digests
|
|
|
|
|
uses: actions/download-artifact@v4
|
2022-07-13 11:17:37 +00:00
|
|
|
|
with:
|
2024-03-05 13:49:58 +00:00
|
|
|
|
path: /tmp/digests
|
2024-03-06 13:54:19 +00:00
|
|
|
|
pattern: docker-digests-*
|
2024-03-05 13:49:58 +00:00
|
|
|
|
merge-multiple: true
|
2022-07-13 11:17:37 +00:00
|
|
|
|
- name: Setup Buildx
|
2024-03-05 13:49:58 +00:00
|
|
|
|
id: prepare
|
2023-09-18 09:14:26 +00:00
|
|
|
|
uses: docker/setup-buildx-action@v3
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- name: Registry Login
|
|
|
|
|
id: login
|
2022-07-13 11:17:37 +00:00
|
|
|
|
if: github.repository == 'netdata/netdata'
|
2023-09-18 07:54:07 +00:00
|
|
|
|
uses: docker/login-action@v3
|
2022-07-13 11:17:37 +00:00
|
|
|
|
with:
|
|
|
|
|
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
|
|
|
|
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- name: Create and Push Manifest
|
|
|
|
|
id: manifest
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
2024-04-02 13:13:10 +00:00
|
|
|
|
run: docker buildx imagetools create $(.github/scripts/gen-docker-imagetool-args.py /tmp/digests '' "${{ needs.gen-tags.outputs.tags }}")
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- name: Failure Notification
|
|
|
|
|
uses: rtCamp/action-slack-notify@v2
|
|
|
|
|
env:
|
|
|
|
|
SLACK_COLOR: 'danger'
|
|
|
|
|
SLACK_FOOTER: ''
|
|
|
|
|
SLACK_ICON_EMOJI: ':github-actions:'
|
|
|
|
|
SLACK_TITLE: 'Publishing Docker images to Docker Hub failed:'
|
|
|
|
|
SLACK_USERNAME: 'GitHub Actions'
|
|
|
|
|
SLACK_MESSAGE: |-
|
|
|
|
|
${{ github.repository }}: Publishing Docker images to Docker Hub failed.
|
2024-03-06 17:44:39 +00:00
|
|
|
|
Checkout: ${{ steps.checkout.outcome }}
|
2024-03-06 13:54:19 +00:00
|
|
|
|
Download digests: ${{ steps.fetch-digests.outcome }}
|
|
|
|
|
Setup buildx: ${{ steps.prepare.outcome }}
|
|
|
|
|
Login to registry: ${{ steps.login.outcome }}
|
|
|
|
|
Create and push manifest: ${{ steps.manifest.outcome }}
|
|
|
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
|
if: >-
|
|
|
|
|
${{
|
|
|
|
|
failure()
|
|
|
|
|
&& github.repository == 'netdata/netdata'
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
|
|
build-images-quay:
|
|
|
|
|
name: Push Images to Quay.io
|
|
|
|
|
if: github.event_name == 'workflow_dispatch'
|
|
|
|
|
needs:
|
|
|
|
|
- build-images
|
|
|
|
|
- gen-tags
|
2025-02-03 16:26:11 +00:00
|
|
|
|
- matrix
|
2024-03-06 13:54:19 +00:00
|
|
|
|
strategy:
|
2025-02-03 16:26:11 +00:00
|
|
|
|
matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
|
|
|
|
|
runs-on: ${{ matrix.runner }}
|
2024-03-06 13:54:19 +00:00
|
|
|
|
steps:
|
|
|
|
|
- name: Checkout
|
|
|
|
|
id: checkout
|
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
with:
|
|
|
|
|
fetch-depth: 0
|
|
|
|
|
submodules: recursive
|
|
|
|
|
- name: Generate Artifact Name
|
|
|
|
|
id: artifact-name
|
|
|
|
|
run: echo "platform=$(echo ${{ matrix.platform }} | tr '/' '-' | cut -f 2- -d '-')" >> "${GITHUB_OUTPUT}"
|
|
|
|
|
- name: Download Cache
|
|
|
|
|
id: fetch-cache
|
|
|
|
|
uses: actions/download-artifact@v4
|
|
|
|
|
with:
|
|
|
|
|
name: cache-${{ steps.artifact-name.outputs.platform }}
|
|
|
|
|
path: /tmp/build-cache
|
|
|
|
|
- name: Mark image as official
|
|
|
|
|
id: env
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
|
|
|
|
run: echo "OFFICIAL_IMAGE=true" >> "${GITHUB_ENV}"
|
|
|
|
|
- name: Setup QEMU
|
|
|
|
|
id: qemu
|
2025-02-03 16:26:11 +00:00
|
|
|
|
if: matrix.qemu
|
2024-03-06 13:54:19 +00:00
|
|
|
|
uses: docker/setup-qemu-action@v3
|
|
|
|
|
- name: Setup Buildx
|
|
|
|
|
id: prepare
|
|
|
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
|
- name: Registry Login
|
|
|
|
|
id: login
|
2023-01-31 13:18:22 +00:00
|
|
|
|
if: github.repository == 'netdata/netdata'
|
2023-09-18 07:54:07 +00:00
|
|
|
|
uses: docker/login-action@v3
|
2023-01-31 13:18:22 +00:00
|
|
|
|
with:
|
2024-03-06 13:54:19 +00:00
|
|
|
|
registry: quay.io
|
|
|
|
|
username: ${{ secrets.NETDATABOT_QUAY_USERNAME }}
|
|
|
|
|
password: ${{ secrets.NETDATABOT_QUAY_TOKEN }}
|
|
|
|
|
- name: Build Image
|
|
|
|
|
id: build
|
2024-06-24 07:33:28 +00:00
|
|
|
|
uses: docker/build-push-action@v6
|
2024-03-06 13:54:19 +00:00
|
|
|
|
with:
|
|
|
|
|
platforms: ${{ matrix.platform }}
|
|
|
|
|
cache-from: type=local,src=/tmp/build-cache
|
2025-03-13 13:57:24 +00:00
|
|
|
|
build-args: |
|
|
|
|
|
OFFICIAL_IMAGE=${{ env.OFFICIAL_IMAGE }}
|
|
|
|
|
BUILD_VERSION=${{ github.event.inputs.version }}
|
|
|
|
|
BUILD_DATE=${{ github.event.repository.updated_at }}
|
2024-03-06 19:16:32 +00:00
|
|
|
|
outputs: type=image,name=quay.io/netdata/netdata,push-by-digest=true,name-canonical=true,push=true
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- name: Export Digest
|
|
|
|
|
id: export-digest
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
|
|
|
|
run: |
|
|
|
|
|
mkdir -p /tmp/digests
|
|
|
|
|
digest="${{ steps.build.outputs.digest }}"
|
|
|
|
|
touch "/tmp/digests/${digest#sha256:}"
|
|
|
|
|
- name: Upload digest
|
|
|
|
|
id: upload-digest
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
2025-02-24 08:18:57 +00:00
|
|
|
|
uses: actions/upload-artifact@v4.6.1
|
2024-03-06 13:54:19 +00:00
|
|
|
|
with:
|
|
|
|
|
name: quay-digests-${{ steps.artifact-name.outputs.platform }}
|
|
|
|
|
path: /tmp/digests/*
|
|
|
|
|
if-no-files-found: error
|
|
|
|
|
retention-days: 1
|
|
|
|
|
- name: Failure Notification
|
|
|
|
|
uses: rtCamp/action-slack-notify@v2
|
|
|
|
|
env:
|
|
|
|
|
SLACK_COLOR: 'danger'
|
|
|
|
|
SLACK_FOOTER: ''
|
|
|
|
|
SLACK_ICON_EMOJI: ':github-actions:'
|
|
|
|
|
SLACK_TITLE: 'Quay.io upload failed:'
|
|
|
|
|
SLACK_USERNAME: 'GitHub Actions'
|
|
|
|
|
SLACK_MESSAGE: |-
|
|
|
|
|
${{ github.repository }}: Creating or uploading Docker image for ${{ matrix.platform }} on Quay.io failed.
|
|
|
|
|
Checkout: ${{ steps.checkout.outcome }}
|
|
|
|
|
Determine artifact name: ${{ steps.artifact-name.outcome }}
|
|
|
|
|
Fetch build cache: ${{ steps.fetch-cache.outcome }}
|
|
|
|
|
Setup environment: ${{ steps.env.outcome }}
|
|
|
|
|
Setup QEMU: ${{ steps.qemu.outcome }}
|
|
|
|
|
Setup buildx: ${{ steps.prepare.outcome }}
|
|
|
|
|
Login to registry: ${{ steps.login.outcome }}
|
|
|
|
|
Build image: ${{ steps.build.outcome }}
|
|
|
|
|
Export digest: ${{ steps.export-digest.outcome }}
|
|
|
|
|
Upload digest: ${{ steps.upload-digest.outcome }}
|
|
|
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
|
if: >-
|
|
|
|
|
${{
|
|
|
|
|
failure()
|
|
|
|
|
&& github.repository == 'netdata/netdata'
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
|
|
publish-quay:
|
|
|
|
|
name: Consolidate and tag images for Quay.io
|
|
|
|
|
if: github.event_name == 'workflow_dispatch'
|
|
|
|
|
needs:
|
|
|
|
|
- build-images-quay
|
|
|
|
|
- gen-tags
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
steps:
|
2024-03-06 17:44:39 +00:00
|
|
|
|
- name: Checkout
|
|
|
|
|
id: checkout
|
|
|
|
|
uses: actions/checkout@v4
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- name: Download digests
|
|
|
|
|
id: fetch-digests
|
|
|
|
|
uses: actions/download-artifact@v4
|
|
|
|
|
with:
|
|
|
|
|
path: /tmp/digests
|
|
|
|
|
pattern: quay-digests-*
|
|
|
|
|
merge-multiple: true
|
|
|
|
|
- name: Setup Buildx
|
|
|
|
|
id: prepare
|
|
|
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
|
- name: Registry Login
|
|
|
|
|
id: login
|
2023-01-31 15:40:05 +00:00
|
|
|
|
if: github.repository == 'netdata/netdata'
|
2023-09-18 07:54:07 +00:00
|
|
|
|
uses: docker/login-action@v3
|
2023-01-31 15:40:05 +00:00
|
|
|
|
with:
|
|
|
|
|
registry: quay.io
|
|
|
|
|
username: ${{ secrets.NETDATABOT_QUAY_USERNAME }}
|
|
|
|
|
password: ${{ secrets.NETDATABOT_QUAY_TOKEN }}
|
2024-03-06 13:54:19 +00:00
|
|
|
|
- name: Create and Push Manifest
|
|
|
|
|
id: manifest
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
2024-04-02 13:13:10 +00:00
|
|
|
|
run: docker buildx imagetools create $(.github/scripts/gen-docker-imagetool-args.py /tmp/digests 'quay.io' "${{ needs.gen-tags.outputs.tags }}")
|
2022-07-13 11:17:37 +00:00
|
|
|
|
- name: Failure Notification
|
|
|
|
|
uses: rtCamp/action-slack-notify@v2
|
|
|
|
|
env:
|
|
|
|
|
SLACK_COLOR: 'danger'
|
|
|
|
|
SLACK_FOOTER: ''
|
|
|
|
|
SLACK_ICON_EMOJI: ':github-actions:'
|
2024-03-06 13:54:19 +00:00
|
|
|
|
SLACK_TITLE: 'Publishing Docker images on Quay.io failed:'
|
2022-07-13 11:17:37 +00:00
|
|
|
|
SLACK_USERNAME: 'GitHub Actions'
|
|
|
|
|
SLACK_MESSAGE: |-
|
2024-03-06 13:54:19 +00:00
|
|
|
|
${{ github.repository }}: Publishing Docker images on Quay.io failed.
|
2024-03-06 17:44:39 +00:00
|
|
|
|
Checkout: ${{ steps.checkout.outcome }}
|
2024-03-05 13:49:58 +00:00
|
|
|
|
Download digests: ${{ steps.fetch-digests.outcome }}
|
|
|
|
|
Setup buildx: ${{ steps.prepare.outcome }}
|
2024-03-06 13:54:19 +00:00
|
|
|
|
Login to registry: ${{ steps.login.outcome }}
|
|
|
|
|
Create and push manifest: ${{ steps.manifest.outcome }}
|
2022-07-13 11:17:37 +00:00
|
|
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
|
if: >-
|
|
|
|
|
${{
|
|
|
|
|
failure()
|
|
|
|
|
&& github.repository == 'netdata/netdata'
|
|
|
|
|
}}
|
2024-03-06 19:16:32 +00:00
|
|
|
|
|
|
|
|
|
build-images-ghcr:
|
|
|
|
|
name: Push Images to GHCR
|
|
|
|
|
if: github.event_name == 'workflow_dispatch'
|
|
|
|
|
needs:
|
|
|
|
|
- build-images
|
|
|
|
|
- gen-tags
|
2025-02-03 16:26:11 +00:00
|
|
|
|
- matrix
|
2024-03-06 19:16:32 +00:00
|
|
|
|
strategy:
|
2025-02-03 16:26:11 +00:00
|
|
|
|
matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
|
|
|
|
|
runs-on: ${{ matrix.runner }}
|
2024-03-06 19:16:32 +00:00
|
|
|
|
steps:
|
|
|
|
|
- name: Checkout
|
|
|
|
|
id: checkout
|
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
with:
|
|
|
|
|
fetch-depth: 0
|
|
|
|
|
submodules: recursive
|
|
|
|
|
- name: Generate Artifact Name
|
|
|
|
|
id: artifact-name
|
|
|
|
|
run: echo "platform=$(echo ${{ matrix.platform }} | tr '/' '-' | cut -f 2- -d '-')" >> "${GITHUB_OUTPUT}"
|
|
|
|
|
- name: Download Cache
|
|
|
|
|
id: fetch-cache
|
|
|
|
|
uses: actions/download-artifact@v4
|
|
|
|
|
with:
|
|
|
|
|
name: cache-${{ steps.artifact-name.outputs.platform }}
|
|
|
|
|
path: /tmp/build-cache
|
|
|
|
|
- name: Mark image as official
|
|
|
|
|
id: env
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
|
|
|
|
run: echo "OFFICIAL_IMAGE=true" >> "${GITHUB_ENV}"
|
|
|
|
|
- name: Setup QEMU
|
|
|
|
|
id: qemu
|
2025-02-03 16:26:11 +00:00
|
|
|
|
if: matrix.qemu
|
2024-03-06 19:16:32 +00:00
|
|
|
|
uses: docker/setup-qemu-action@v3
|
|
|
|
|
- name: Setup Buildx
|
|
|
|
|
id: prepare
|
|
|
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
|
- name: Registry Login
|
|
|
|
|
id: login
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
|
|
|
|
uses: docker/login-action@v3
|
|
|
|
|
with:
|
|
|
|
|
registry: ghcr.io
|
2024-03-08 13:50:27 +00:00
|
|
|
|
username: ${{ github.repository_owner }}
|
2024-03-06 19:16:32 +00:00
|
|
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
|
- name: Build Image
|
|
|
|
|
id: build
|
2024-06-24 07:33:28 +00:00
|
|
|
|
uses: docker/build-push-action@v6
|
2024-03-06 19:16:32 +00:00
|
|
|
|
with:
|
|
|
|
|
platforms: ${{ matrix.platform }}
|
|
|
|
|
cache-from: type=local,src=/tmp/build-cache
|
2025-03-13 13:57:24 +00:00
|
|
|
|
build-args: |
|
|
|
|
|
OFFICIAL_IMAGE=${{ env.OFFICIAL_IMAGE }}
|
|
|
|
|
BUILD_VERSION=${{ github.event.inputs.version }}
|
|
|
|
|
BUILD_DATE=${{ github.event.repository.updated_at }}
|
2024-03-06 19:16:32 +00:00
|
|
|
|
outputs: type=image,name=ghcr.io/netdata/netdata,push-by-digest=true,name-canonical=true,push=true
|
|
|
|
|
- name: Export Digest
|
|
|
|
|
id: export-digest
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
|
|
|
|
run: |
|
|
|
|
|
mkdir -p /tmp/digests
|
|
|
|
|
digest="${{ steps.build.outputs.digest }}"
|
|
|
|
|
touch "/tmp/digests/${digest#sha256:}"
|
|
|
|
|
- name: Upload digest
|
|
|
|
|
id: upload-digest
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
2025-02-24 08:18:57 +00:00
|
|
|
|
uses: actions/upload-artifact@v4.6.1
|
2024-03-06 19:16:32 +00:00
|
|
|
|
with:
|
|
|
|
|
name: ghcr-digests-${{ steps.artifact-name.outputs.platform }}
|
|
|
|
|
path: /tmp/digests/*
|
|
|
|
|
if-no-files-found: error
|
|
|
|
|
retention-days: 1
|
|
|
|
|
- name: Failure Notification
|
|
|
|
|
uses: rtCamp/action-slack-notify@v2
|
|
|
|
|
env:
|
|
|
|
|
SLACK_COLOR: 'danger'
|
|
|
|
|
SLACK_FOOTER: ''
|
|
|
|
|
SLACK_ICON_EMOJI: ':github-actions:'
|
|
|
|
|
SLACK_TITLE: 'GHCR upload failed:'
|
|
|
|
|
SLACK_USERNAME: 'GitHub Actions'
|
|
|
|
|
SLACK_MESSAGE: |-
|
|
|
|
|
${{ github.repository }}: Creating or uploading Docker image for ${{ matrix.platform }} on GHCR failed.
|
|
|
|
|
Checkout: ${{ steps.checkout.outcome }}
|
|
|
|
|
Determine artifact name: ${{ steps.artifact-name.outcome }}
|
|
|
|
|
Fetch build cache: ${{ steps.fetch-cache.outcome }}
|
|
|
|
|
Setup environment: ${{ steps.env.outcome }}
|
|
|
|
|
Setup QEMU: ${{ steps.qemu.outcome }}
|
|
|
|
|
Setup buildx: ${{ steps.prepare.outcome }}
|
|
|
|
|
Login to registry: ${{ steps.login.outcome }}
|
|
|
|
|
Build image: ${{ steps.build.outcome }}
|
|
|
|
|
Export digest: ${{ steps.export-digest.outcome }}
|
|
|
|
|
Upload digest: ${{ steps.upload-digest.outcome }}
|
|
|
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
|
if: >-
|
|
|
|
|
${{
|
|
|
|
|
failure()
|
|
|
|
|
&& github.repository == 'netdata/netdata'
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
|
|
publish-ghcr:
|
|
|
|
|
name: Consolidate and tag images for GHCR
|
|
|
|
|
if: github.event_name == 'workflow_dispatch'
|
|
|
|
|
needs:
|
2024-03-21 13:46:57 +00:00
|
|
|
|
- build-images-ghcr
|
2024-03-06 19:16:32 +00:00
|
|
|
|
- gen-tags
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
steps:
|
|
|
|
|
- name: Checkout
|
|
|
|
|
id: checkout
|
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
- name: Download digests
|
|
|
|
|
id: fetch-digests
|
|
|
|
|
uses: actions/download-artifact@v4
|
|
|
|
|
with:
|
|
|
|
|
path: /tmp/digests
|
|
|
|
|
pattern: ghcr-digests-*
|
|
|
|
|
merge-multiple: true
|
|
|
|
|
- name: Setup Buildx
|
|
|
|
|
id: prepare
|
|
|
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
|
- name: Registry Login
|
|
|
|
|
id: login
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
|
|
|
|
uses: docker/login-action@v3
|
|
|
|
|
with:
|
2024-03-08 13:50:27 +00:00
|
|
|
|
registry: ghcr.io
|
|
|
|
|
username: ${{ github.repository_owner }}
|
|
|
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
2024-03-06 19:16:32 +00:00
|
|
|
|
- name: Create and Push Manifest
|
|
|
|
|
id: manifest
|
|
|
|
|
if: github.repository == 'netdata/netdata'
|
2024-04-02 13:13:10 +00:00
|
|
|
|
run: docker buildx imagetools create $(.github/scripts/gen-docker-imagetool-args.py /tmp/digests 'ghcr.io' "${{ needs.gen-tags.outputs.tags }}")
|
2024-03-06 19:16:32 +00:00
|
|
|
|
- name: Failure Notification
|
|
|
|
|
uses: rtCamp/action-slack-notify@v2
|
|
|
|
|
env:
|
|
|
|
|
SLACK_COLOR: 'danger'
|
|
|
|
|
SLACK_FOOTER: ''
|
|
|
|
|
SLACK_ICON_EMOJI: ':github-actions:'
|
|
|
|
|
SLACK_TITLE: 'Publishing Docker images on GHCR failed:'
|
|
|
|
|
SLACK_USERNAME: 'GitHub Actions'
|
|
|
|
|
SLACK_MESSAGE: |-
|
|
|
|
|
${{ github.repository }}: Publishing Docker images on GHCR failed.
|
|
|
|
|
Checkout: ${{ steps.checkout.outcome }}
|
|
|
|
|
Download digests: ${{ steps.fetch-digests.outcome }}
|
|
|
|
|
Setup buildx: ${{ steps.prepare.outcome }}
|
|
|
|
|
Login to registry: ${{ steps.login.outcome }}
|
|
|
|
|
Create and push manifest: ${{ steps.manifest.outcome }}
|
|
|
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
|
if: >-
|
|
|
|
|
${{
|
|
|
|
|
failure()
|
|
|
|
|
&& github.repository == 'netdata/netdata'
|
|
|
|
|
}}
|
2024-03-27 13:07:02 +00:00
|
|
|
|
|
|
|
|
|
trigger-subsequent-workflows:
|
|
|
|
|
if: github.event_name == 'workflow_dispatch'
|
|
|
|
|
name: Trigger subsquent workflows for newly added versions
|
|
|
|
|
needs:
|
|
|
|
|
- publish-docker-hub
|
|
|
|
|
- gen-tags
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
steps:
|
|
|
|
|
- name: Checkout
|
|
|
|
|
id: checkout
|
|
|
|
|
uses: actions/checkout@v4
|
|
|
|
|
with:
|
|
|
|
|
submodules: recursive
|
|
|
|
|
- name: Trigger Helmchart PR
|
|
|
|
|
if: github.event_name == 'workflow_dispatch' && github.event.inputs.version != 'nightly' && github.repository == 'netdata/netdata'
|
|
|
|
|
id: trigger-helmchart
|
|
|
|
|
uses: benc-uk/workflow-dispatch@v1
|
|
|
|
|
with:
|
|
|
|
|
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }}
|
|
|
|
|
repo: netdata/helmchart
|
|
|
|
|
workflow: Agent Version PR
|
|
|
|
|
ref: refs/heads/master
|
2024-04-02 13:13:10 +00:00
|
|
|
|
inputs: '{"agent_version": "v${{ inputs.version }}"}'
|
2024-03-27 13:07:02 +00:00
|
|
|
|
- name: Trigger MSI build
|
|
|
|
|
if: github.event_name == 'workflow_dispatch' && github.event.inputs.version != 'nightly' && github.repository == 'netdata/netdata'
|
|
|
|
|
id: trigger-msi
|
|
|
|
|
uses: benc-uk/workflow-dispatch@v1
|
|
|
|
|
with:
|
|
|
|
|
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }}
|
|
|
|
|
repo: netdata/msi-installer
|
|
|
|
|
workflow: Build
|
|
|
|
|
ref: refs/heads/master
|
2024-04-01 15:26:27 +00:00
|
|
|
|
inputs: '{"tag": "stable", "pwd": "${{ secrets.MSI_CODE_SIGNING_PASSWORD }}"}'
|
2024-03-27 13:07:02 +00:00
|
|
|
|
- name: Failure Notification
|
|
|
|
|
uses: rtCamp/action-slack-notify@v2
|
|
|
|
|
env:
|
|
|
|
|
SLACK_COLOR: 'danger'
|
|
|
|
|
SLACK_FOOTER: ''
|
|
|
|
|
SLACK_ICON_EMOJI: ':github-actions:'
|
|
|
|
|
SLACK_TITLE: ':'
|
|
|
|
|
SLACK_USERNAME: 'GitHub Actions'
|
|
|
|
|
SLACK_MESSAGE: |-
|
|
|
|
|
${{ github.repository }}: Version cascade failed
|
|
|
|
|
Checkout: ${{ steps.checkout.outcome }}
|
|
|
|
|
Trigger Helmchart PR: ${{ steps.trigger-helmchart.outcome }}
|
|
|
|
|
Trigger MSI build: ${{ steps.trigger-msi.outcome }}
|
|
|
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
|
|
|
|
|
if: >-
|
|
|
|
|
${{
|
|
|
|
|
failure()
|
|
|
|
|
&& github.event_name != 'pull_request'
|
|
|
|
|
&& startsWith(github.ref, 'refs/heads/master')
|
|
|
|
|
&& github.repository == 'netdata/netdata'
|
|
|
|
|
}}
|