Skip to content

Build and Publish Multi-Arch Docker Image #15

Build and Publish Multi-Arch Docker Image

Build and Publish Multi-Arch Docker Image #15

name: Build and Publish Multi-Arch Docker Image
on:
schedule:
- cron: '0 3 * * 1'
workflow_dispatch:
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Fetch latest release tag
run: |
latest_tag=$(curl -s https://api.github.com/repos/Kozea/Radicale/releases/latest | jq -r .tag_name)
echo "latest_tag=$latest_tag" >> $GITHUB_ENV
- name: Check last built version
run: |
last_built=$(cat .last_built_version 2>/dev/null || echo "")
echo "last_built=$last_built" >> $GITHUB_ENV
- name: Build and push if new release
if: env.latest_tag != env.last_built || github.event_name == 'workflow_dispatch'
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
run: |
git clone --branch ${{ env.latest_tag }} https://github.com/Kozea/Radicale.git
echo "${{ env.latest_tag }}" > .last_built_version
echo $DOCKERHUB_TOKEN | docker login -u $DOCKERHUB_USERNAME --password-stdin
docker buildx create --use
docker buildx build \
--platform linux/amd64,linux/arm64 \
--file Radicale/Dockerfile \
--push \
--tag $DOCKERHUB_USERNAME/radicale:${{ env.latest_tag }} \
--tag $DOCKERHUB_USERNAME/radicale:latest \
Radicale
- name: Save built version
if: env.latest_tag != env.last_built
run: |
echo "${{ env.latest_tag }}" > .last_built_version