From 90ddf7cf628a80f7930026454bc1d693dbe8de52 Mon Sep 17 00:00:00 2001 From: smf Date: Wed, 6 Mar 2024 12:16:23 +0800 Subject: [PATCH 01/32] compose v2 --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 234b6e2..a6d3433 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -62,7 +62,7 @@ DEPLOYMENT_COMMAND_OPTIONS="" if [ "$INPUT_COPY_STACK_FILE" == "true" ]; then STACK_FILE="$INPUT_DEPLOY_PATH/$STACK_FILE" else - DEPLOYMENT_COMMAND_OPTIONS=" --log-level debug --host ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" + DEPLOYMENT_COMMAND_OPTIONS=" --log-level=debug --host ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" fi case $INPUT_DEPLOYMENT_MODE in -- 2.49.1 From 958d6d6863d0f8cf0a65d4d53d49cad172e7f171 Mon Sep 17 00:00:00 2001 From: smf Date: Wed, 6 Mar 2024 12:22:07 +0800 Subject: [PATCH 02/32] order change --- docker-entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index a6d3433..6aa97c4 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -62,7 +62,7 @@ DEPLOYMENT_COMMAND_OPTIONS="" if [ "$INPUT_COPY_STACK_FILE" == "true" ]; then STACK_FILE="$INPUT_DEPLOY_PATH/$STACK_FILE" else - DEPLOYMENT_COMMAND_OPTIONS=" --log-level=debug --host ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" + DEPLOYMENT_COMMAND_OPTIONS=" --host ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" fi case $INPUT_DEPLOYMENT_MODE in @@ -73,7 +73,7 @@ case $INPUT_DEPLOYMENT_MODE in *) INPUT_DEPLOYMENT_MODE="docker-compose" - DEPLOYMENT_COMMAND="docker compose -f $STACK_FILE $DEPLOYMENT_COMMAND_OPTIONS" + DEPLOYMENT_COMMAND="docker --log-level=debug compose -f $STACK_FILE $DEPLOYMENT_COMMAND_OPTIONS" ;; esac -- 2.49.1 From 0c81dda8800912942ca2f0167f5d2d1689ccaffc Mon Sep 17 00:00:00 2001 From: smf Date: Wed, 6 Mar 2024 12:29:27 +0800 Subject: [PATCH 03/32] remove options --- docker-entrypoint.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 6aa97c4..35addb2 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -62,7 +62,7 @@ DEPLOYMENT_COMMAND_OPTIONS="" if [ "$INPUT_COPY_STACK_FILE" == "true" ]; then STACK_FILE="$INPUT_DEPLOY_PATH/$STACK_FILE" else - DEPLOYMENT_COMMAND_OPTIONS=" --host ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" + DEPLOYMENT_COMMAND_OPTIONS=" --log-level debug --host ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" fi case $INPUT_DEPLOYMENT_MODE in @@ -73,7 +73,8 @@ case $INPUT_DEPLOYMENT_MODE in *) INPUT_DEPLOYMENT_MODE="docker-compose" - DEPLOYMENT_COMMAND="docker --log-level=debug compose -f $STACK_FILE $DEPLOYMENT_COMMAND_OPTIONS" + # DEPLOYMENT_COMMAND="docker compose -f $STACK_FILE $DEPLOYMENT_COMMAND_OPTIONS" + DEPLOYMENT_COMMAND="docker --log-level=debug compose -f $STACK_FILE" ;; esac -- 2.49.1 From e3a0f5c937e5e8b5da264c80e2df0fd05953cb7a Mon Sep 17 00:00:00 2001 From: smf Date: Wed, 6 Mar 2024 15:30:43 +0800 Subject: [PATCH 04/32] change dir --- docker-entrypoint.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 35addb2..b0cbeda 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -113,6 +113,11 @@ if ! [ -z "${INPUT_DOCKER_PRUNE+x}" ] && [ $INPUT_DOCKER_PRUNE = 'true' ] ; then yes | docker --log-level debug --host "ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" system prune -a 2>&1 fi +echo "Change working directory" +mkdir -p $INPUT_DEPLOY_PATH +cp -rf * $INPUT_DEPLOY_PATH/ +cd $INPUT_DEPLOY_PATH + if ! [ -z "${INPUT_COPY_STACK_FILE+x}" ] && [ $INPUT_COPY_STACK_FILE = 'true' ] ; then execute_ssh "mkdir -p $INPUT_DEPLOY_PATH/stacks || true" FILE_NAME="docker-stack-$(date +%Y%m%d%s).yaml" @@ -123,8 +128,8 @@ if ! [ -z "${INPUT_COPY_STACK_FILE+x}" ] && [ $INPUT_COPY_STACK_FILE = 'true' ] -P $INPUT_REMOTE_DOCKER_PORT \ $INPUT_STACK_FILE_NAME "$INPUT_REMOTE_DOCKER_HOST:$INPUT_DEPLOY_PATH/stacks/$FILE_NAME" - DIRS=$(dirname "$INPUT_DEPLOY_PATH/$INPUT_STACK_FILE_NAME") - mkdir -p "$DIRS" || exit 0 + # DIRS=$(dirname "$INPUT_DEPLOY_PATH/$INPUT_STACK_FILE_NAME") + # mkdir -p "$DIRS" || exit 0 execute_ssh "ln -nfs $INPUT_DEPLOY_PATH/stacks/$FILE_NAME $INPUT_DEPLOY_PATH/$INPUT_STACK_FILE_NAME" execute_ssh "ls -t $INPUT_DEPLOY_PATH/stacks/docker-stack-* 2>/dev/null | tail -n +$INPUT_KEEP_FILES | xargs rm -- 2>/dev/null || true" -- 2.49.1 From b58bf80c7b3c88f9b1365e3b76f7ae8ab29be263 Mon Sep 17 00:00:00 2001 From: smf Date: Wed, 6 Mar 2024 15:37:12 +0800 Subject: [PATCH 05/32] change dir --- docker-entrypoint.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index b0cbeda..201df8e 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -114,8 +114,10 @@ if ! [ -z "${INPUT_DOCKER_PRUNE+x}" ] && [ $INPUT_DOCKER_PRUNE = 'true' ] ; then fi echo "Change working directory" +echo `pwd` +echo $INPUT_DEPLOY_PATH mkdir -p $INPUT_DEPLOY_PATH -cp -rf * $INPUT_DEPLOY_PATH/ +cp -rfp ./* $INPUT_DEPLOY_PATH/ cd $INPUT_DEPLOY_PATH if ! [ -z "${INPUT_COPY_STACK_FILE+x}" ] && [ $INPUT_COPY_STACK_FILE = 'true' ] ; then -- 2.49.1 From 2b2f220c02ea4f90e8945098a8b1ad397d7fa47a Mon Sep 17 00:00:00 2001 From: smf Date: Wed, 6 Mar 2024 15:50:55 +0800 Subject: [PATCH 06/32] change dir --- docker-entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 201df8e..6730a57 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -34,7 +34,7 @@ if [ -z "${INPUT_ARGS+x}" ]; then fi if [ -z "${INPUT_DEPLOY_PATH+x}" ]; then - INPUT_DEPLOY_PATH=~/docker-deployment + INPUT_DEPLOY_PATH=${github.workspace}/${github.repository} fi if [ -z "${INPUT_STACK_FILE_NAME+x}" ]; then @@ -117,7 +117,7 @@ echo "Change working directory" echo `pwd` echo $INPUT_DEPLOY_PATH mkdir -p $INPUT_DEPLOY_PATH -cp -rfp ./* $INPUT_DEPLOY_PATH/ +cp -rfp ./* $INPUT_DEPLOY_PATH/ || true cd $INPUT_DEPLOY_PATH if ! [ -z "${INPUT_COPY_STACK_FILE+x}" ] && [ $INPUT_COPY_STACK_FILE = 'true' ] ; then -- 2.49.1 From bdca1670cb9fea0aac0cebb2617524c224fb11df Mon Sep 17 00:00:00 2001 From: smf Date: Wed, 6 Mar 2024 15:56:47 +0800 Subject: [PATCH 07/32] change dir --- docker-entrypoint.sh | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 6730a57..b141398 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -33,7 +33,9 @@ if [ -z "${INPUT_ARGS+x}" ]; then exit 1 fi +change_dir=true if [ -z "${INPUT_DEPLOY_PATH+x}" ]; then + change_dir = false INPUT_DEPLOY_PATH=${github.workspace}/${github.repository} fi @@ -113,12 +115,14 @@ if ! [ -z "${INPUT_DOCKER_PRUNE+x}" ] && [ $INPUT_DOCKER_PRUNE = 'true' ] ; then yes | docker --log-level debug --host "ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" system prune -a 2>&1 fi -echo "Change working directory" -echo `pwd` -echo $INPUT_DEPLOY_PATH -mkdir -p $INPUT_DEPLOY_PATH -cp -rfp ./* $INPUT_DEPLOY_PATH/ || true -cd $INPUT_DEPLOY_PATH +if change_dir ; then + echo "Change working directory" + echo `pwd` + echo $INPUT_DEPLOY_PATH + mkdir -p $INPUT_DEPLOY_PATH + cp -rfp ./* $INPUT_DEPLOY_PATH/ || true + cd $INPUT_DEPLOY_PATH +fi if ! [ -z "${INPUT_COPY_STACK_FILE+x}" ] && [ $INPUT_COPY_STACK_FILE = 'true' ] ; then execute_ssh "mkdir -p $INPUT_DEPLOY_PATH/stacks || true" -- 2.49.1 From 20af335ef9d97fc07adcd35f9a10fb87cd94439f Mon Sep 17 00:00:00 2001 From: smf Date: Wed, 6 Mar 2024 16:13:53 +0800 Subject: [PATCH 08/32] change dir --- docker-entrypoint.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index b141398..fe8bbc9 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -33,9 +33,9 @@ if [ -z "${INPUT_ARGS+x}" ]; then exit 1 fi -change_dir=true +CHANGE_DIR=true if [ -z "${INPUT_DEPLOY_PATH+x}" ]; then - change_dir = false + CHANGE_DIR = false INPUT_DEPLOY_PATH=${github.workspace}/${github.repository} fi @@ -115,7 +115,7 @@ if ! [ -z "${INPUT_DOCKER_PRUNE+x}" ] && [ $INPUT_DOCKER_PRUNE = 'true' ] ; then yes | docker --log-level debug --host "ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" system prune -a 2>&1 fi -if change_dir ; then +if $CHANGE_DIR ; then echo "Change working directory" echo `pwd` echo $INPUT_DEPLOY_PATH -- 2.49.1 From d470e52020d3ad5c0dfcc486dfb94a880d10fbd1 Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 16:29:14 +0800 Subject: [PATCH 09/32] m2x4 --- Dockerfile | 2 +- action.yml | 24 ++++---- docker-entrypoint.sh | 130 ++++++++++++++----------------------------- renovate.json | 5 -- 4 files changed, 54 insertions(+), 107 deletions(-) delete mode 100644 renovate.json diff --git a/Dockerfile b/Dockerfile index de01258..2271653 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ LABEL 'com.github.actions.description'='supports docker-compose and Docker Swarm LABEL 'com.github.actions.icon'='send' LABEL 'com.github.actions.color'='green' -RUN apk --no-cache add openssh-client +RUN apk --no-cache add openssh-client socat COPY docker-entrypoint.sh /docker-entrypoint.sh diff --git a/action.yml b/action.yml index da19a60..4693c52 100644 --- a/action.yml +++ b/action.yml @@ -2,7 +2,10 @@ name: Docker Remote (SSH) Deployment description: A GitHub Action that supports docker-compose and Docker Swarm deployments inputs: remote_docker_host: - description: Remote Docker host ie (user@host). + description: Remote Docker host. + required: true + remote_docker_user: + description: Remote Docker user. required: true remote_docker_port: description: Remote Docker ssh port ie (22). @@ -14,20 +17,20 @@ inputs: ssh_private_key: description: SSH private key used to connect to the docker host eg (~/.ssh/rsa_id). required: true + ssh_proxy_cmd: + description: SSH ProxyCommand used to connect to the docker host. + required: false args: description: Deployment command args. required: true - deployment_mode: - description: Deployment mode either docker-swarm or docker-compose. Default is docker-compose. - required: false - copy_stack_file: - description: Copy stack file to remote server and deploy from the server. Default is false. - required: false deploy_path: - description: The path where the stack files will be copied to. Default ~/docker-deployment. + description: The absolute path on remote docker host to deploy, default rely on repo working directory . required: false stack_file_name: - description: Docker stack file used. Default is docker-compose.yml. + description: Compose configuration files. + required: false + env_file_name: + description: Specify an alternate environment file. required: false keep_files: description: Number of the files to be kept on the server. Default is 3. @@ -38,9 +41,6 @@ inputs: pre_deployment_command_args: description: The args for the pre deploument command. required: false - pull_images_first: - description: Pull docker images before deploying. Default is false. - required: false docker_registry_username: description: The docker registry username. required: false diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index fe8bbc9..0de2b32 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,14 +1,6 @@ #!/bin/sh set -eu -execute_ssh(){ - echo "Execute Over SSH: $@" - ssh -q -t -i "$HOME/.ssh/id_rsa" \ - -o UserKnownHostsFile=/dev/null \ - -p $INPUT_REMOTE_DOCKER_PORT \ - -o StrictHostKeyChecking=no "$INPUT_REMOTE_DOCKER_HOST" "$@" -} - if [ -z "${INPUT_REMOTE_DOCKER_PORT+x}" ]; then INPUT_REMOTE_DOCKER_PORT=22 fi @@ -18,6 +10,11 @@ if [ -z "${INPUT_REMOTE_DOCKER_HOST+x}" ]; then exit 1 fi +if [ -z "${INPUT_REMOTE_DOCKER_USER+x}" ]; then + echo "Input remote_docker_user is required!" + exit 1 +fi + if [ -z "${INPUT_SSH_PUBLIC_KEY+x}" ]; then echo "Input ssh_public_key is required!" exit 1 @@ -33,55 +30,19 @@ if [ -z "${INPUT_ARGS+x}" ]; then exit 1 fi -CHANGE_DIR=true -if [ -z "${INPUT_DEPLOY_PATH+x}" ]; then - CHANGE_DIR = false - INPUT_DEPLOY_PATH=${github.workspace}/${github.repository} -fi - -if [ -z "${INPUT_STACK_FILE_NAME+x}" ]; then - INPUT_STACK_FILE_NAME=docker-compose.yaml -fi - -if [ -z "${INPUT_KEEP_FILES+x}" ]; then - INPUT_KEEP_FILES=4 -else - INPUT_KEEP_FILES=$((INPUT_KEEP_FILES+1)) +if ! [ -z "${INPUT_DEPLOY_PATH+x}" ]; then + echo "Change working directory" + echo "Current: `pwd`" + echo "Target: $INPUT_DEPLOY_PATH" + mkdir -p $INPUT_DEPLOY_PATH + cp -rfp ./* $INPUT_DEPLOY_PATH/ || true + cd $INPUT_DEPLOY_PATH fi if [ -z "${INPUT_DOCKER_REGISTRY_URI+x}" ]; then INPUT_DOCKER_REGISTRY_URI=https://registry.hub.docker.com fi -if [ -z "${INPUT_COPY_STACK_FILE+x}" ]; then - INPUT_COPY_STACK_FILE=false -fi - -STACK_FILE=${INPUT_STACK_FILE_NAME} -DEPLOYMENT_COMMAND_OPTIONS="" - - -if [ "$INPUT_COPY_STACK_FILE" == "true" ]; then - STACK_FILE="$INPUT_DEPLOY_PATH/$STACK_FILE" -else - DEPLOYMENT_COMMAND_OPTIONS=" --log-level debug --host ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" -fi - -case $INPUT_DEPLOYMENT_MODE in - - docker-swarm) - DEPLOYMENT_COMMAND="docker $DEPLOYMENT_COMMAND_OPTIONS stack deploy --compose-file $STACK_FILE" - ;; - - *) - INPUT_DEPLOYMENT_MODE="docker-compose" - # DEPLOYMENT_COMMAND="docker compose -f $STACK_FILE $DEPLOYMENT_COMMAND_OPTIONS" - DEPLOYMENT_COMMAND="docker --log-level=debug compose -f $STACK_FILE" - ;; -esac - -echo `docker-compose -v` - SSH_HOST=${INPUT_REMOTE_DOCKER_HOST#*@} echo "Registering SSH keys..." @@ -101,13 +62,32 @@ echo "Add known hosts" ssh-keyscan -p $INPUT_REMOTE_DOCKER_PORT "$SSH_HOST" >> ~/.ssh/known_hosts ssh-keyscan -p $INPUT_REMOTE_DOCKER_PORT "$SSH_HOST" >> /etc/ssh/ssh_known_hosts +echo "Add REMOTE_DOCKER_HOST alias to ~/.ssh/config" +touch ~/.ssh/config +echo >> ~/.ssh/config +echo "Host REMOTE_DOCKER_HOST" >> ~/.ssh/config +echo " HostName $INPUT_REMOTE_DOCKER_HOST" >> ~/.ssh/config +echo " User $INPUT_REMOTE_DOCKER_USER" >> ~/.ssh/config +echo " Port $INPUT_REMOTE_DOCKER_PORT" >> ~/.ssh/config +echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config +if ! [ -z "${INPUT_SSH_PROXY_CMD+x}" ]; then + echo "Add ProxyCommand: $INPUT_SSH_PROXY_CMD" + echo " ProxyCommand $INPUT_SSH_PROXY_CMD" >> ~/.ssh/config +fi +echo >> ~/.ssh/config + +echo "docker -v" +echo `docker -v` +echo "docker-compose -v" +echo `docker-compose -v` + set context echo "Create docker context" -docker context create remote --docker "host=ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" +docker context create remote --docker "host=ssh://REMOTE_DOCKER_HOST" docker context use remote if ! [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ] && ! [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then - echo "Connecting to $INPUT_REMOTE_DOCKER_HOST... Command: docker login" + echo "Connecting to $INPUT_DOCKER_REGISTRY_URI... Command: docker login" echo "$INPUT_DOCKER_REGISTRY_PASSWORD" | docker login -u "$INPUT_DOCKER_REGISTRY_USERNAME" --password-stdin "$INPUT_DOCKER_REGISTRY_URI" fi @@ -115,43 +95,15 @@ if ! [ -z "${INPUT_DOCKER_PRUNE+x}" ] && [ $INPUT_DOCKER_PRUNE = 'true' ] ; then yes | docker --log-level debug --host "ssh://$INPUT_REMOTE_DOCKER_HOST:$INPUT_REMOTE_DOCKER_PORT" system prune -a 2>&1 fi -if $CHANGE_DIR ; then - echo "Change working directory" - echo `pwd` - echo $INPUT_DEPLOY_PATH - mkdir -p $INPUT_DEPLOY_PATH - cp -rfp ./* $INPUT_DEPLOY_PATH/ || true - cd $INPUT_DEPLOY_PATH +DEPLOYMENT_COMMAND="docker --log-level=debug compose" +if ! [ -z "${INPUT_STACK_FILE_NAME+x}" ]; then + DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND -f $INPUT_STACK_FILE_NAME" fi -if ! [ -z "${INPUT_COPY_STACK_FILE+x}" ] && [ $INPUT_COPY_STACK_FILE = 'true' ] ; then - execute_ssh "mkdir -p $INPUT_DEPLOY_PATH/stacks || true" - FILE_NAME="docker-stack-$(date +%Y%m%d%s).yaml" - - scp -i "$HOME/.ssh/id_rsa" \ - -o UserKnownHostsFile=/dev/null \ - -o StrictHostKeyChecking=no \ - -P $INPUT_REMOTE_DOCKER_PORT \ - $INPUT_STACK_FILE_NAME "$INPUT_REMOTE_DOCKER_HOST:$INPUT_DEPLOY_PATH/stacks/$FILE_NAME" - - # DIRS=$(dirname "$INPUT_DEPLOY_PATH/$INPUT_STACK_FILE_NAME") - # mkdir -p "$DIRS" || exit 0 - - execute_ssh "ln -nfs $INPUT_DEPLOY_PATH/stacks/$FILE_NAME $INPUT_DEPLOY_PATH/$INPUT_STACK_FILE_NAME" - execute_ssh "ls -t $INPUT_DEPLOY_PATH/stacks/docker-stack-* 2>/dev/null | tail -n +$INPUT_KEEP_FILES | xargs rm -- 2>/dev/null || true" - - if ! [ -z "${INPUT_PULL_IMAGES_FIRST+x}" ] && [ $INPUT_PULL_IMAGES_FIRST = 'true' ] && [ $INPUT_DEPLOYMENT_MODE = 'docker-compose' ] ; then - execute_ssh ${DEPLOYMENT_COMMAND} "pull" - fi - - if ! [ -z "${INPUT_PRE_DEPLOYMENT_COMMAND_ARGS+x}" ] && [ $INPUT_DEPLOYMENT_MODE = 'docker-compose' ] ; then - execute_ssh "${DEPLOYMENT_COMMAND} $INPUT_PRE_DEPLOYMENT_COMMAND_ARGS" 2>&1 - fi - - execute_ssh ${DEPLOYMENT_COMMAND} "$INPUT_ARGS" 2>&1 -else - echo "Connecting to $INPUT_REMOTE_DOCKER_HOST... Command: ${DEPLOYMENT_COMMAND} ${INPUT_ARGS}" - ${DEPLOYMENT_COMMAND} ${INPUT_ARGS} 2>&1 +if ! [ -z "${INPUT_ENV_FILE_NAME+x}" ]; then + DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND --env-file $INPUT_ENV_FILE_NAME" fi +# DEPLOYMENT_COMMAND_OPTIONS="" - +echo "Connecting to $INPUT_REMOTE_DOCKER_HOST... Command: ${DEPLOYMENT_COMMAND} ${INPUT_ARGS}" +${DEPLOYMENT_COMMAND} ${INPUT_ARGS} 2>&1 \ No newline at end of file diff --git a/renovate.json b/renovate.json deleted file mode 100644 index f45d8f1..0000000 --- a/renovate.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": [ - "config:base" - ] -} -- 2.49.1 From 356adf2c4557face34b8ae39344b6e4865313cb8 Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 16:42:46 +0800 Subject: [PATCH 10/32] fix --- docker-entrypoint.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 0de2b32..0949107 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -43,7 +43,8 @@ if [ -z "${INPUT_DOCKER_REGISTRY_URI+x}" ]; then INPUT_DOCKER_REGISTRY_URI=https://registry.hub.docker.com fi -SSH_HOST=${INPUT_REMOTE_DOCKER_HOST#*@} +USER_AT_HOST="$INPUT_REMOTE_DOCKER_USER@$INPUT_REMOTE_DOCKER_HOST" +SSH_HOST=${USER_AT_HOST#*@} echo "Registering SSH keys..." -- 2.49.1 From 33237c1be7af64c0b6bbb7436f78201c61fc960a Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 18:24:10 +0800 Subject: [PATCH 11/32] check config --- Dockerfile | 2 ++ docker-entrypoint.sh | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Dockerfile b/Dockerfile index 2271653..8e8ffdb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,8 @@ LABEL 'com.github.actions.description'='supports docker-compose and Docker Swarm LABEL 'com.github.actions.icon'='send' LABEL 'com.github.actions.color'='green' +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories + RUN apk --no-cache add openssh-client socat COPY docker-entrypoint.sh /docker-entrypoint.sh diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 0949107..5d671d8 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -77,6 +77,8 @@ if ! [ -z "${INPUT_SSH_PROXY_CMD+x}" ]; then fi echo >> ~/.ssh/config +cat ~/.ssh/config + echo "docker -v" echo `docker -v` echo "docker-compose -v" -- 2.49.1 From 0d398b1de107e8af5c3bdfff6c7ae06edfe62c6b Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 18:41:51 +0800 Subject: [PATCH 12/32] check config --- docker-entrypoint.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 5d671d8..8b7ffc5 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -76,7 +76,9 @@ if ! [ -z "${INPUT_SSH_PROXY_CMD+x}" ]; then echo " ProxyCommand $INPUT_SSH_PROXY_CMD" >> ~/.ssh/config fi echo >> ~/.ssh/config +chmod 600 ~/.ssh/config +cat ~/.ssh/id_rsa cat ~/.ssh/config echo "docker -v" -- 2.49.1 From bc2a6730e00a63561d7d3f833ec2df42e06337aa Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 19:04:24 +0800 Subject: [PATCH 13/32] check --- docker-entrypoint.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 8b7ffc5..26e5226 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -90,6 +90,7 @@ set context echo "Create docker context" docker context create remote --docker "host=ssh://REMOTE_DOCKER_HOST" docker context use remote +sleep 1h if ! [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ] && ! [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then echo "Connecting to $INPUT_DOCKER_REGISTRY_URI... Command: docker login" -- 2.49.1 From cbfb477c9a229053b9040a84d07c4416e53ce345 Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 21:40:34 +0800 Subject: [PATCH 14/32] check --- docker-entrypoint.sh | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 26e5226..dee1270 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -43,9 +43,6 @@ if [ -z "${INPUT_DOCKER_REGISTRY_URI+x}" ]; then INPUT_DOCKER_REGISTRY_URI=https://registry.hub.docker.com fi -USER_AT_HOST="$INPUT_REMOTE_DOCKER_USER@$INPUT_REMOTE_DOCKER_HOST" -SSH_HOST=${USER_AT_HOST#*@} - echo "Registering SSH keys..." # register the private key with the agent. @@ -60,8 +57,8 @@ eval $(ssh-agent) ssh-add ~/.ssh/id_rsa echo "Add known hosts" -ssh-keyscan -p $INPUT_REMOTE_DOCKER_PORT "$SSH_HOST" >> ~/.ssh/known_hosts -ssh-keyscan -p $INPUT_REMOTE_DOCKER_PORT "$SSH_HOST" >> /etc/ssh/ssh_known_hosts +# ssh-keyscan -p $INPUT_REMOTE_DOCKER_PORT "$INPUT_REMOTE_DOCKER_HOST" >> ~/.ssh/known_hosts +# ssh-keyscan -p $INPUT_REMOTE_DOCKER_PORT "$INPUT_REMOTE_DOCKER_HOST" >> /etc/ssh/ssh_known_hosts echo "Add REMOTE_DOCKER_HOST alias to ~/.ssh/config" touch ~/.ssh/config @@ -78,9 +75,6 @@ fi echo >> ~/.ssh/config chmod 600 ~/.ssh/config -cat ~/.ssh/id_rsa -cat ~/.ssh/config - echo "docker -v" echo `docker -v` echo "docker-compose -v" -- 2.49.1 From 5a84702512902fc2fa9462b990d4e8a2f7e38407 Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 22:13:18 +0800 Subject: [PATCH 15/32] no check ssh key --- docker-entrypoint.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index dee1270..0a1722c 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -68,6 +68,8 @@ echo " HostName $INPUT_REMOTE_DOCKER_HOST" >> ~/.ssh/config echo " User $INPUT_REMOTE_DOCKER_USER" >> ~/.ssh/config echo " Port $INPUT_REMOTE_DOCKER_PORT" >> ~/.ssh/config echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config +echo " StrictHostKeyChecking no" >> ~/.ssh/config +echo " UserKnownHostsFile /dev/null" >> ~/.ssh/config if ! [ -z "${INPUT_SSH_PROXY_CMD+x}" ]; then echo "Add ProxyCommand: $INPUT_SSH_PROXY_CMD" echo " ProxyCommand $INPUT_SSH_PROXY_CMD" >> ~/.ssh/config -- 2.49.1 From 4489c33f6cc9e3c0c44ee1593ebc71ce6255bbfe Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 22:49:21 +0800 Subject: [PATCH 16/32] no check ssh key --- action.yml | 6 +++--- docker-entrypoint.sh | 24 ++++++++++++------------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/action.yml b/action.yml index 4693c52..5da1699 100644 --- a/action.yml +++ b/action.yml @@ -11,9 +11,9 @@ inputs: description: Remote Docker ssh port ie (22). required: false default: '22' - ssh_public_key: - description: Remote Docker SSH public key eg (~/.ssh/rsa_id.pub). - required: true + # ssh_public_key: + # description: Remote Docker SSH public key eg (~/.ssh/rsa_id.pub). + # required: true ssh_private_key: description: SSH private key used to connect to the docker host eg (~/.ssh/rsa_id). required: true diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 0a1722c..a222ae1 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -15,10 +15,10 @@ if [ -z "${INPUT_REMOTE_DOCKER_USER+x}" ]; then exit 1 fi -if [ -z "${INPUT_SSH_PUBLIC_KEY+x}" ]; then - echo "Input ssh_public_key is required!" - exit 1 -fi +# if [ -z "${INPUT_SSH_PUBLIC_KEY+x}" ]; then +# echo "Input ssh_public_key is required!" +# exit 1 +# fi if [ -z "${INPUT_SSH_PRIVATE_KEY+x}" ]; then echo "Input ssh_private_key is required!" @@ -50,13 +50,13 @@ mkdir -p ~/.ssh ls ~/.ssh printf '%s\n' "$INPUT_SSH_PRIVATE_KEY" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa -printf '%s\n' "$INPUT_SSH_PUBLIC_KEY" > ~/.ssh/id_rsa.pub -chmod 600 ~/.ssh/id_rsa.pub +# printf '%s\n' "$INPUT_SSH_PUBLIC_KEY" > ~/.ssh/id_rsa.pub +# chmod 600 ~/.ssh/id_rsa.pub #chmod 600 "~/.ssh" eval $(ssh-agent) ssh-add ~/.ssh/id_rsa -echo "Add known hosts" +# echo "Add known hosts" # ssh-keyscan -p $INPUT_REMOTE_DOCKER_PORT "$INPUT_REMOTE_DOCKER_HOST" >> ~/.ssh/known_hosts # ssh-keyscan -p $INPUT_REMOTE_DOCKER_PORT "$INPUT_REMOTE_DOCKER_HOST" >> /etc/ssh/ssh_known_hosts @@ -77,16 +77,16 @@ fi echo >> ~/.ssh/config chmod 600 ~/.ssh/config -echo "docker -v" -echo `docker -v` -echo "docker-compose -v" -echo `docker-compose -v` +# echo "docker -v" +# echo `docker -v` +# echo "docker-compose -v" +# echo `docker-compose -v` set context echo "Create docker context" docker context create remote --docker "host=ssh://REMOTE_DOCKER_HOST" docker context use remote -sleep 1h +# sleep 1h if ! [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ] && ! [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then echo "Connecting to $INPUT_DOCKER_REGISTRY_URI... Command: docker login" -- 2.49.1 From 013c6a876dcd498e0787a1e27c4562592bd63299 Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 22:57:05 +0800 Subject: [PATCH 17/32] check --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index a222ae1..7d52bc2 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -86,7 +86,7 @@ set context echo "Create docker context" docker context create remote --docker "host=ssh://REMOTE_DOCKER_HOST" docker context use remote -# sleep 1h +sleep 1h if ! [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ] && ! [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then echo "Connecting to $INPUT_DOCKER_REGISTRY_URI... Command: docker login" -- 2.49.1 From 2f7a0b4cc6529109e5bb94e18bd4f4e2ce26c403 Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 23:08:14 +0800 Subject: [PATCH 18/32] check --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 7d52bc2..a222ae1 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -86,7 +86,7 @@ set context echo "Create docker context" docker context create remote --docker "host=ssh://REMOTE_DOCKER_HOST" docker context use remote -sleep 1h +# sleep 1h if ! [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ] && ! [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then echo "Connecting to $INPUT_DOCKER_REGISTRY_URI... Command: docker login" -- 2.49.1 From de6097bdf392a7bce8d6455af819747e426a30fc Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 23:11:13 +0800 Subject: [PATCH 19/32] check --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index a222ae1..7d52bc2 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -86,7 +86,7 @@ set context echo "Create docker context" docker context create remote --docker "host=ssh://REMOTE_DOCKER_HOST" docker context use remote -# sleep 1h +sleep 1h if ! [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ] && ! [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then echo "Connecting to $INPUT_DOCKER_REGISTRY_URI... Command: docker login" -- 2.49.1 From 4cebe358c2d972a38ba9894995a3dc55d3f0db4d Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 23:24:03 +0800 Subject: [PATCH 20/32] check --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 7d52bc2..f7b9fa3 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -35,7 +35,7 @@ if ! [ -z "${INPUT_DEPLOY_PATH+x}" ]; then echo "Current: `pwd`" echo "Target: $INPUT_DEPLOY_PATH" mkdir -p $INPUT_DEPLOY_PATH - cp -rfp ./* $INPUT_DEPLOY_PATH/ || true + cp -rfp ./. $INPUT_DEPLOY_PATH cd $INPUT_DEPLOY_PATH fi -- 2.49.1 From 33fd7b88b90c9907df0d8e3a0687371065cc32ab Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 23:24:51 +0800 Subject: [PATCH 21/32] check --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index f7b9fa3..17cb5b2 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -86,7 +86,7 @@ set context echo "Create docker context" docker context create remote --docker "host=ssh://REMOTE_DOCKER_HOST" docker context use remote -sleep 1h +# sleep 1h if ! [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ] && ! [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then echo "Connecting to $INPUT_DOCKER_REGISTRY_URI... Command: docker login" -- 2.49.1 From 1e27f0fa61abcb0afe0a3292344d9d143b3c00bb Mon Sep 17 00:00:00 2001 From: smf Date: Thu, 7 Mar 2024 23:49:33 +0800 Subject: [PATCH 22/32] file name split --- docker-entrypoint.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 17cb5b2..cc256be 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -99,11 +99,17 @@ fi DEPLOYMENT_COMMAND="docker --log-level=debug compose" if ! [ -z "${INPUT_STACK_FILE_NAME+x}" ]; then - DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND -f $INPUT_STACK_FILE_NAME" + STACK_FILE_ARRAY=(${INPUT_STACK_FILE_NAME//,/ }) + for STACK_FILE in "${STACK_FILE_ARRAY[@]}"; do + DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND -f $STACK_FILE" + done fi if ! [ -z "${INPUT_ENV_FILE_NAME+x}" ]; then - DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND --env-file $INPUT_ENV_FILE_NAME" + ENV_FILE_ARRAY=(${INPUT_ENV_FILE_NAME//,/ }) + for ENV_FILE in "${ENV_FILE_ARRAY[@]}"; do + DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND --env-file $ENV_FILE" + done fi # DEPLOYMENT_COMMAND_OPTIONS="" -- 2.49.1 From c50ba426370588e4467bc7cd558c096a6f6f23ba Mon Sep 17 00:00:00 2001 From: smf Date: Fri, 8 Mar 2024 00:34:26 +0800 Subject: [PATCH 23/32] file name split --- docker-entrypoint.sh | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index cc256be..9c7d6dd 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -99,17 +99,12 @@ fi DEPLOYMENT_COMMAND="docker --log-level=debug compose" if ! [ -z "${INPUT_STACK_FILE_NAME+x}" ]; then - STACK_FILE_ARRAY=(${INPUT_STACK_FILE_NAME//,/ }) - for STACK_FILE in "${STACK_FILE_ARRAY[@]}"; do - DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND -f $STACK_FILE" - done + DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND -f ${INPUT_STACK_FILE_NAME//,/ -f }" +done fi if ! [ -z "${INPUT_ENV_FILE_NAME+x}" ]; then - ENV_FILE_ARRAY=(${INPUT_ENV_FILE_NAME//,/ }) - for ENV_FILE in "${ENV_FILE_ARRAY[@]}"; do - DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND --env-file $ENV_FILE" - done + DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND -f ${INPUT_ENV_FILE_NAME//,/ -f }" fi # DEPLOYMENT_COMMAND_OPTIONS="" -- 2.49.1 From 68681ffeca1336b5625574641a7c8e19c5e4f50e Mon Sep 17 00:00:00 2001 From: smf Date: Fri, 8 Mar 2024 00:36:34 +0800 Subject: [PATCH 24/32] file name split --- docker-entrypoint.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 9c7d6dd..30f6752 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -100,7 +100,6 @@ fi DEPLOYMENT_COMMAND="docker --log-level=debug compose" if ! [ -z "${INPUT_STACK_FILE_NAME+x}" ]; then DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND -f ${INPUT_STACK_FILE_NAME//,/ -f }" -done fi if ! [ -z "${INPUT_ENV_FILE_NAME+x}" ]; then -- 2.49.1 From 41312167bd37f9bea6a3a56869d349a14debd1ad Mon Sep 17 00:00:00 2001 From: smf Date: Fri, 8 Mar 2024 00:46:35 +0800 Subject: [PATCH 25/32] file name split --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 30f6752..3db7966 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -103,7 +103,7 @@ if ! [ -z "${INPUT_STACK_FILE_NAME+x}" ]; then fi if ! [ -z "${INPUT_ENV_FILE_NAME+x}" ]; then - DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND -f ${INPUT_ENV_FILE_NAME//,/ -f }" + DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND --env-file ${INPUT_ENV_FILE_NAME//,/ --env-file }" fi # DEPLOYMENT_COMMAND_OPTIONS="" -- 2.49.1 From c97c12fe31596227e58e3709c2aa2cfe4f4bd6f0 Mon Sep 17 00:00:00 2001 From: smf Date: Fri, 8 Mar 2024 12:22:22 +0800 Subject: [PATCH 26/32] if condition chech --- docker-entrypoint.sh | 50 ++++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 3db7966..0ee8876 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -15,11 +15,6 @@ if [ -z "${INPUT_REMOTE_DOCKER_USER+x}" ]; then exit 1 fi -# if [ -z "${INPUT_SSH_PUBLIC_KEY+x}" ]; then -# echo "Input ssh_public_key is required!" -# exit 1 -# fi - if [ -z "${INPUT_SSH_PRIVATE_KEY+x}" ]; then echo "Input ssh_private_key is required!" exit 1 @@ -30,7 +25,11 @@ if [ -z "${INPUT_ARGS+x}" ]; then exit 1 fi -if ! [ -z "${INPUT_DEPLOY_PATH+x}" ]; then +CHANGE_DIR=true +if [ -z "${INPUT_DEPLOY_PATH+x}" ]; then + CHANGE_DIR=false +fi +if $CHANGE_DIR ; then echo "Change working directory" echo "Current: `pwd`" echo "Target: $INPUT_DEPLOY_PATH" @@ -50,16 +49,13 @@ mkdir -p ~/.ssh ls ~/.ssh printf '%s\n' "$INPUT_SSH_PRIVATE_KEY" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa -# printf '%s\n' "$INPUT_SSH_PUBLIC_KEY" > ~/.ssh/id_rsa.pub -# chmod 600 ~/.ssh/id_rsa.pub -#chmod 600 "~/.ssh" eval $(ssh-agent) ssh-add ~/.ssh/id_rsa -# echo "Add known hosts" -# ssh-keyscan -p $INPUT_REMOTE_DOCKER_PORT "$INPUT_REMOTE_DOCKER_HOST" >> ~/.ssh/known_hosts -# ssh-keyscan -p $INPUT_REMOTE_DOCKER_PORT "$INPUT_REMOTE_DOCKER_HOST" >> /etc/ssh/ssh_known_hosts - +SSH_PROXY=ture +if [ -z "${INPUT_SSH_PROXY_CMD+x}" ]; then + SSH_PROXY=false +fi echo "Add REMOTE_DOCKER_HOST alias to ~/.ssh/config" touch ~/.ssh/config echo >> ~/.ssh/config @@ -70,25 +66,23 @@ echo " Port $INPUT_REMOTE_DOCKER_PORT" >> ~/.ssh/config echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config echo " StrictHostKeyChecking no" >> ~/.ssh/config echo " UserKnownHostsFile /dev/null" >> ~/.ssh/config -if ! [ -z "${INPUT_SSH_PROXY_CMD+x}" ]; then +if $SSH_PROXY ; then echo "Add ProxyCommand: $INPUT_SSH_PROXY_CMD" echo " ProxyCommand $INPUT_SSH_PROXY_CMD" >> ~/.ssh/config fi echo >> ~/.ssh/config chmod 600 ~/.ssh/config -# echo "docker -v" -# echo `docker -v` -# echo "docker-compose -v" -# echo `docker-compose -v` - set context echo "Create docker context" docker context create remote --docker "host=ssh://REMOTE_DOCKER_HOST" docker context use remote -# sleep 1h -if ! [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ] && ! [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then +DOCKER_REGISTRY_LOGIN=true +if [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ] || [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then + DOCKER_REGISTRY_LOGIN=false +fi +if $DOCKER_REGISTRY_LOGIN ; then echo "Connecting to $INPUT_DOCKER_REGISTRY_URI... Command: docker login" echo "$INPUT_DOCKER_REGISTRY_PASSWORD" | docker login -u "$INPUT_DOCKER_REGISTRY_USERNAME" --password-stdin "$INPUT_DOCKER_REGISTRY_URI" fi @@ -98,13 +92,23 @@ if ! [ -z "${INPUT_DOCKER_PRUNE+x}" ] && [ $INPUT_DOCKER_PRUNE = 'true' ] ; then fi DEPLOYMENT_COMMAND="docker --log-level=debug compose" -if ! [ -z "${INPUT_STACK_FILE_NAME+x}" ]; then + +STACK_FILE=true +if [ -z "${INPUT_STACK_FILE_NAME+x}" ]; then + STACK_FILE=false +fi +if $STACK_FILE ; then DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND -f ${INPUT_STACK_FILE_NAME//,/ -f }" fi -if ! [ -z "${INPUT_ENV_FILE_NAME+x}" ]; then +ENV_FILE=true +if [ -z "${INPUT_ENV_FILE_NAME+x}" ]; then + ENV_FILE=false +fi +if $ENV_FILE ; then DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND --env-file ${INPUT_ENV_FILE_NAME//,/ --env-file }" fi + # DEPLOYMENT_COMMAND_OPTIONS="" echo "Connecting to $INPUT_REMOTE_DOCKER_HOST... Command: ${DEPLOYMENT_COMMAND} ${INPUT_ARGS}" -- 2.49.1 From da89c9d375ec7cd6b57cff1e960d76fd254e4ac1 Mon Sep 17 00:00:00 2001 From: smf Date: Fri, 8 Mar 2024 14:53:50 +0800 Subject: [PATCH 27/32] fix --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 0ee8876..0916fe2 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -52,7 +52,7 @@ chmod 600 ~/.ssh/id_rsa eval $(ssh-agent) ssh-add ~/.ssh/id_rsa -SSH_PROXY=ture +SSH_PROXY=true if [ -z "${INPUT_SSH_PROXY_CMD+x}" ]; then SSH_PROXY=false fi -- 2.49.1 From dc2ce3807e2e5f1adbdc110c1ffa142347c764ca Mon Sep 17 00:00:00 2001 From: smf Date: Fri, 8 Mar 2024 16:51:07 +0800 Subject: [PATCH 28/32] check --- docker-entrypoint.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 0916fe2..ebd6484 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -79,9 +79,15 @@ docker context create remote --docker "host=ssh://REMOTE_DOCKER_HOST" docker context use remote DOCKER_REGISTRY_LOGIN=true -if [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ] || [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then +if [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ]; then DOCKER_REGISTRY_LOGIN=false fi +if [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then + DOCKER_REGISTRY_LOGIN=false +fi +echo "INPUT_DOCKER_REGISTRY_USERNAME: $INPUT_DOCKER_REGISTRY_USERNAME" +echo "INPUT_DOCKER_REGISTRY_PASSWORD: $INPUT_DOCKER_REGISTRY_PASSWORD" +echo "DOCKER_REGISTRY_LOGIN: $DOCKER_REGISTRY_LOGIN" if $DOCKER_REGISTRY_LOGIN ; then echo "Connecting to $INPUT_DOCKER_REGISTRY_URI... Command: docker login" echo "$INPUT_DOCKER_REGISTRY_PASSWORD" | docker login -u "$INPUT_DOCKER_REGISTRY_USERNAME" --password-stdin "$INPUT_DOCKER_REGISTRY_URI" -- 2.49.1 From 6a91adf5910b262543b609d5722996755fe3eed2 Mon Sep 17 00:00:00 2001 From: smf Date: Fri, 8 Mar 2024 17:23:23 +0800 Subject: [PATCH 29/32] fix --- docker-entrypoint.sh | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index ebd6484..68b904c 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -78,17 +78,7 @@ echo "Create docker context" docker context create remote --docker "host=ssh://REMOTE_DOCKER_HOST" docker context use remote -DOCKER_REGISTRY_LOGIN=true -if [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ]; then - DOCKER_REGISTRY_LOGIN=false -fi -if [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ]; then - DOCKER_REGISTRY_LOGIN=false -fi -echo "INPUT_DOCKER_REGISTRY_USERNAME: $INPUT_DOCKER_REGISTRY_USERNAME" -echo "INPUT_DOCKER_REGISTRY_PASSWORD: $INPUT_DOCKER_REGISTRY_PASSWORD" -echo "DOCKER_REGISTRY_LOGIN: $DOCKER_REGISTRY_LOGIN" -if $DOCKER_REGISTRY_LOGIN ; then +if ! [ "x${INPUT_DOCKER_REGISTRY_USERNAME}"=="x" ] && ! [ "x${INPUT_DOCKER_REGISTRY_PASSWORD}"=="x" ]; then echo "Connecting to $INPUT_DOCKER_REGISTRY_URI... Command: docker login" echo "$INPUT_DOCKER_REGISTRY_PASSWORD" | docker login -u "$INPUT_DOCKER_REGISTRY_USERNAME" --password-stdin "$INPUT_DOCKER_REGISTRY_URI" fi -- 2.49.1 From e791844219845283d54d242689d62daf97ef4868 Mon Sep 17 00:00:00 2001 From: smf Date: Fri, 8 Mar 2024 17:26:42 +0800 Subject: [PATCH 30/32] fix --- docker-entrypoint.sh | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 68b904c..418eceb 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -89,19 +89,11 @@ fi DEPLOYMENT_COMMAND="docker --log-level=debug compose" -STACK_FILE=true -if [ -z "${INPUT_STACK_FILE_NAME+x}" ]; then - STACK_FILE=false -fi -if $STACK_FILE ; then +if ! [ "x${INPUT_STACK_FILE_NAME}"=="x" ]; then DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND -f ${INPUT_STACK_FILE_NAME//,/ -f }" fi -ENV_FILE=true -if [ -z "${INPUT_ENV_FILE_NAME+x}" ]; then - ENV_FILE=false -fi -if $ENV_FILE ; then +if ! [ "x${INPUT_ENV_FILE_NAME}"=="x" ]; then DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND --env-file ${INPUT_ENV_FILE_NAME//,/ --env-file }" fi -- 2.49.1 From 49e8128b8c9c157f1bc139cfc00692a55b28ff69 Mon Sep 17 00:00:00 2001 From: smf Date: Fri, 8 Mar 2024 17:50:45 +0800 Subject: [PATCH 31/32] fix --- docker-entrypoint.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 418eceb..7f21a7d 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -78,7 +78,8 @@ echo "Create docker context" docker context create remote --docker "host=ssh://REMOTE_DOCKER_HOST" docker context use remote -if ! [ "x${INPUT_DOCKER_REGISTRY_USERNAME}"=="x" ] && ! [ "x${INPUT_DOCKER_REGISTRY_PASSWORD}"=="x" ]; then +if ! [ -z "${INPUT_DOCKER_REGISTRY_USERNAME+x}" ] && ! [ -z "$INPUT_DOCKER_REGISTRY_USERNAME" ] && + ! [ -z "${INPUT_DOCKER_REGISTRY_PASSWORD+x}" ] && ! [ -z "$INPUT_DOCKER_REGISTRY_PASSWORD" ]; then echo "Connecting to $INPUT_DOCKER_REGISTRY_URI... Command: docker login" echo "$INPUT_DOCKER_REGISTRY_PASSWORD" | docker login -u "$INPUT_DOCKER_REGISTRY_USERNAME" --password-stdin "$INPUT_DOCKER_REGISTRY_URI" fi @@ -89,11 +90,11 @@ fi DEPLOYMENT_COMMAND="docker --log-level=debug compose" -if ! [ "x${INPUT_STACK_FILE_NAME}"=="x" ]; then +if ! [ -z "${INPUT_STACK_FILE_NAME+x}" ] && ! [ -z "$INPUT_STACK_FILE_NAME" ]; then DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND -f ${INPUT_STACK_FILE_NAME//,/ -f }" fi -if ! [ "x${INPUT_ENV_FILE_NAME}"=="x" ]; then +if ! [ -z "${INPUT_ENV_FILE_NAME+x}" ] && ! [ -z "$INPUT_ENV_FILE_NAME" ]; then DEPLOYMENT_COMMAND="$DEPLOYMENT_COMMAND --env-file ${INPUT_ENV_FILE_NAME//,/ --env-file }" fi -- 2.49.1 From 7ad91c61322f6047587adb8fcb1fc7a8820fda49 Mon Sep 17 00:00:00 2001 From: smf Date: Fri, 8 Mar 2024 17:59:30 +0800 Subject: [PATCH 32/32] fixed if condition --- docker-entrypoint.sh | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 7f21a7d..5da245f 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,35 +1,31 @@ #!/bin/sh set -eu -if [ -z "${INPUT_REMOTE_DOCKER_PORT+x}" ]; then +if [ -z "${INPUT_REMOTE_DOCKER_PORT+x}" ] || [ -z "$INPUT_REMOTE_DOCKER_PORT" ]; then INPUT_REMOTE_DOCKER_PORT=22 fi -if [ -z "${INPUT_REMOTE_DOCKER_HOST+x}" ]; then +if [ -z "${INPUT_REMOTE_DOCKER_HOST+x}" ] || [ -z "$INPUT_REMOTE_DOCKER_HOST" ]; then echo "Input remote_docker_host is required!" exit 1 fi -if [ -z "${INPUT_REMOTE_DOCKER_USER+x}" ]; then +if [ -z "${INPUT_REMOTE_DOCKER_USER+x}" ] || [ -z "$INPUT_REMOTE_DOCKER_USER" ]; then echo "Input remote_docker_user is required!" exit 1 fi -if [ -z "${INPUT_SSH_PRIVATE_KEY+x}" ]; then +if [ -z "${INPUT_SSH_PRIVATE_KEY+x}" ] || [ -z "$INPUT_SSH_PRIVATE_KEY" ]; then echo "Input ssh_private_key is required!" exit 1 fi -if [ -z "${INPUT_ARGS+x}" ]; then +if [ -z "${INPUT_ARGS+x}" ] || [ -z "$INPUT_ARGS" ]; then echo "Input input_args is required!" exit 1 fi -CHANGE_DIR=true -if [ -z "${INPUT_DEPLOY_PATH+x}" ]; then - CHANGE_DIR=false -fi -if $CHANGE_DIR ; then +if ! [ -z "${INPUT_DEPLOY_PATH+x}" ] && ! [ -z "$INPUT_DEPLOY_PATH" ]; then echo "Change working directory" echo "Current: `pwd`" echo "Target: $INPUT_DEPLOY_PATH" @@ -38,7 +34,7 @@ if $CHANGE_DIR ; then cd $INPUT_DEPLOY_PATH fi -if [ -z "${INPUT_DOCKER_REGISTRY_URI+x}" ]; then +if [ -z "${INPUT_DOCKER_REGISTRY_URI+x}" ] || [ -z "$INPUT_DOCKER_REGISTRY_URI" ]; then INPUT_DOCKER_REGISTRY_URI=https://registry.hub.docker.com fi @@ -52,10 +48,6 @@ chmod 600 ~/.ssh/id_rsa eval $(ssh-agent) ssh-add ~/.ssh/id_rsa -SSH_PROXY=true -if [ -z "${INPUT_SSH_PROXY_CMD+x}" ]; then - SSH_PROXY=false -fi echo "Add REMOTE_DOCKER_HOST alias to ~/.ssh/config" touch ~/.ssh/config echo >> ~/.ssh/config @@ -66,7 +58,7 @@ echo " Port $INPUT_REMOTE_DOCKER_PORT" >> ~/.ssh/config echo " IdentityFile ~/.ssh/id_rsa" >> ~/.ssh/config echo " StrictHostKeyChecking no" >> ~/.ssh/config echo " UserKnownHostsFile /dev/null" >> ~/.ssh/config -if $SSH_PROXY ; then +if ! [ -z "${INPUT_SSH_PROXY_CMD+x}" ] && ! [ -z "$INPUT_SSH_PROXY_CMD" ]; then echo "Add ProxyCommand: $INPUT_SSH_PROXY_CMD" echo " ProxyCommand $INPUT_SSH_PROXY_CMD" >> ~/.ssh/config fi -- 2.49.1