refactor: enhance git checkout step and improve registry variable handling in Docker workflow
Some checks failed
Build and Push Docker Image / docker (push) Failing after 4s
Some checks failed
Build and Push Docker Image / docker (push) Failing after 4s
This commit is contained in:
@@ -25,26 +25,50 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
DOCKER_TLS_CERTDIR: ""
|
DOCKER_TLS_CERTDIR: ""
|
||||||
steps:
|
steps:
|
||||||
|
- name: Checkout (git)
|
||||||
|
env:
|
||||||
|
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
apk add --no-cache git ca-certificates
|
||||||
|
REF="$GITHUB_REF"
|
||||||
|
REPO_URL="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY"
|
||||||
|
if echo "$REF" | grep -q '^refs/heads/'; then
|
||||||
|
NAME=${REF#refs/heads/}
|
||||||
|
git -c http.extraHeader="Authorization: Bearer $GITEA_TOKEN" clone --depth 1 --branch "$NAME" "$REPO_URL" .
|
||||||
|
elif echo "$REF" | grep -q '^refs/tags/'; then
|
||||||
|
NAME=${REF#refs/tags/}
|
||||||
|
git -c http.extraHeader="Authorization: Bearer $GITEA_TOKEN" clone --depth 1 --branch "$NAME" "$REPO_URL" .
|
||||||
|
else
|
||||||
|
git -c http.extraHeader="Authorization: Bearer $GITEA_TOKEN" clone --depth 1 "$REPO_URL" .
|
||||||
|
git fetch --depth 1 origin "$GITHUB_SHA"
|
||||||
|
git checkout --detach "$GITHUB_SHA"
|
||||||
|
fi
|
||||||
- name: Define Registry Variables
|
- name: Define Registry Variables
|
||||||
id: vars
|
id: vars
|
||||||
|
env:
|
||||||
|
IMAGE_NAME_VAR: ${{ vars.IMAGE_NAME }}
|
||||||
|
GITEA_REGISTRY_VAR: ${{ vars.GITEA_REGISTRY }}
|
||||||
run: |
|
run: |
|
||||||
# Derive registry/namespace/image from Gitea context, normalize to lowercase
|
set -euo pipefail
|
||||||
OWNER="${{ gitea.repository_owner }}"
|
# Derive registry/namespace/image from environment provided by runner
|
||||||
REPO="${{ gitea.repository_name }}"
|
# GITHUB_REPOSITORY is like "owner/repo"
|
||||||
|
OWNER=${GITHUB_REPOSITORY%%/*}
|
||||||
|
REPO=${GITHUB_REPOSITORY#*/}
|
||||||
OWNER=$(echo "$OWNER" | tr '[:upper:]' '[:lower:]')
|
OWNER=$(echo "$OWNER" | tr '[:upper:]' '[:lower:]')
|
||||||
REPO=$(echo "$REPO" | tr '[:upper:]' '[:lower:]')
|
REPO=$(echo "$REPO" | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
# Allow overriding image name via repository variable IMAGE_NAME; default to repo name
|
# Allow overriding image name via repository variable IMAGE_NAME; default to repo name
|
||||||
IMAGE_NAME="${{ vars.IMAGE_NAME }}"
|
IMAGE_NAME="$IMAGE_NAME_VAR"
|
||||||
if [ -z "$IMAGE_NAME" ]; then IMAGE_NAME="$REPO"; fi
|
if [ -z "$IMAGE_NAME" ]; then IMAGE_NAME="$REPO"; fi
|
||||||
IMAGE_NAME=$(echo "$IMAGE_NAME" | tr '[:upper:]' '[:lower:]')
|
IMAGE_NAME=$(echo "$IMAGE_NAME" | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
# Gitea exposes server URL like https://gitea.example.com
|
# Prefer explicit var GITEA_REGISTRY; else, use the same host as server URL
|
||||||
# Prefer explicit var GITEA_REGISTRY; else, use the same host as Gitea server
|
if [ -n "${GITEA_REGISTRY_VAR:-}" ]; then
|
||||||
if [ -n "${{ vars.GITEA_REGISTRY }}" ]; then
|
REGISTRY="$GITEA_REGISTRY_VAR"
|
||||||
REGISTRY="${{ vars.GITEA_REGISTRY }}"
|
|
||||||
else
|
else
|
||||||
REGISTRY=$(echo "${{ gitea.server_url }}" | sed -E 's#^https?://##; s#/$##')
|
# GITHUB_SERVER_URL like https://gitea.example.com
|
||||||
|
REGISTRY=$(echo "$GITHUB_SERVER_URL" | sed -E 's#^https?://##; s#/$##')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "registry=$REGISTRY" >> "$GITHUB_OUTPUT"
|
echo "registry=$REGISTRY" >> "$GITHUB_OUTPUT"
|
||||||
@@ -102,7 +126,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Ensure buildx builder
|
- name: Ensure buildx builder
|
||||||
run: |
|
run: |
|
||||||
docker buildx inspect >/dev/null 2>&1 || docker buildx create --use
|
set -euo pipefail
|
||||||
|
docker buildx inspect dindbuilder >/dev/null 2>&1 || docker buildx create --name dindbuilder --driver docker-container --use
|
||||||
|
|
||||||
- name: Build and push (linux/amd64)
|
- name: Build and push (linux/amd64)
|
||||||
env:
|
env:
|
||||||
|
|||||||
Reference in New Issue
Block a user