netdata/.github/workflows/docker.yml

123 lines
3.7 KiB
YAML

---
name: Docker
on:
push:
branches:
- master
pull_request: null
workflow_dispatch:
inputs:
version:
name: Version Tag
default: nightly
required: true
env:
DO_NOT_TRACK: 1
jobs:
docker-test:
name: Docker Runtime Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive
- name: Setup Buildx
uses: docker/setup-buildx-action@v1
- name: Test Build
uses: docker/build-push-action@v2
with:
load: true
push: false
tags: netdata/netdata:test
- name: Test Image
run: .github/scripts/docker-test.sh
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
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive
- name: Setup QEMU
if: matrix.platforms != 'linux/i386'
uses: docker/setup-qemu-action@v1
- name: Setup Buildx
uses: docker/setup-buildx-action@v1
- name: Build
uses: docker/build-push-action@v2
with:
platforms: ${{ matrix.platforms }}
load: false
push: false
tags: netdata/netdata:test
docker-publish:
if: github.event_name == 'workflow_dispatch'
name: Docker Build and Publish
needs: docker-test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive
- name: Determine which tags to use
if: github.event.inputs.version != 'nightly'
run: |
echo "tags=netdata/netdata:latest,netdata/netdata:stable,$(.github/scripts/gen-docker-tags.py ${{ github.event.inputs.version }})" >> $GITHUB_ENV
- name: Determine which tags to use
if: github.event.inputs.version == 'nightly'
run: |
echo "tags=netdata/netdata:latest,netdata/netdata:edge" >> $GITHUB_ENV
- name: Setup QEMU
uses: docker/setup-qemu-action@v1
- name: Setup Buildx
uses: docker/setup-buildx-action@v1
- name: Docker Hub Login
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
- name: Docker Build
uses: docker/build-push-action@v2
with:
platforms: linux/amd64,linux/i386,linux/arm/v7,linux/arm64
push: true
tags: ${{ env.tags }}
- 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: "Docker image build failed."
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
if: >-
${{
failure()
&& github.event_name != 'pull_request'
&& startsWith(github.ref, 'refs/heads/master')
}}
- name: Trigger Helmchart PR
if: github.event_name == 'workflow_dispatch' && github.event.inputs.version != 'nightly'
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": "${{ github.event.inputs.version }}"}'