chore(ci): use verified build push action
This commit is contained in:
parent
34231e29ed
commit
b5bec9722d
111
.github/actions/docker-build-push/action.yml
vendored
111
.github/actions/docker-build-push/action.yml
vendored
@ -1,111 +0,0 @@
|
||||
name: Docker Build Push
|
||||
description: Build and push Docker images using docker buildx
|
||||
|
||||
inputs:
|
||||
context:
|
||||
description: Build context
|
||||
required: false
|
||||
default: .
|
||||
file:
|
||||
description: Dockerfile path
|
||||
required: false
|
||||
default: Dockerfile
|
||||
platforms:
|
||||
description: Build platforms
|
||||
required: false
|
||||
default: linux/amd64
|
||||
push:
|
||||
description: Push image
|
||||
required: false
|
||||
default: false
|
||||
tags:
|
||||
description: Image tags
|
||||
required: false
|
||||
build-args:
|
||||
description: Build arguments
|
||||
required: false
|
||||
labels:
|
||||
description: Build labels
|
||||
required: false
|
||||
cache-from:
|
||||
description: Cache sources
|
||||
required: false
|
||||
cache-to:
|
||||
description: Cache destinations
|
||||
required: false
|
||||
outputs:
|
||||
description: Build outputs
|
||||
required: false
|
||||
|
||||
outputs:
|
||||
digest:
|
||||
description: Image digest
|
||||
value: ${{ steps.build.outputs.digest }}
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- shell: bash
|
||||
id: build
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
# Parse build args
|
||||
BUILD_ARGS=""
|
||||
if [ -n "${{ inputs.build-args }}" ]; then
|
||||
echo "${{ inputs.build-args }}" | while IFS= read -r line; do
|
||||
[ -n "$line" ] && BUILD_ARGS="$BUILD_ARGS --build-arg $line"
|
||||
done
|
||||
fi
|
||||
|
||||
# Parse labels
|
||||
LABELS=""
|
||||
if [ -n "${{ inputs.labels }}" ]; then
|
||||
echo "${{ inputs.labels }}" | while IFS= read -r line; do
|
||||
[ -n "$line" ] && LABELS="$LABELS --label $line"
|
||||
done
|
||||
fi
|
||||
|
||||
# Parse outputs
|
||||
OUTPUTS=""
|
||||
if [ -n "${{ inputs.outputs }}" ]; then
|
||||
OUTPUTS="--output ${{ inputs.outputs }}"
|
||||
elif [ "${{ inputs.push }}" = "true" ]; then
|
||||
OUTPUTS="--type=registry"
|
||||
else
|
||||
OUTPUTS="--type=image,push=false"
|
||||
fi
|
||||
|
||||
# Parse tags
|
||||
TAGS_ARG=""
|
||||
if [ -n "${{ inputs.tags }}" ]; then
|
||||
TAGS_ARG="--tag $(echo '${{ inputs.tags }}' | tr '\n' ' ' | sed 's/ */ --tag /g')"
|
||||
fi
|
||||
|
||||
# Build command
|
||||
echo "::group::Docker Buildx Build"
|
||||
docker buildx build \
|
||||
--platform ${{ inputs.platforms }} \
|
||||
--file ${{ inputs.file }} \
|
||||
$TAGS_ARG \
|
||||
$BUILD_ARGS \
|
||||
$LABELS \
|
||||
$OUTPUTS \
|
||||
--progress=plain \
|
||||
${{ inputs.context }}
|
||||
|
||||
BUILD_STATUS=$?
|
||||
|
||||
# Get digest if successful
|
||||
if [ $BUILD_STATUS -eq 0 ] && [ "${{ inputs.push }}" = "true" ]; then
|
||||
# Extract first tag
|
||||
FIRST_TAG=$(echo "${{ inputs.tags }}" | head -n1)
|
||||
# Get image digest by pulling image info
|
||||
DIGEST=$(docker buildx imagetools inspect $FIRST_TAG --format '{{json .Manifest.Digest}}' 2>/dev/null || echo "")
|
||||
if [ -n "$DIGEST" ]; then
|
||||
echo "digest=$DIGEST" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
fi
|
||||
|
||||
exit $BUILD_STATUS
|
||||
echo "::endgroup::"
|
||||
2
.github/workflows/build-images.yml
vendored
2
.github/workflows/build-images.yml
vendored
@ -45,7 +45,7 @@ jobs:
|
||||
|
||||
- name: Build Service Image (per-arch)
|
||||
id: build
|
||||
uses: ./.github/actions/docker-build-push
|
||||
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8
|
||||
with:
|
||||
context: ${{ matrix.service.workdir }}
|
||||
file: ${{ matrix.service.dockerfile }}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user