Split workflow into steps

This commit is contained in:
SG
2026-03-31 13:58:43 +03:00
parent 47b76306b2
commit b765564844
3 changed files with 121 additions and 14 deletions

View File

@@ -53,22 +53,53 @@ inputs:
required: false required: false
default: Dockerfile default: Dockerfile
remote_docker_ssh_host:
description: Remote Docker host to pull and run the image on
required: false
remote_docker_ssh_port:
description: SSH port on the remote Docker host
required: false
default: "22"
remote_docker_ssh_username:
description: Remote Docker host SSH user
required: false
remote_docker_ssh_key:
decription: Private SSH key to update the image on remote Docker host
required: false
runs: runs:
using: composite using: composite
steps: steps:
- name: Run build and push script - name: Build the image
shell: bash shell: bash
env:
INPUT_GIT_SERVER_URL: ${{ inputs.git_server_url }}
INPUT_GIT_REPOSITORY: ${{ inputs.git_repository }}
INPUT_GIT_SHA: ${{ inputs.git_sha }}
INPUT_GIT_USER: ${{ inputs.git_user }}
INPUT_GIT_TOKEN: ${{ inputs.git_token }}
INPUT_REGISTRY: ${{ inputs.registry }}
INPUT_REGISTRY_USER: ${{ inputs.registry_user }}
INPUT_REGISTRY_TOKEN: ${{ inputs.registry_token }}
INPUT_IMAGE_NAME: ${{ inputs.image_name }}
INPUT_IMAGE_TAG: ${{ inputs.image_tag }}
INPUT_CONTEXT: ${{ inputs.context }}
INPUT_DOCKERFILE: ${{ inputs.dockerfile }}
run: ${{ gitea.action_path }}/build.sh run: ${{ gitea.action_path }}/build.sh
- name: Push to registry
shell: bash
run: ${{ gitea.action_path }}/push.sh
- name: Update remote Docker host
shell: bash
run: ${{ gitea.action_path }}/update.sh
env:
INPUT_GIT_SERVER_URL: ${{ inputs.git_server_url }}
INPUT_GIT_REPOSITORY: ${{ inputs.git_repository }}
INPUT_GIT_SHA: ${{ inputs.git_sha }}
INPUT_GIT_USER: ${{ inputs.git_user }}
INPUT_GIT_TOKEN: ${{ inputs.git_token }}
INPUT_REGISTRY: ${{ inputs.registry }}
INPUT_REGISTRY_USER: ${{ inputs.registry_user }}
INPUT_REGISTRY_TOKEN: ${{ inputs.registry_token }}
INPUT_IMAGE_NAME: ${{ inputs.image_name }}
INPUT_IMAGE_TAG: ${{ inputs.image_tag }}
INPUT_CONTEXT: ${{ inputs.context }}
INPUT_DOCKERFILE: ${{ inputs.dockerfile }}
INPUT_REMOTE_DOCKER_SSH_HOST: ${{ inputs.remote_docker_ssh_host }}
INPUT_REMOTE_DOCKER_SSH_PORT: ${{ inputs.remote_docker_ssh_port }}
INPUT_REMOTE_DOCKER_SSH_USERNAME: ${{ inputs.remote_docker_ssh_username }}
INPUT_REMOTE_DOCKER_SSH_KEY: ${{ inputs.remote_docker_ssh_key }}

53
docker-build-push/push.sh Executable file
View File

