Skip to content

Publish Docker image #945

Publish Docker image

Publish Docker image #945

Workflow file for this run

name: Publish Docker image
on:
schedule:
- cron: '0 6 * * *'
push:
workflow_dispatch:
jobs:
validate:
runs-on: ubuntu-latest
outputs:
new: ${{ steps.check.outputs.new }}
version: ${{ steps.check.outputs.version }}
steps:
- name: Install depepndencies
run: sudo apt-get install -y curl jq
- name: Check new version
id: check
run: |
caddy_version=`curl -SsL https://api.github.com/repos/caddyserver/caddy/releases/latest | jq -r '.tag_name' | head -n 1`
caddy_version=${caddy_version#?}
echo "version=${caddy_version}" >> $GITHUB_OUTPUT
docker_version=`curl -sSL 'https://registry.hub.docker.com/v2/repositories/saltiresoul/caddy-cf/tags?page_size=100' | jq -r '."results"[]["name"] | select(.=="'${caddy_version}'")'`
if [ "${caddy_version}" == "${docker_version}" ]; then
echo "new=false" >> $GITHUB_OUTPUT
else
echo "new=true" >> $GITHUB_OUTPUT
fi
- name: Print outputs
run: echo version=${{steps.check.outputs.version}} new=${{steps.check.outputs.new}}
build-docker-images:
name: Build Docker Images
runs-on: ubuntu-latest
needs: validate
if: needs.validate.outputs.new == 'true'
permissions:
packages: write
contents: read
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- id: lowercase-repo-name
uses: ASzc/change-string-case-action@v6
with:
string: ${{ github.repository }}
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Log in to GitHub Docker Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GHCR_TOKEN }}
#https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables=
#https://github.com/docker/build-push-action
- name: Build and Push container image
uses: docker/build-push-action@v6
with:
context: .
push: true
platforms: linux/amd64,linux/arm64,linux/arm/v7
build-args: CADDY_VERSION=${{ needs.validate.outputs.version }}
tags: |
${{ steps.lowercase-repo-name.outputs.lowercase }}:latest
${{ steps.lowercase-repo-name.outputs.lowercase }}:${{ needs.validate.outputs.version }}
ghcr.io/${{ steps.lowercase-repo-name.outputs.lowercase }}:latest
ghcr.io/${{ steps.lowercase-repo-name.outputs.lowercase }}:${{ needs.validate.outputs.version }}