Files
test_repo/.gitea/workflows/build-and-push.yaml
gitea_admin a8d6610c96
Some checks failed
Build and Push Container Image / build-and-push (push) Failing after 11s
Update .gitea/workflows/build-and-push.yaml
2026-05-11 07:49:14 +00:00

86 lines
2.6 KiB
YAML

name: Build and Push Container Image
on:
push:
branches:
- main
tags:
- "v*"
jobs:
build-and-push:
runs-on: orchestration-platform
container:
image: docker:latest
steps:
- name: Install tools
run: |
apk add --no-cache git curl
- name: Checkout code
run: |
git clone --branch "${GITHUB_REF_NAME}" "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" .
- name: Check Dockerfile
run: |
test -f Dockerfile || { echo "Dockerfile not found"; exit 1; }
- name: Determine image metadata
id: meta
run: |
if echo "${{ gitea.ref }}" | grep -q "refs/tags/"; then
TAG=$(echo "${{ gitea.ref }}" | sed 's|refs/tags/||')
else
TAG="latest"
fi
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
- name: Build image
id: build
run: |
REGISTRY_HOST=$(echo "${{ gitea.server_url }}" | sed 's|https\?://||')
IMAGE="${REGISTRY_HOST}/${{ gitea.repository }}:${{ steps.meta.outputs.tag }}"
docker build \
--label "org.opencontainers.image.source=${{ gitea.server_url }}/${{ gitea.repository }}" \
--label "org.opencontainers.image.revision=${{ gitea.sha }}" \
-t "${IMAGE}" \
.
echo "registry_host=${REGISTRY_HOST}" >> "$GITHUB_OUTPUT"
echo "image=${IMAGE}" >> "$GITHUB_OUTPUT"
- name: Login to Gitea registry
run: |
REGISTRY_USERNAME="${{ secrets.REGISTRY_USERNAME }}"
REGISTRY_TOKEN="${{ secrets.REGISTRY_TOKEN }}"
if [ -z "${REGISTRY_TOKEN}" ]; then
REGISTRY_TOKEN="${{ secrets.GITEA_TOKEN }}"
fi
if [ -z "${REGISTRY_TOKEN}" ]; then
REGISTRY_TOKEN="${{ secrets.GITHUB_TOKEN }}"
fi
if [ -z "${REGISTRY_USERNAME}" ]; then
REGISTRY_USERNAME="${{ gitea.actor }}"
fi
if [ -z "${REGISTRY_USERNAME}" ]; then
echo "Registry username is missing. Set REGISTRY_USERNAME or run the workflow with a valid Gitea actor."
exit 1
fi
if [ -z "${REGISTRY_TOKEN}" ]; then
echo "Registry token is missing. Set REGISTRY_TOKEN, GITEA_TOKEN, or enable the built-in GITHUB_TOKEN for this workflow."
exit 1
fi
echo "${REGISTRY_TOKEN}" | docker login \
"${{ steps.build.outputs.registry_host }}" \
--username "${REGISTRY_USERNAME}" \
--password-stdin
- name: Push image
run: |
docker push "${{ steps.build.outputs.image }}"