This commit is contained in:
SG
2026-03-30 21:45:32 +03:00
parent 99ec8a5690
commit 1025ce4f87
2 changed files with 90 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
name: docker-build-push
description: Clone, build, and optionally push a Docker image
inputs:
git_base_url:
required: true
git_repository:
required: true
git_ref:
required: true
git_sha:
required: true
git_user:
required: true
git_token:
required: true
image_name:
required: true
image_tag:
required: true
push:
required: false
default: "false"
registry:
required: false
default: ""
registry_user:
required: false
default: ""
registry_token:
required: false
default: ""
context:
required: false
default: "."
dockerfile:
required: false
default: "Dockerfile"
runs:
using: "composite"
steps:
- name: Run build script
shell: bash
env:
INPUT_GIT_BASE_URL: ${{ inputs.git_base_url }}
INPUT_GIT_REPOSITORY: ${{ inputs.git_repository }}
INPUT_GIT_REF: ${{ inputs.git_ref }}
INPUT_GIT_SHA: ${{ inputs.git_sha }}
INPUT_GIT_USER: ${{ inputs.git_user }}
INPUT_GIT_TOKEN: ${{ inputs.git_token }}
INPUT_IMAGE_NAME: ${{ inputs.image_name }}
INPUT_IMAGE_TAG: ${{ inputs.image_tag }}
INPUT_PUSH: ${{ inputs.push }}
INPUT_REGISTRY: ${{ inputs.registry }}
INPUT_REGISTRY_USER: ${{ inputs.registry_user }}
INPUT_REGISTRY_TOKEN: ${{ inputs.registry_token }}
INPUT_CONTEXT: ${{ inputs.context }}
INPUT_DOCKERFILE: ${{ inputs.dockerfile }}
run: ${{ gitea.action_path }}/build.sh

View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -euo pipefail
workdir="$PWD/repo"
rm -rf "$workdir"
mkdir -p "$workdir"
git init "$workdir"
cd "$workdir"
git remote add origin "https://${INPUT_GIT_USER}:${INPUT_GIT_TOKEN}@${INPUT_GIT_BASE_URL}/${INPUT_GIT_REPOSITORY}.git"
git fetch --depth=1 origin "${INPUT_GIT_SHA}"
git checkout --detach FETCH_HEAD
full_image="${INPUT_IMAGE_NAME}:${INPUT_IMAGE_TAG}"
docker build \
-f "${INPUT_DOCKERFILE}" \
-t "${full_image}" \
"${INPUT_CONTEXT}"
if [ "${INPUT_PUSH}" = "true" ]; then
echo "${INPUT_REGISTRY_TOKEN}" | docker login "${INPUT_REGISTRY}" -u "${INPUT_REGISTRY_USER}" --password-stdin
docker tag "${full_image}" "${INPUT_REGISTRY}/${full_image}"
docker push "${INPUT_REGISTRY}/${full_image}"
fi