Create Docker images on tag #57
Workflow file for this run
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: Create Docker images on tag | |
on: | |
workflow_dispatch: | |
inputs: | |
retag-latest: | |
description: 'Retag latest Docker images' | |
required: true | |
type: string | |
default: "true" | |
options: | |
- "true" | |
- "false" | |
plugin-version: | |
description: 'Plugin version' | |
required: false | |
type: string | |
default: "LATEST" | |
env: | |
PLUGIN_VERSION: ${{ github.event.inputs.plugin-version != null && github.event.inputs.plugin-version || 'LATEST' }} | |
jobs: | |
plugins: | |
name: List Plugins | |
runs-on: ubuntu-latest | |
outputs: | |
plugins: ${{ steps.plugins.outputs.plugins }} | |
steps: | |
# Checkout | |
- uses: actions/checkout@v4 | |
# Get Plugins List | |
- name: Get Plugins List | |
uses: ./.github/actions/plugins-list | |
id: plugins | |
with: | |
plugin-version: ${{ env.PLUGIN_VERSION }} | |
docker: | |
name: Publish Docker | |
needs: [ plugins ] | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/v') | |
strategy: | |
matrix: | |
image: | |
- name: "-no-plugins" | |
plugins: "" | |
packages: "" | |
python-libs: "" | |
- name: "" | |
plugins: ${{needs.plugins.outputs.plugins}} | |
packages: python3 python3-venv python-is-python3 python3-pip nodejs npm curl zip unzip | |
python-libs: kestra | |
steps: | |
- uses: actions/checkout@v4 | |
# Vars | |
- name: Set image name | |
id: vars | |
run: | | |
TAG=${GITHUB_REF#refs/*/} | |
echo "tag=${TAG}" >> $GITHUB_OUTPUT | |
echo "plugins=${{ matrix.image.plugins }}" >> $GITHUB_OUTPUT | |
# Download release | |
- name: Download release | |
uses: robinraju/[email protected] | |
with: | |
tag: ${{steps.vars.outputs.tag}} | |
fileName: 'kestra-*' | |
out-file-path: build/executable | |
- name: Copy exe to image | |
run: | | |
cp build/executable/* docker/app/kestra && chmod +x docker/app/kestra | |
# Docker setup | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
# Docker Login | |
- name: Login to DockerHub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
# Docker Build and push | |
- name: Push to Docker Hub | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
push: true | |
tags: ${{ format('kestra/kestra:{0}{1}', steps.vars.outputs.tag, matrix.image.name) }} | |
platforms: linux/amd64,linux/arm64 | |
build-args: | | |
KESTRA_PLUGINS=${{ steps.vars.outputs.plugins }} | |
APT_PACKAGES=${{ matrix.image.packages }} | |
PYTHON_LIBRARIES=${{ matrix.image.python-libs }} | |
- name: Install regctl | |
if: github.event.inputs.retag-latest == 'true' | |
uses: regclient/actions/regctl-installer@main | |
- name: Retag to latest | |
if: github.event.inputs.retag-latest == 'true' | |
run: | | |
regctl image copy ${{ format('kestra/kestra:{0}{1}', steps.vars.outputs.tag, matrix.image.name) }} ${{ format('kestra/kestra:latest{0}', matrix.image.name) }} | |
end: | |
runs-on: ubuntu-latest | |
needs: | |
- docker | |
if: always() | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
steps: | |
# Slack | |
- name: Slack notification | |
uses: Gamesight/slack-workflow-status@master | |
if: ${{ always() && env.SLACK_WEBHOOK_URL != 0 }} | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
slack_webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }} | |
name: GitHub Actions | |
icon_emoji: ':github-actions:' | |
channel: 'C02DQ1A7JLR' # _int_git channel |