@@ -0,0 +1,53 @@
#!/usr/bin/env bash
set -euo pipefail
: "${INPUT_GIT_SERVER_URL:?missing INPUT_GIT_SERVER_URL}"
: "${INPUT_GIT_REPOSITORY:?missing INPUT_GIT_REPOSITORY}"
: "${INPUT_GIT_SHA:?missing INPUT_GIT_SHA}"
: "${INPUT_GIT_USER:?missing INPUT_GIT_USER}"
: "${INPUT_GIT_TOKEN:?missing INPUT_GIT_TOKEN}"
: "${INPUT_REGISTRY:?missing INPUT_REGISTRY}"
: "${INPUT_REGISTRY_USER:?missing INPUT_REGISTRY_USER}"
: "${INPUT_REGISTRY_TOKEN:?missing INPUT_REGISTRY_TOKEN}"
: "${INPUT_IMAGE_NAME:?missing INPUT_IMAGE_NAME}"
: "${INPUT_IMAGE_TAG:?missing INPUT_IMAGE_TAG}"
: "${INPUT_CONTEXT:?missing INPUT_CONTEXT}"
: "${INPUT_DOCKERFILE:?missing INPUT_DOCKERFILE}"
case "${INPUT_IMAGE_NAME}" in
*/*) ;;
*)
echo "INPUT_IMAGE_NAME must include owner/name, for example: example/testapp" >&2
exit 1
;;
esac
case "${INPUT_IMAGE_NAME}" in
*.*/*|*:*/*)
echo "INPUT_IMAGE_NAME must not include a registry hostname; use INPUT_REGISTRY for that" >&2
exit 1
;;
esac
workdir="${PWD}/repo"
local_image="localbuild:${INPUT_IMAGE_TAG}"
remote_image="${INPUT_REGISTRY}/${INPUT_IMAGE_NAME}:${INPUT_IMAGE_TAG}"
#rm -rf "${workdir}"
#mkdir -p "${workdir}"
#
#git init "${workdir}"
#cd "${workdir}"
#git remote add origin "${INPUT_GIT_SERVER_URL}/${INPUT_GIT_REPOSITORY}.git"
#git config http.extraHeader "Authorization: Basic $(printf '%s:%s' "${INPUT_GIT_USER}" "${INPUT_GIT_TOKEN}" | base64 -w0)"
#git fetch --depth=1 origin "${INPUT_GIT_SHA}"
#git checkout --detach FETCH_HEAD
#docker build \
# -f "${INPUT_DOCKERFILE}" \
# -t "${local_image}" \
# "${INPUT_CONTEXT}"
echo "${INPUT_REGISTRY_TOKEN}" | docker login "${INPUT_REGISTRY}" -u "${INPUT_REGISTRY_USER}" --password-stdin
docker tag "${local_image}" "${remote_image}"
docker push "${remote_image}"

23
docker-build-push/update.sh Executable file
View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
set -euo pipefail
: "${INPUT_GIT_SERVER_URL:?missing INPUT_GIT_SERVER_URL}"
: "${INPUT_GIT_REPOSITORY:?missing INPUT_GIT_REPOSITORY}"
: "${INPUT_GIT_SHA:?missing INPUT_GIT_SHA}"
: "${INPUT_GIT_USER:?missing INPUT_GIT_USER}"
: "${INPUT_GIT_TOKEN:?missing INPUT_GIT_TOKEN}"
: "${INPUT_REGISTRY:?missing INPUT_REGISTRY}"
: "${INPUT_REGISTRY_USER:?missing INPUT_REGISTRY_USER}"
: "${INPUT_REGISTRY_TOKEN:?missing INPUT_REGISTRY_TOKEN}"
: "${INPUT_IMAGE_NAME:?missing INPUT_IMAGE_NAME}"
: "${INPUT_IMAGE_TAG:?missing INPUT_IMAGE_TAG}"
: "${INPUT_CONTEXT:?missing INPUT_CONTEXT}"
: "${INPUT_DOCKERFILE:?missing INPUT_DOCKERFILE}"
: "${INPUT_REMOTE_DOCKER_SSH_HOST:?missing INPUT_REMOTE_DOCKER_SSH_HOST}"
: "${INPUT_REMOTE_DOCKER_SSH_PORT:?missing INPUT_REMOTE_DOCKER_SSH_PORT}"
: "${INPUT_REMOTE_DOCKER_SSH_USERNAME:?missing INPUT_REMOTE_DOCKER_SSH_USERNAME}"
: "${INPUT_REMOTE_DOCKER_SSH_KEY:?missing INPUT_REMOTE_DOCKER_SSH_KEY}"
echo "Dummy Update step, pretend to ssh into remote Docker host" "$INPUT_REMOTE_DOCKER_SSH_USERNAME"@"$INPUT_REMOTE_DOCKER_SSH_HOST":"$DOCKER_REMOTE_SSH_PORT"