From d794fa507d98a2b8710a03df4089cd4be42add59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matias=20Nu=C3=B1ez?= Date: Fri, 20 May 2022 00:06:52 -0300 Subject: [PATCH 01/15] Add docker-compose down execution --- README.md | 26 ++++++++++++++++++++++++++ action.yml | 4 ++++ entrypoint.sh | 3 +++ 3 files changed, 33 insertions(+) diff --git a/README.md b/README.md index b59affb..407e157 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ unknown docker-images. It is entirely built from Dockerfile on top of container will have this prefix in name. * `docker_compose_filename` - Path to the docker-compose file in the repository. * `use_stack` - Use docker stack instead of docker-compose. + * `docker_compose_down` - Execute docker-compose-down. # Usage example @@ -124,3 +125,28 @@ jobs: use_stack: 'true' ``` +# Down deploy (Docker-compose down) +If you need to run a docker-compose down to do a clean rollback. Only one down of the +services will be executed To do that just set `docker_compose_down` input to `"true"`: +``` +name: Deploy +on: + push: + branches: [ master ] + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - actions/chockout@v2 + + - uses: alex-ac/github-action-ssh-docker-compose@master + name: Docker-Stack Remote Deployment + with: + ssh_host: example.com + ssh_private_key: ${{ secrets.EXAMPLE_COM_SSH_PRIVATE_KEY }} + ssh_user: ${{ secrets.EXAMPLE_COM_SSH_USER }} + docker_compose_prefix: example.com + docker_compose_down: 'true' +``` \ No newline at end of file diff --git a/action.yml b/action.yml index 1d4002a..ca901a1 100644 --- a/action.yml +++ b/action.yml @@ -23,6 +23,9 @@ inputs: use_stack: description: Use docker stack instead of docker compose ("true" or "false"). default: 'false' + docker_compose_down: + description: Execute docker-compose-down ("true" or "false"). + default: 'false' runs: using: docker image: Dockerfile @@ -34,3 +37,4 @@ runs: DOCKER_COMPOSE_FILENAME: ${{ inputs.docker_compose_filename }} DOCKER_COMPOSE_PREFIX: ${{ inputs.docker_compose_prefix }} USE_DOCKER_STACK: ${{ inputs.use_stack }} + DOCKER_COMPOSE_DOWN: ${{ inputs.docker_compose_down }} diff --git a/entrypoint.sh b/entrypoint.sh index 60dbc5b..ef4bebe 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -24,6 +24,9 @@ remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'R if $USE_DOCKER_STACK ; then remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\"" fi +if $DOCKER_COMPOSE_DOWN ; then + remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" down" +fi ssh-add <(echo "$SSH_PRIVATE_KEY") From 29b4b04bbfa6166cd218b32efcb8f2e3540c55a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matias=20Nu=C3=B1ez?= Date: Fri, 20 May 2022 00:16:06 -0300 Subject: [PATCH 02/15] Update action.yml --- action.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/action.yml b/action.yml index ca901a1..b99d2a1 100644 --- a/action.yml +++ b/action.yml @@ -1,5 +1,8 @@ name: SSH-Compose description: SSH into host and deploy repository with Docker-Compose +branding: + icon: server + color: purple inputs: ssh_private_key: description: Private SSH key used for logging into remote system. From d2e13949c92cb86a69ea36e83ebaa01d6d01de9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matias=20Nu=C3=B1ez?= Date: Sun, 22 May 2022 23:42:40 -0300 Subject: [PATCH 03/15] Pull images before up containers --- entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entrypoint.sh b/entrypoint.sh index ef4bebe..9b05d38 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -20,7 +20,7 @@ tar cjvf /tmp/workspace.tar.bz2 --exclude .git . log "Launching ssh agent." eval `ssh-agent -s` -remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" +remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" pull ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" if $USE_DOCKER_STACK ; then remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\"" fi From 7e8cc898fe30fd21f4e76563e19317d5f9916dbd Mon Sep 17 00:00:00 2001 From: Santeri Koivisto <33522543+Ma100Dev@users.noreply.github.com> Date: Thu, 25 Aug 2022 14:07:39 +0300 Subject: [PATCH 04/15] Update entrypoint.sh --- entrypoint.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 9b05d38..82bd067 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -11,7 +11,7 @@ cleanup() { ssh-agent -k log "Removing workspace archive." rm -f /tmp/workspace.tar.bz2 -} +}Removing workspace... trap cleanup EXIT log "Packing workspace into archive to transfer onto remote machine." @@ -20,11 +20,12 @@ tar cjvf /tmp/workspace.tar.bz2 --exclude .git . log "Launching ssh agent." eval `ssh-agent -s` -remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" pull ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" +remote_command= +"set -e && log() { echo '>> [remote]' \$@ ; } && rm -rf \"\$HOME/workspace\" && log 'Creating workspace directory...' && mkdir -p \"\$HOME/workspace\" && trap cleanup EXIT && log 'Unpacking workspace...' && tar -C \"\$HOME/workspace\" -xjv && log 'Launching docker-compose...' && cd \"\$HOME/workspace\" && docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" if $USE_DOCKER_STACK ; then remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\"" fi -if $DOCKER_COMPOSE_DOWN ; then +if $DOCKER_COMPOSshE_DOWN ; then remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" down" fi From 7bc54ade01db8955df01cb3c17b9deed89bc06fe Mon Sep 17 00:00:00 2001 From: Santeri Koivisto <33522543+Ma100Dev@users.noreply.github.com> Date: Thu, 25 Aug 2022 14:12:44 +0300 Subject: [PATCH 05/15] Update entrypoint.sh --- entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 82bd067..77356d7 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -21,11 +21,11 @@ log "Launching ssh agent." eval `ssh-agent -s` remote_command= -"set -e && log() { echo '>> [remote]' \$@ ; } && rm -rf \"\$HOME/workspace\" && log 'Creating workspace directory...' && mkdir -p \"\$HOME/workspace\" && trap cleanup EXIT && log 'Unpacking workspace...' && tar -C \"\$HOME/workspace\" -xjv && log 'Launching docker-compose...' && cd \"\$HOME/workspace\" && docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" +"set -e; log() { echo '>> [remote]' \$@ ; }; rm -rf \"\$HOME/workspace\" && log 'Creating workspace directory...' && mkdir -p \"\$HOME/workspace\" && trap cleanup EXIT && log 'Unpacking workspace...' && tar -C \"\$HOME/workspace\" -xjv && log 'Launching docker-compose...' && cd \"\$HOME/workspace\" && docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" if $USE_DOCKER_STACK ; then remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\"" fi -if $DOCKER_COMPOSshE_DOWN ; then +if $DOCKER_COMPOSshE_DOWN ; thenhttps://github.com/ remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" down" fi From 1e720b2ef376806280cfad9027114d6fe5fa528c Mon Sep 17 00:00:00 2001 From: Santeri Koivisto <33522543+Ma100Dev@users.noreply.github.com> Date: Thu, 25 Aug 2022 14:13:55 +0300 Subject: [PATCH 06/15] Update entrypoint.sh --- entrypoint.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 77356d7..9eaf9ba 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -20,8 +20,7 @@ tar cjvf /tmp/workspace.tar.bz2 --exclude .git . log "Launching ssh agent." eval `ssh-agent -s` -remote_command= -"set -e; log() { echo '>> [remote]' \$@ ; }; rm -rf \"\$HOME/workspace\" && log 'Creating workspace directory...' && mkdir -p \"\$HOME/workspace\" && trap cleanup EXIT && log 'Unpacking workspace...' && tar -C \"\$HOME/workspace\" -xjv && log 'Launching docker-compose...' && cd \"\$HOME/workspace\" && docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" +remote_command="set -e; log() { echo '>> [remote]' \$@ ; }; rm -rf \"\$HOME/workspace\" && log 'Creating workspace directory...' && mkdir -p \"\$HOME/workspace\" && trap cleanup EXIT && log 'Unpacking workspace...' && tar -C \"\$HOME/workspace\" -xjv && log 'Launching docker-compose...' && cd \"\$HOME/workspace\" && docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" if $USE_DOCKER_STACK ; then remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\"" fi From aaf52ca42e2b0785f721fd0309c19d0ef5106ee3 Mon Sep 17 00:00:00 2001 From: Santeri Koivisto <33522543+Ma100Dev@users.noreply.github.com> Date: Sun, 16 Oct 2022 00:02:19 +0300 Subject: [PATCH 07/15] Update entrypoint.sh --- entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/entrypoint.sh b/entrypoint.sh index 9b05d38..5f5797c 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -20,7 +20,7 @@ tar cjvf /tmp/workspace.tar.bz2 --exclude .git . log "Launching ssh agent." eval `ssh-agent -s` -remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" pull ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" +remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; screen ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" pull ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" if $USE_DOCKER_STACK ; then remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\"" fi From 6dd9807c73e61c6ead42b9db83d28098a04c7484 Mon Sep 17 00:00:00 2001 From: Santeri Koivisto <33522543+Ma100Dev@users.noreply.github.com> Date: Sun, 16 Oct 2022 00:08:07 +0300 Subject: [PATCH 08/15] Delete entrypoint.sh --- entrypoint.sh | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 entrypoint.sh diff --git a/entrypoint.sh b/entrypoint.sh deleted file mode 100644 index 9eaf9ba..0000000 --- a/entrypoint.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/usb/bin/env bash -set -e - -log() { - echo ">> [local]" $@ -} - -cleanup() { - set +e - log "Killing ssh agent." - ssh-agent -k - log "Removing workspace archive." - rm -f /tmp/workspace.tar.bz2 -}Removing workspace... -trap cleanup EXIT - -log "Packing workspace into archive to transfer onto remote machine." -tar cjvf /tmp/workspace.tar.bz2 --exclude .git . - -log "Launching ssh agent." -eval `ssh-agent -s` - -remote_command="set -e; log() { echo '>> [remote]' \$@ ; }; rm -rf \"\$HOME/workspace\" && log 'Creating workspace directory...' && mkdir -p \"\$HOME/workspace\" && trap cleanup EXIT && log 'Unpacking workspace...' && tar -C \"\$HOME/workspace\" -xjv && log 'Launching docker-compose...' && cd \"\$HOME/workspace\" && docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" -if $USE_DOCKER_STACK ; then - remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\"" -fi -if $DOCKER_COMPOSshE_DOWN ; thenhttps://github.com/ - remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" down" -fi - -ssh-add <(echo "$SSH_PRIVATE_KEY") - -echo ">> [local] Connecting to remote host." -ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ - "$SSH_USER@$SSH_HOST" -p "$SSH_PORT" \ - "$remote_command" \ - < /tmp/workspace.tar.bz2 From f994cc7c23d2362b7935ae85714aec1d710e20a6 Mon Sep 17 00:00:00 2001 From: Santeri Koivisto <33522543+Ma100Dev@users.noreply.github.com> Date: Sun, 16 Oct 2022 18:44:59 +0300 Subject: [PATCH 09/15] Update entrypoint.sh --- entrypoint.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 5f5797c..afaba4f 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -20,18 +20,18 @@ tar cjvf /tmp/workspace.tar.bz2 --exclude .git . log "Launching ssh agent." eval `ssh-agent -s` -remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; screen ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" pull ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" +remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; screen ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" pull ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build ; exit" if $USE_DOCKER_STACK ; then - remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\"" + remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; screen ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\" ; exit" fi if $DOCKER_COMPOSE_DOWN ; then - remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" down" + remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; screen ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" down ; exit" fi ssh-add <(echo "$SSH_PRIVATE_KEY") echo ">> [local] Connecting to remote host." -ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ +ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ServerAliveInterval=100 \ "$SSH_USER@$SSH_HOST" -p "$SSH_PORT" \ "$remote_command" \ < /tmp/workspace.tar.bz2 From 7bace40750047c51dfb50b3cdf15304de4171931 Mon Sep 17 00:00:00 2001 From: Santeri Koivisto <33522543+Ma100Dev@users.noreply.github.com> Date: Sun, 16 Oct 2022 18:57:01 +0300 Subject: [PATCH 10/15] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 407e157..fdeb888 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Simple github action to run docker-compose on remote host. This action packs contents of the action workspace into archive. Logs into remote host via ssh. Unpacks the workspace there and runs -`docker-compose up -d` command. +`docker-compose up -d` command. Measures are taken to keep the connection alive. Comparing to other actions with similar behavior this one does not use any unknown docker-images. It is entirely built from Dockerfile on top of @@ -149,4 +149,4 @@ jobs: ssh_user: ${{ secrets.EXAMPLE_COM_SSH_USER }} docker_compose_prefix: example.com docker_compose_down: 'true' -``` \ No newline at end of file +``` From 1dd6a000e5c275dbb89b8d6596cea80b4ea7185c Mon Sep 17 00:00:00 2001 From: Santeri Koivisto <33522543+Ma100Dev@users.noreply.github.com> Date: Tue, 18 Oct 2022 20:18:08 +0300 Subject: [PATCH 11/15] Update entrypoint.sh --- entrypoint.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index afaba4f..d9aa29e 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -20,12 +20,12 @@ tar cjvf /tmp/workspace.tar.bz2 --exclude .git . log "Launching ssh agent." eval `ssh-agent -s` -remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; screen ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" pull ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build ; exit" +remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" pull ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" if $USE_DOCKER_STACK ; then - remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; screen ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\" ; exit" + remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\"" fi if $DOCKER_COMPOSE_DOWN ; then - remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; screen ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" down ; exit" + remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" down" fi ssh-add <(echo "$SSH_PRIVATE_KEY") From 14c0c0c7ca81e436db59110e141b8bdcdc7496f3 Mon Sep 17 00:00:00 2001 From: Santeri Koivisto <33522543+Ma100Dev@users.noreply.github.com> Date: Tue, 18 Oct 2022 23:31:25 +0300 Subject: [PATCH 12/15] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fdeb888..f63f7fd 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,9 @@ Simple github action to run docker-compose on remote host. This action packs contents of the action workspace into archive. Logs into remote host via ssh. Unpacks the workspace there and runs -`docker-compose up -d` command. Measures are taken to keep the connection alive. +`docker-compose up -d` command. +The connection is attempted to be kept alive using a `ServerAliveInterval` +of 100 with SSH, which may help with long deploys. Comparing to other actions with similar behavior this one does not use any unknown docker-images. It is entirely built from Dockerfile on top of From 09f51fd90da38fef19d0c799511950221fa12671 Mon Sep 17 00:00:00 2001 From: Sergej Frank Date: Mon, 26 Feb 2024 21:04:42 +0100 Subject: [PATCH 13/15] use docker native compose --- entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index d9aa29e..260e969 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -20,12 +20,12 @@ tar cjvf /tmp/workspace.tar.bz2 --exclude .git . log "Launching ssh agent." eval `ssh-agent -s` -remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" pull ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" +remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker compose...' ; cd \"\$HOME/workspace\" ; docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" pull ; docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" up -d --remove-orphans --build" if $USE_DOCKER_STACK ; then remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" -xjv ; log 'Launching docker stack deploy...' ; cd \"\$HOME/workspace/$DOCKER_COMPOSE_PREFIX\" ; docker stack deploy -c \"$DOCKER_COMPOSE_FILENAME\" --prune \"$DOCKER_COMPOSE_PREFIX\"" fi if $DOCKER_COMPOSE_DOWN ; then - remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker-compose...' ; cd \"\$HOME/workspace\" ; docker-compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" down" + remote_command="set -e ; log() { echo '>> [remote]' \$@ ; } ; cleanup() { log 'Removing workspace...'; rm -rf \"\$HOME/workspace\" ; } ; log 'Creating workspace directory...' ; mkdir -p \"\$HOME/workspace\" ; trap cleanup EXIT ; log 'Unpacking workspace...' ; tar -C \"\$HOME/workspace\" -xjv ; log 'Launching docker compose...' ; cd \"\$HOME/workspace\" ; docker compose -f \"$DOCKER_COMPOSE_FILENAME\" -p \"$DOCKER_COMPOSE_PREFIX\" down" fi ssh-add <(echo "$SSH_PRIVATE_KEY") From cd69ee74de318c724c8e6d8d34d8a6294eb2eb55 Mon Sep 17 00:00:00 2001 From: Santeri Koivisto <33522543+Ma100Dev@users.noreply.github.com> Date: Fri, 24 May 2024 19:31:29 +0300 Subject: [PATCH 14/15] Update Dockerfile Use latest Alpine --- Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 828c180..7bc0544 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,4 @@ -FROM alpine:3.8 -LABEL maintainer="ya.alex-ac@yandex.com" +FROM alpine:latest RUN apk add --no-cache openssh bash ADD entrypoint.sh /entrypoint.sh WORKDIR /github/workspace From 939fca7cb1435b087116d020e5ff0084640acf69 Mon Sep 17 00:00:00 2001 From: Santeri Koivisto <33522543+Ma100Dev@users.noreply.github.com> Date: Fri, 24 May 2024 19:42:37 +0300 Subject: [PATCH 15/15] Update entrypoint.sh Add debug logging --- entrypoint.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/entrypoint.sh b/entrypoint.sh index 260e969..86e6faf 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -30,7 +30,9 @@ fi ssh-add <(echo "$SSH_PRIVATE_KEY") +echo ">> [local] Built command: ${remote_command}" echo ">> [local] Connecting to remote host." + ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ServerAliveInterval=100 \ "$SSH_USER@$SSH_HOST" -p "$SSH_PORT" \ "$remote_command" \