Skip to content

Update docker-image.yml #30

Update docker-image.yml

Update docker-image.yml #30

Workflow file for this run

name: Docker Image CI
on:
workflow_dispatch:
release:
types: [published]
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
config:
runs-on: "ubuntu-latest"
outputs:
has-secrets: ${{ steps.check.outputs.has-secrets }}
steps:
- name: "Check for secrets"
id: check
shell: bash
run: |
if [ -n "${{ (secrets.DOCKERHUB_USER != '' && secrets.DOCKERHUB_TOKEN != '') || '' }}" ]; then
echo "has-secrets=1" >> "$GITHUB_OUTPUT"
echo "has secrets!"
else
echo "no secrets!"
fi
build-image:
name: Build ${{ matrix.image.version }}
needs: config
if: needs.config.outputs.has-secrets
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
strategy:
fail-fast: false
matrix:
image:
- {version: "3.9-slim-bookworm", suffix: ''}
- {version: "3.10-slim-bookworm", suffix: '-py310'}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ github.repository }}
flavor: |
latest=false
suffix=${{ matrix.image.suffix }}
tags: |
type=sha,prefix=,format=long
type=ref,event=pr
type=raw,value=master,enable={{is_default_branch}}
type=raw,value=latest,enable={{is_default_branch}}
type=pep440,pattern={{version}}
labels: |
org.opencontainers.image.authors=${{ github.actor }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and load
uses: docker/build-push-action@v5
with:
context: .
load: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64
cache-from: type=registry,ref=ghcr.io/sebastianliebscher/fluentd-exchangerates-cache:${{ github.ref_name }}
cache-to: type=registry,ref=ghcr.io/sebastianliebscher/fluentd-exchangerates-cache:${{ github.ref_name }}
build-args: |
IMAGE=${{ matrix.image.version }}
- name: Login to Docker Hub
if: needs.config.outputs.has-secrets
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64
cache-from: type=registry,ref=ghcr.io/${{ github.repository }}-cache:${{ github.ref_name }}
cache-to: type=registry,ref=ghcr.io/${{ github.repository }}-cache:${{ github.ref_name }}
build-args: |
IMAGE=${{ matrix.image.version }}