|
1 | 1 | #!/usr/bin/env bash |
| 2 | +# https://github.com/cssnr/stack-deploy-action |
2 | 3 |
|
3 | 4 | set -e |
4 | 5 |
|
5 | | -echo "Running: ${0} as: $(whoami) in: $(pwd)" |
6 | | - |
7 | 6 | function cleanup_trap() { |
8 | 7 | _ST="$?" |
9 | 8 | if [[ "${_ST}" != "0" ]]; then |
10 | | - echo -e "\u001b[31;1mScript Exited with Error: ${_ST}" |
| 9 | + echo -e "⛔ \u001b[31;1mFailed to Deploy Stack! See logs for details..." |
11 | 10 | fi |
12 | 11 | if [ -z "${INPUT_SSH_KEY}" ];then |
13 | | - echo -e "\u001b[35mCleaning Up authorized_keys on: ${INPUT_HOST}" |
| 12 | + echo -e "Cleaning Up authorized_keys on: \u001b[36;1m${INPUT_HOST}" |
14 | 13 | ssh -p "${INPUT_PORT}" "${INPUT_USER}@${INPUT_HOST}" \ |
15 | 14 | "sed -i '/docker-stack-deploy-action/d' ~/.ssh/authorized_keys" |
16 | 15 | fi |
17 | 16 | if [[ "${_ST}" == "0" ]]; then |
18 | | - echo -e "\u001b[32;1mFinished Success." |
| 17 | + echo -e "✅ \u001b[32;1mFinished Success." |
19 | 18 | fi |
20 | 19 | exit "${_ST}" |
21 | 20 | } |
22 | 21 |
|
| 22 | +echo "::group::Starting Stack Deploy Action" |
| 23 | +echo "User: $(whoami)" |
| 24 | +echo "Script: ${0}" |
| 25 | +echo -e "Directory: $(pwd)" |
23 | 26 | mkdir -p /root/.ssh |
24 | 27 | chmod 0700 /root/.ssh |
25 | 28 | ssh-keyscan -p "${INPUT_PORT}" -H "${INPUT_HOST}" >> /root/.ssh/known_hosts |
| 29 | +echo "::endgroup::" |
26 | 30 |
|
27 | 31 | if [ -z "${INPUT_SSH_KEY}" ];then |
28 | | - echo -e "\u001b[36mCreating and Copying SSH Key to: ${INPUT_HOST}" |
| 32 | + echo -e "::group::Copying SSH Key to: \u001b[36;1m${INPUT_HOST}" |
29 | 33 | ssh-keygen -q -f /root/.ssh/id_rsa -N "" -C "docker-stack-deploy-action" |
30 | 34 | eval "$(ssh-agent -s)" |
31 | 35 | ssh-add /root/.ssh/id_rsa |
32 | | - |
33 | | - sshpass -p "${INPUT_PASS}" \ |
34 | | - ssh-copy-id -p "${INPUT_PORT}" -i /root/.ssh/id_rsa \ |
35 | | - "${INPUT_USER}@${INPUT_HOST}" |
| 36 | + mkdir ~/.ssh |
| 37 | + sshpass -eINPUT_PASS \ |
| 38 | + ssh-copy-id -i /root/.ssh/id_rsa -o ConnectTimeout=15 \ |
| 39 | + -p "${INPUT_PORT}" "${INPUT_USER}@${INPUT_HOST}" |
36 | 40 | else |
37 | | - echo -e "\u001b[36mAdding SSH Key to SSH Agent" |
| 41 | + echo "::group::Adding SSH Key to SSH Agent" |
38 | 42 | echo "${INPUT_SSH_KEY}" > /root/.ssh/id_rsa |
39 | 43 | chmod 0600 /root/.ssh/id_rsa |
40 | 44 | eval "$(ssh-agent -s)" |
41 | 45 | ssh-add /root/.ssh/id_rsa |
42 | 46 | fi |
| 47 | +echo "::endgroup::" |
43 | 48 |
|
44 | 49 | trap cleanup_trap EXIT HUP INT QUIT PIPE TERM |
45 | 50 |
|
46 | | -echo -e "\u001b[36mVerifying Docker and Setting Context." |
47 | | -ssh -p "${INPUT_PORT}" "${INPUT_USER}@${INPUT_HOST}" "docker info" > /dev/null |
48 | | - |
| 51 | +echo "::group::Verifying Docker and Setting Context." |
| 52 | +ssh -o BatchMode=yes -o ConnectTimeout=15 -p "${INPUT_PORT}" \ |
| 53 | + "${INPUT_USER}@${INPUT_HOST}" "docker info" > /dev/null |
49 | 54 | if ! docker context inspect remote >/dev/null 2>&1;then |
50 | 55 | docker context create remote --docker "host=ssh://${INPUT_USER}@${INPUT_HOST}:${INPUT_PORT}" |
51 | 56 | fi |
52 | 57 | docker context use remote |
53 | 58 | docker context ls |
| 59 | +echo "::endgroup::" |
54 | 60 |
|
55 | 61 | if [ -n "${INPUT_ENV_FILE}" ];then |
56 | | - echo -e "\u001b[36mSourcing Environment File: \u001b[37;1m${INPUT_ENV_FILE}" |
| 62 | + echo -e "::group::Sourcing Environment File: \u001b[36;1m${INPUT_ENV_FILE}" |
57 | 63 | stat "${INPUT_ENV_FILE}" |
58 | 64 | set -a |
59 | 65 | # shellcheck disable=SC1090 |
60 | 66 | source "${INPUT_ENV_FILE}" |
61 | | - # echo TRAEFIK_HOST: "${TRAEFIK_HOST}" |
62 | | - # export ENV_FILE="${INPUT_ENV_FILE}" |
| 67 | +echo "::endgroup::" |
63 | 68 | fi |
64 | 69 |
|
65 | 70 | if [[ -n "${INPUT_REGISTRY_USER}" && -n "${INPUT_REGISTRY_PASS}" ]];then |
66 | | - echo -e "\u001b[36mLogging in to Registry: \u001b[37;1m${INPUT_REGISTRY_HOST:-Docker Hub}" |
| 71 | + echo -e "::group::Logging in to Registry: \u001b[36;1m${INPUT_REGISTRY_HOST:-Docker Hub}" |
67 | 72 | echo "${INPUT_REGISTRY_PASS}" | |
68 | 73 | docker login --username "${INPUT_REGISTRY_USER}" --password-stdin "${INPUT_REGISTRY_HOST}" |
69 | 74 | INPUT_REGISTRY_AUTH="true" |
| 75 | + echo "::endgroup::" |
70 | 76 | fi |
71 | 77 |
|
| 78 | +echo -e "Deploying Stack: \u001b[36;1m${INPUT_NAME}" |
72 | 79 | EXTRA_ARGS=() |
73 | 80 | if [[ -n "${INPUT_REGISTRY_AUTH}" ]];then |
74 | | - echo -e "Adding extra arg: --with-registry-auth" |
| 81 | + echo -e "Enabling Registry Authentication" |
75 | 82 | EXTRA_ARGS+=("--with-registry-auth") |
76 | 83 | fi |
| 84 | +# shellcheck disable=SC2034 |
| 85 | +STACK_RESULTS=$(docker stack deploy -c "${INPUT_FILE}" "${INPUT_NAME}" "${EXTRA_ARGS[@]}") |
77 | 86 |
|
78 | | -echo -e "\u001b[36mDeploying Stack: \u001b[37;1m${INPUT_NAME}" |
79 | | -docker stack deploy -c "${INPUT_FILE}" "${INPUT_NAME}" "${EXTRA_ARGS[@]}" |
| 87 | +if [[ "${INPUT_SUMMARY}" == "true" ]];then |
| 88 | + echo "📝 Writing Job Summary" |
| 89 | + source /src/summary.sh >> "${GITHUB_STEP_SUMMARY}" |
| 90 | +fi |
0 commit comments