Skip to content

Bump docker/login-action from 4.0.0 to 4.1.0 in the docker-actions gr… #974

Bump docker/login-action from 4.0.0 to 4.1.0 in the docker-actions gr…

Bump docker/login-action from 4.0.0 to 4.1.0 in the docker-actions gr… #974

Workflow file for this run

name: Release
on:
push:
branches:
- main
- release/*
paths:
- .github/workflows/release.yml
- packages/**
- root/**
- .dockerignore
- Dockerfile
permissions:
contents: write
packages: write
concurrency: release-${{github.ref}}
jobs:
cd:
name: CD
runs-on: ubuntu-latest
timeout-minutes: 30
env:
PLATFORMS: linux/amd64,linux/arm/v7,linux/arm64,linux/s390x,linux/riscv64,linux/ppc64le
PACKAGE: ghcr.io/${{github.repository_owner}}/base-ubuntu
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Set up QEMU
uses: docker/setup-qemu-action@v4.0.0
with:
platforms: ${{env.PLATFORMS}}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4.0.0
id: buildx
- name: Determine info
id: info
shell: bash
run: |
VERSION=$(grep -E '^FROM ubuntu:[a-z]+-[0-9]+$' Dockerfile)
VERSION=${VERSION##*:}
STREAM=${VERSION%-*}
if [[ -z "$STREAM" ]]; then
STREAM=$VERSION
fi
URL=https://api.github.com/repos/${{github.repository}}
AUTHORIZATION_HEADER="Authorization: token $GITHUB_TOKEN"
FILTER=".[].tag_name|select(startswith(\"$VERSION\"))"
FILTER="$FILTER|sub(\"^$VERSION$DELIMITER\";\"\")|tonumber"
FILTER="[$FILTER]|max"
BUILD_NUMBER=$(
curl -H "$AUTHORIZATION_HEADER" -sfSL "$URL/releases" |
jq -r "$FILTER"
)
if [[ -z "$BUILD_NUMBER" || "$BUILD_NUMBER" == 'null' ]]; then
BUILD_NUMBER='0'
else
RELEASE_SHA=$(
curl -H "$AUTHORIZATION_HEADER" \
-sfSL "$URL/git/refs/tags/$VERSION$DELIMITER$BUILD_NUMBER" |
jq -r '.object.sha'
)
if [[ "$RELEASE_SHA" == "$GITHUB_SHA" ]]; then
echo 'Uh oh...😧 something went wrong'
echo 'The current release is already at the current commit 😕'
exit 1
fi
BUILD_NUMBER=$((BUILD_NUMBER + 1))
fi
RELEASE_VERSION="$VERSION$DELIMITER$BUILD_NUMBER"
RELEASE_BRANCH=${GITHUB_REF#refs/heads/}
DOCKER_TAGS="$PACKAGE:$RELEASE_VERSION"
DOCKER_TAGS="$DOCKER_TAGS,$PACKAGE:$STREAM"
RELEASE_LATEST='false'
if [[ "$RELEASE_BRANCH" == 'main' ]]; then
DOCKER_TAGS="$DOCKER_TAGS,$PACKAGE:latest"
RELEASE_LATEST='true'
fi
RELEASE_COMMIT="$GITHUB_SHA"
DATETIME=$(date --utc +%FT%T.%3NZ)
echo 'Create Release: true'
echo "Datetime: $DATETIME"
echo "Release Version: $RELEASE_VERSION"
echo "Release Branch: $RELEASE_BRANCH"
echo "Release Commit: $RELEASE_COMMIT"
echo "Docker Tags: $DOCKER_TAGS"
echo "Release Latest: $RELEASE_LATEST"
echo 'create-release=true' >> $GITHUB_OUTPUT
echo "datetime=$DATETIME" >> $GITHUB_OUTPUT
echo "release-version=$RELEASE_VERSION" >> $GITHUB_OUTPUT
echo "release-branch=$RELEASE_BRANCH" >> $GITHUB_OUTPUT
echo "release-commit=$RELEASE_COMMIT" >> $GITHUB_OUTPUT
echo "docker-tags=$DOCKER_TAGS" >> $GITHUB_OUTPUT
echo "release-latest=$RELEASE_LATEST" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{github.token}}
DELIMITER: '.'
- name: Login to registry
if: steps.info.outputs.create-release
uses: docker/login-action@v4.1.0
with:
registry: ghcr.io
username: ${{github.actor}}
password: ${{github.token}}
- name: Build & push image
if: steps.info.outputs.create-release
uses: docker/build-push-action@v7.0.0
with:
context: .
builder: ${{steps.buildx.outputs.name}}
platforms: ${{env.PLATFORMS}}
build-args: |
BUILD_CREATED=${{steps.info.outputs.datetime}}
BUILD_VERSION=${{steps.info.outputs.release-version}}
BUILD_REF_NAME=${{steps.info.outputs.release-branch}}
BUILD_REVISION=${{steps.info.outputs.release-commit}}
tags: ${{steps.info.outputs.docker-tags}}
cache-from: type=gha
cache-to: type=gha,mode=max
push: true
- name: Create release
if: steps.info.outputs.create-release
run: |
git tag "$TAG" "$COMMIT"
git push origin tag "$TAG"
gh release create "$TAG" \
--target "$BRANCH" \
--title "$TAG" \
--verify-tag \
--generate-notes \
--latest="$LATEST"
env:
TAG: ${{steps.info.outputs.release-version}}
BRANCH: ${{steps.info.outputs.release-branch}}
COMMIT: ${{steps.info.outputs.release-commit}}
LATEST: ${{steps.info.outputs.release-latest}}
GITHUB_TOKEN: ${{github.token}}