Updated Cloud Notification Integrations with the new schema (#15628) #156
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Docker | |
on: | |
push: | |
branches: | |
- master | |
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: | |
description: Version Tag | |
default: nightly | |
required: true | |
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: | |
- name: Checkout | |
id: checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Setup Buildx | |
id: prepare | |
uses: docker/setup-buildx-action@v2 | |
- name: Test Build | |
id: build | |
uses: docker/build-push-action@v4 | |
with: | |
load: true | |
push: false | |
tags: netdata/netdata:test | |
- name: Test Image | |
id: test | |
run: .github/scripts/docker-test.sh | |
- name: Failure Notification | |
uses: rtCamp/action-slack-notify@v2 | |
env: | |
SLACK_COLOR: 'danger' | |
SLACK_FOOTER: '' | |
SLACK_ICON_EMOJI: ':github-actions:' | |
SLACK_TITLE: 'Docker runtime testing failed:' | |
SLACK_USERNAME: 'GitHub Actions' | |
SLACK_MESSAGE: |- | |
${{ github.repository }}: Building or testing Docker image for linux/amd64 failed. | |
CHeckout: ${{ steps.checkout.outcome }} | |
Setup buildx: ${{ steps.prepare.outcome }} | |
Build image: ${{ steps.build.outcome }} | |
Test image: ${{ steps.test.outcome }} | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
if: >- | |
${{ | |
failure() | |
&& github.event_name != 'pull_request' | |
&& startsWith(github.ref, 'refs/heads/master') | |
&& github.repository == 'netdata/netdata' | |
}} | |
docker-ci: | |
if: github.event_name != 'workflow_dispatch' | |
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: | |
- name: Checkout | |
id: checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Setup QEMU | |
id: qemu | |
if: matrix.platforms != 'linux/i386' | |
uses: docker/setup-qemu-action@v2 | |
- name: Setup Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Build | |
id: build | |
uses: docker/build-push-action@v4 | |
with: | |
platforms: ${{ matrix.platforms }} | |
load: false | |
push: false | |
tags: netdata/netdata:test | |
- name: Failure Notification | |
uses: rtCamp/action-slack-notify@v2 | |
env: | |
SLACK_COLOR: 'danger' | |
SLACK_FOOTER: '' | |
SLACK_ICON_EMOJI: ':github-actions:' | |
SLACK_TITLE: 'Docker build testing failed:' | |
SLACK_USERNAME: 'GitHub Actions' | |
SLACK_MESSAGE: |- | |
${{ github.repository }}: Building Docker image for ${{ matrix.platforms }} failed. | |
CHeckout: ${{ steps.checkout.outcome }} | |
Setup QEMU: ${{ steps.qemu.outcome }} | |
Setup buildx: ${{ steps.buildx.outcome }} | |
Build image: ${{ steps.build.outcome }} | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
if: >- | |
${{ | |
failure() | |
&& github.event_name != 'pull_request' | |
&& startsWith(github.ref, 'refs/heads/master') | |
&& github.repository == 'netdata/netdata' | |
}} | |
normalize-tag: # Fix the release tag if needed | |
name: Normalize Release Tag | |
runs-on: ubuntu-latest | |
if: github.event_name == 'workflow_dispatch' | |
outputs: | |
tag: ${{ steps.tag.outputs.tag }} | |
steps: | |
- name: Normalize Tag | |
id: tag | |
run: | | |
if echo ${{ github.event.inputs.version }} | grep -qE '^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$'; then | |
echo "tag=v${{ github.event.inputs.version }}" >> "${GITHUB_OUTPUT}" | |
else | |
echo "tag=${{ github.event.inputs.version }}" >> "${GITHUB_OUTPUT}" | |
fi | |
docker-publish: | |
if: github.event_name == 'workflow_dispatch' | |
name: Docker Build and Publish | |
needs: | |
- docker-test | |
- normalize-tag | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
id: checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Determine which tags to use | |
id: release-tags | |
if: github.event.inputs.version != 'nightly' | |
run: | | |
echo "tags=netdata/netdata:latest,netdata/netdata:stable,ghcr.io/netdata/netdata:latest,ghcr.io/netdata/netdata:stable,quay.io/netdata/netdata:latest,quay.io/netdata/netdata:stable,$(.github/scripts/gen-docker-tags.py ${{ needs.normalize-tag.outputs.tag }} '')" \ | |
>> "${GITHUB_ENV}" | |
- name: Determine which tags to use | |
id: nightly-tags | |
if: github.event.inputs.version == 'nightly' | |
run: | | |
echo "tags=netdata/netdata:latest,netdata/netdata:edge,ghcr.io/netdata/netdata:latest,ghcr.io/netdata/netdata:edge,quay.io/netdata/netdata:latest,quay.io/netdata/netdata:edge" >> "${GITHUB_ENV}" | |
- name: Mark image as official | |
id: env | |
if: github.repository == 'netdata/netdata' | |
run: echo "OFFICIAL_IMAGE=true" >> "${GITHUB_ENV}" | |
- name: Setup QEMU | |
id: qemu | |
uses: docker/setup-qemu-action@v2 | |
- name: Setup Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Docker Hub Login | |
id: docker-hub-login | |
if: github.repository == 'netdata/netdata' | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_PASSWORD }} | |
- name: GitHub Container Registry Login | |
id: ghcr-login | |
if: github.repository == 'netdata/netdata' | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Quay.io Login | |
id: quay-login | |
if: github.repository == 'netdata/netdata' | |
uses: docker/login-action@v2 | |
with: | |
registry: quay.io | |
username: ${{ secrets.NETDATABOT_QUAY_USERNAME }} | |
password: ${{ secrets.NETDATABOT_QUAY_TOKEN }} | |
- name: Docker Build | |
id: build | |
uses: docker/build-push-action@v4 | |
with: | |
platforms: linux/amd64,linux/i386,linux/arm/v7,linux/arm64,linux/ppc64le | |
push: ${{ github.repository == 'netdata/netdata' }} | |
tags: ${{ env.tags }} | |
build-args: OFFICIAL_IMAGE=${{ env.OFFICIAL_IMAGE }} | |
- 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 }}: Failed to build or publish Docker images. | |
CHeckout: ${{ steps.checkout.outcome }} | |
Generate release tags: ${{ steps.release-tags.outcome }} | |
Generate nightly tags: ${{ steps.nightly-tags.outcome }} | |
Setup environment: ${{ steps.env.outcome }} | |
Setup QEMU: ${{ steps.qemu.outcome }} | |
Setup buildx: ${{ steps.buildx.outcome }} | |
Login to DockerHub: ${{ steps.docker-hub-login.outcome }} | |
Login to GHCR: ${{ steps.ghcr-login.outcome }} | |
Login to Quay: ${{ steps.quay-login.outcome }} | |
Build and publish images: ${{ steps.build.outcome }} | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
if: >- | |
${{ | |
failure() | |
&& github.event_name != 'pull_request' | |
&& startsWith(github.ref, 'refs/heads/master') | |
&& github.repository == 'netdata/netdata' | |
}} | |
- name: Trigger Helmchart PR | |
if: github.event_name == 'workflow_dispatch' && github.event.inputs.version != 'nightly' && github.repository == 'netdata/netdata' | |
uses: benc-uk/workflow-dispatch@v1 | |
with: | |
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} | |
repo: netdata/helmchart | |
workflow: Agent Version PR | |
ref: refs/heads/master | |
inputs: '{"agent_version": "${{ needs.normalize-tag.outputs.tag }}"}' | |
- name: Trigger MSI build | |
if: github.event_name == 'workflow_dispatch' && github.event.inputs.version != 'nightly' && github.repository == 'netdata/netdata' | |
uses: benc-uk/workflow-dispatch@v1 | |
with: | |
token: ${{ secrets.NETDATABOT_GITHUB_TOKEN }} | |
repo: netdata/msi-installer | |
workflow: Build | |
ref: refs/heads/master | |
inputs: '{"tag": "${{ needs.normalize-tag.outputs.tag }}", "pwd": "${{ secrets.MSI_CODE_SIGNING_PASSWORD }}"}' | |
docker-dbg-publish: | |
if: github.event_name == 'workflow_dispatch' | |
name: Docker Build and Publish (Debugging Image) | |
needs: | |
- docker-test | |
- normalize-tag | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
id: checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Determine which tags to use | |
id: release-tags | |
if: github.event.inputs.version != 'nightly' | |
run: | | |
echo "tags=netdata/netdata-debug:latest,netdata/netdata-debug:stable,ghcr.io/netdata/netdata-debug:latest,ghcr.io/netdata/netdata-debug:stable,quay.io/netdata/netdata-debug:latest,quay.io/netdata/netdata-debug:stable,$(.github/scripts/gen-docker-tags.py ${{ needs.normalize-tag.outputs.tag }} '-debug')" \ | |
>> "${GITHUB_ENV}" | |
- name: Determine which tags to use | |
id: nightly-tags | |
if: github.event.inputs.version == 'nightly' | |
run: | | |
echo "tags=netdata/netdata-debug:latest,netdata/netdata-debug:edge,ghcr.io/netdata/netdata-debug:latest,ghcr.io/netdata/netdata-debug:edge,quay.io/netdata/netdata-debug:latest,quay.io/netdata/netdata-debug:edge" >> "${GITHUB_ENV}" | |
- name: Mark image as official | |
id: env | |
if: github.repository == 'netdata/netdata' | |
run: echo "OFFICIAL_IMAGE=true" >> "${GITHUB_ENV}" | |
- name: Setup QEMU | |
id: qemu | |
uses: docker/setup-qemu-action@v2 | |
- name: Setup Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Docker Hub Login | |
id: docker-hub-login | |
if: github.repository == 'netdata/netdata' | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
password: ${{ secrets.DOCKER_HUB_PASSWORD }} | |
- name: GitHub Container Registry Login | |
id: ghcr-login | |
if: github.repository == 'netdata/netdata' | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Quay.io Login | |
id: quay-login | |
if: github.repository == 'netdata/netdata' | |
uses: docker/login-action@v2 | |
with: | |
registry: quay.io | |
username: ${{ secrets.NETDATABOT_QUAY_USERNAME }} | |
password: ${{ secrets.NETDATABOT_QUAY_TOKEN }} | |
- name: Docker Build | |
id: build | |
uses: docker/build-push-action@v4 | |
with: | |
platforms: linux/amd64,linux/i386,linux/arm/v7,linux/arm64,linux/ppc64le | |
push: ${{ github.repository == 'netdata/netdata' }} | |
tags: ${{ env.tags }} | |
build-args: | | |
OFFICIAL_IMAGE=${{ env.OFFICIAL_IMAGE }} | |
DEBUG_BUILD=1 | |
- name: Failure Notification | |
uses: rtCamp/action-slack-notify@v2 | |
env: | |
SLACK_COLOR: 'danger' | |
SLACK_FOOTER: '' | |
SLACK_ICON_EMOJI: ':github-actions:' | |
SLACK_TITLE: 'Docker Debug Build failed:' | |
SLACK_USERNAME: 'GitHub Actions' | |
SLACK_MESSAGE: |- | |
${{ github.repository }}: Failed to build or publish Docker debug images. | |
Checkout: ${{ steps.checkout.outcome }} | |
Generate release tags: ${{ steps.release-tags.outcome }} | |
Generate nightly tags: ${{ steps.nightly-tags.outcome }} | |
Setup environment: ${{ steps.env.outcome }} | |
Setup QEMU: ${{ steps.qemu.outcome }} | |
Setup buildx: ${{ steps.buildx.outcome }} | |
Login to DockerHub: ${{ steps.docker-hub-login.outcome }} | |
Login to GHCR: ${{ steps.ghcr-login.outcome }} | |
Login to Quay: ${{ steps.quay-login.outcome }} | |
Build and publish images: ${{ steps.build.outcome }} | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} | |
if: >- | |
${{ | |
failure() | |
&& github.event_name != 'pull_request' | |
&& startsWith(github.ref, 'refs/heads/master') | |
&& github.repository == 'netdata/netdata' | |
}} |