From 7f45331dd32e838e079c9c317386d9efd3e59f79 Mon Sep 17 00:00:00 2001 From: Jesse Quinn Date: Wed, 27 Nov 2019 09:32:11 -0300 Subject: [PATCH 1/7] added gitignore and pre and post script possibilities --- .gitignore | 2 ++ upload.sh | 25 +++++++++++++++++++------ 2 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..006142f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.idea/ +/drone-rsync.iml diff --git a/upload.sh b/upload.sh index 4aa03db..7c2cb71 100755 --- a/upload.sh +++ b/upload.sh @@ -100,10 +100,15 @@ fi echo "$SSH_KEY" > $keyfile chmod 0600 $keyfile -# Parse SSH commands +# Parse SSH precommands function join_with { local d=$1; shift; echo -n "$1"; shift; printf "%s" "${@/#/$d}"; } -IFS=','; read -ra COMMANDS <<< "$PLUGIN_SCRIPT" -script=$(join_with ' && ' "${COMMANDS[@]}") +IFS=','; read -ra COMMANDS <<< "$PLUGIN_PRESCRIPT" +prescript=$(join_with ' && ' "${COMMANDS[@]}") + +# Parse SSH postcommands +function join_with { local d=$1; shift; echo -n "$1"; shift; printf "%s" "${@/#/$d}"; } +IFS=','; read -ra COMMANDS <<< "$PLUGIN_POSTSCRIPT" +postscript=$(join_with ' && ' "${COMMANDS[@]}") # Run rsync IFS=','; read -ra HOSTS <<< "$PLUGIN_HOSTS" @@ -119,13 +124,21 @@ do PORT=$DEFAULT_PORT fi echo $(printf "%s" "$ $(printf "$expr" "$PORT") $USER@$HOST:$PLUGIN_TARGET ...") + if [ -n "$PLUGIN_PRESCRIPT" ]; then + echo $(printf "%s" "$ ssh -p $PORT $USER@$HOST ...") + echo $(printf "%s" " > $prescript ...") + eval "ssh -p $PORT $USER@$HOST '$prescript'" + result=$(($result+$?)) + echo $(printf "%s" "$ ssh -p $PORT $USER@$HOST result: $?") + if [ "$result" -gt "0" ]; then exit $result; fi + fi eval "$(printf "$expr" "$PORT") $USER@$HOST:$PLUGIN_TARGET" result=$(($result+$?)) if [ "$result" -gt "0" ]; then exit $result; fi - if [ -n "$PLUGIN_SCRIPT" ]; then + if [ -n "$PLUGIN_POSTSCRIPT" ]; then echo $(printf "%s" "$ ssh -p $PORT $USER@$HOST ...") - echo $(printf "%s" " > $script ...") - eval "ssh -p $PORT $USER@$HOST '$script'" + echo $(printf "%s" " > $postscript ...") + eval "ssh -p $PORT $USER@$HOST '$postscript'" result=$(($result+$?)) echo $(printf "%s" "$ ssh -p $PORT $USER@$HOST result: $?") if [ "$result" -gt "0" ]; then exit $result; fi From 453b74ab9ca401d4399308f854e722884fc74ee1 Mon Sep 17 00:00:00 2001 From: Jesse Quinn Date: Wed, 27 Nov 2019 09:56:53 -0300 Subject: [PATCH 2/7] updated gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 006142f..877ac29 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /.idea/ /drone-rsync.iml +/test.sh From 8acd9606340b7aeb292097277f0d0167066d223e Mon Sep 17 00:00:00 2001 From: Jesse Quinn Date: Wed, 27 Nov 2019 09:59:20 -0300 Subject: [PATCH 3/7] updated DOCs --- 1-DOCS.md | 5 +++-- README.md | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/1-DOCS.md b/1-DOCS.md index e0530c8..9b08fb8 100644 --- a/1-DOCS.md +++ b/1-DOCS.md @@ -12,7 +12,8 @@ The following parameters are used to configure the plugin: - **exclude** - rsync exclude filter - **recursive** - recursively synchronize, defaults to `false` - **delete** - delete target folder contents, defaults to `false` -- **script** - list of commands to execute on remote machines +- **prescript** - list of commands to execute on remote machines before rsync occurs +- **postscript** - list of commands to execute on remote machines after rsync occurs ## Secrets The following secrets can be used to secure the sensitive parts of your configuration: @@ -73,7 +74,7 @@ steps: - "app.tar.gz.md5" exclude: - "**.*" - script: + postscript: - cd ~/packages - md5sum -c app.tar.gz.md5 - tar -xf app.tar.gz -C ~/app diff --git a/README.md b/README.md index c296860..7b1f930 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,8 @@ docker run --rm \ -e PLUGIN_HOSTS="127.0.0.1, 127.0.0.2, 127.0.0.3" \ -e PLUGIN_PORTS="22, 23, 24" \ -e PLUGIN_TARGET="./" \ - -e PLUGIN_SCRIPT="echo \"Done!\"" \ + -e PLUGIN_PRESCRIPT="echo \"Prescript Done!\"" \ + -e PLUGIN_POSTSCRIPT="echo \"Postscript Done!\"" \ -e PLUGIN_ARGS="--blocking-io" \ -v $(pwd):$(pwd) \ -w $(pwd) \ From 9e935426bd1d6982940a0a57fd84b3f1cc6afc86 Mon Sep 17 00:00:00 2001 From: Jesse Quinn Date: Wed, 27 Nov 2019 17:22:48 -0300 Subject: [PATCH 4/7] updated code to new maintainer and using latest alpine --- 1-DOCS.md | 2 +- Dockerfile | 8 ++++---- upload.sh => drone.sh | 0 3 files changed, 5 insertions(+), 5 deletions(-) rename upload.sh => drone.sh (100%) diff --git a/1-DOCS.md b/1-DOCS.md index 9b08fb8..8e688c8 100644 --- a/1-DOCS.md +++ b/1-DOCS.md @@ -74,7 +74,7 @@ steps: - "app.tar.gz.md5" exclude: - "**.*" - postscript: + postscript: - cd ~/packages - md5sum -c app.tar.gz.md5 - tar -xf app.tar.gz -C ~/app diff --git a/Dockerfile b/Dockerfile index 4c84e0c..2a23e51 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ -FROM alpine:3.4 -MAINTAINER Michael de Wit +FROM alpine:latest +MAINTAINER Jesse Quinn RUN apk add --no-cache ca-certificates bash openssh-client rsync -COPY upload.sh /usr/local/ +COPY drone.sh /usr/local/ -ENTRYPOINT ["/usr/local/upload.sh"] +ENTRYPOINT ["/usr/local/drone.sh"] diff --git a/upload.sh b/drone.sh similarity index 100% rename from upload.sh rename to drone.sh From be77164f5533227cd3b472b2bcc473ff13317f3a Mon Sep 17 00:00:00 2001 From: Jesse Quinn Date: Thu, 28 Nov 2019 07:16:46 -0300 Subject: [PATCH 5/7] updated for PR concerns --- .gitignore | 3 --- Dockerfile | 8 ++++---- drone.sh => upload.sh | 10 +++++----- 3 files changed, 9 insertions(+), 12 deletions(-) delete mode 100644 .gitignore rename drone.sh => upload.sh (95%) diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 877ac29..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/.idea/ -/drone-rsync.iml -/test.sh diff --git a/Dockerfile b/Dockerfile index 2a23e51..4c84e0c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ -FROM alpine:latest -MAINTAINER Jesse Quinn +FROM alpine:3.4 +MAINTAINER Michael de Wit RUN apk add --no-cache ca-certificates bash openssh-client rsync -COPY drone.sh /usr/local/ +COPY upload.sh /usr/local/ -ENTRYPOINT ["/usr/local/drone.sh"] +ENTRYPOINT ["/usr/local/upload.sh"] diff --git a/drone.sh b/upload.sh similarity index 95% rename from drone.sh rename to upload.sh index 7c2cb71..86feda0 100755 --- a/drone.sh +++ b/upload.sh @@ -8,6 +8,7 @@ if [ -z "$PLUGIN_TARGET" ]; then echo "Specify a target!" exit 1 fi + DEFAULT_PORT=$PLUGIN_PORT if [ -z "$PLUGIN_PORT" ]; then echo "Port not specified, using default port 22!" @@ -100,14 +101,13 @@ fi echo "$SSH_KEY" > $keyfile chmod 0600 $keyfile -# Parse SSH precommands function join_with { local d=$1; shift; echo -n "$1"; shift; printf "%s" "${@/#/$d}"; } + +# Parse SSH precommands IFS=','; read -ra COMMANDS <<< "$PLUGIN_PRESCRIPT" prescript=$(join_with ' && ' "${COMMANDS[@]}") - # Parse SSH postcommands -function join_with { local d=$1; shift; echo -n "$1"; shift; printf "%s" "${@/#/$d}"; } -IFS=','; read -ra COMMANDS <<< "$PLUGIN_POSTSCRIPT" +IFS=','; read -ra COMMANDS <<< "$PLUGIN_SCRIPT" postscript=$(join_with ' && ' "${COMMANDS[@]}") # Run rsync @@ -135,7 +135,7 @@ do eval "$(printf "$expr" "$PORT") $USER@$HOST:$PLUGIN_TARGET" result=$(($result+$?)) if [ "$result" -gt "0" ]; then exit $result; fi - if [ -n "$PLUGIN_POSTSCRIPT" ]; then + if [ -n "$PLUGIN_SCRIPT" ]; then echo $(printf "%s" "$ ssh -p $PORT $USER@$HOST ...") echo $(printf "%s" " > $postscript ...") eval "ssh -p $PORT $USER@$HOST '$postscript'" From 9f746c264d17aa22efbb4c702493952cdf88d300 Mon Sep 17 00:00:00 2001 From: Jesse Quinn Date: Thu, 28 Nov 2019 07:18:58 -0300 Subject: [PATCH 6/7] updated README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7b1f930..a7a2b51 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ docker run --rm \ -e PLUGIN_PORTS="22, 23, 24" \ -e PLUGIN_TARGET="./" \ -e PLUGIN_PRESCRIPT="echo \"Prescript Done!\"" \ - -e PLUGIN_POSTSCRIPT="echo \"Postscript Done!\"" \ + -e PLUGIN_SCRIPT="echo \"Postscript Done!\"" \ -e PLUGIN_ARGS="--blocking-io" \ -v $(pwd):$(pwd) \ -w $(pwd) \ From d389abaac303709a4c49d6d3e50a5f14d3b999d1 Mon Sep 17 00:00:00 2001 From: Jesse Quinn Date: Fri, 29 Nov 2019 10:15:02 -0300 Subject: [PATCH 7/7] updated DOCs --- 0-DOCS.md | 4 ++++ 1-DOCS.md | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/0-DOCS.md b/0-DOCS.md index 55c931c..c27a7af 100644 --- a/0-DOCS.md +++ b/0-DOCS.md @@ -59,6 +59,10 @@ pipeline: - "app.tar.gz.md5" exclude: - "**.*" + prescript: + - cd ~/packages + - md5sum -c app.tar.gz.md5 + - tar -xf app.tar.gz -C ~/app script: - cd ~/packages - md5sum -c app.tar.gz.md5 diff --git a/1-DOCS.md b/1-DOCS.md index 8e688c8..9b79998 100644 --- a/1-DOCS.md +++ b/1-DOCS.md @@ -74,7 +74,11 @@ steps: - "app.tar.gz.md5" exclude: - "**.*" - postscript: + prescript: + - cd ~/packages + - md5sum -c app.tar.gz.md5 + - tar -xf app.tar.gz -C ~/app + script: - cd ~/packages - md5sum -c app.tar.gz.md5 - tar -xf app.tar.gz -C ~/app