mirror of
https://github.com/appleboy/scp-action.git
synced 2025-09-03 18:46:48 +00:00
Some checks failed
v1 version / test deploy artifact (push) Failing after 3s
v1 version / test changed-files (push) Failing after 3s
v1 version / test Multiple Host (push) Failing after 2s
lint and test / test scp action (push) Failing after 2s
lint and test / test changed-files (push) Failing after 2s
lint and test / test target folder (push) Failing after 2s
v1 version / test scp action (push) Failing after 7m27s
v1 version / test target folder (push) Failing after 8m55s
lint and test / test deploy artifact (push) Failing after 10m24s
lint and test / test Multiple Host (push) Failing after 10m52s
* feat: avoid redundant binary downloads and notify when skipping - Skip downloading the binary if it already exists, and print a message instead Signed-off-by: appleboy <appleboy.tw@gmail.com> * Update entrypoint.sh Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --------- Signed-off-by: appleboy <appleboy.tw@gmail.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
61 lines
1.9 KiB
Bash
Executable File
61 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
export GITHUB="true"
|
|
|
|
GITHUB_ACTION_PATH="${GITHUB_ACTION_PATH%/}"
|
|
DRONE_SCP_RELEASE_URL="${DRONE_SCP_RELEASE_URL:-https://github.com/appleboy/drone-scp/releases/download}"
|
|
DRONE_SCP_VERSION="${DRONE_SCP_VERSION:-1.8.0}"
|
|
|
|
function log_error() {
|
|
echo "$1" >&2
|
|
exit "$2"
|
|
}
|
|
|
|
function detect_client_info() {
|
|
CLIENT_PLATFORM="${SCP_CLIENT_OS:-$(uname -s | tr '[:upper:]' '[:lower:]')}"
|
|
CLIENT_ARCH="${SCP_CLIENT_ARCH:-$(uname -m)}"
|
|
|
|
case "${CLIENT_PLATFORM}" in
|
|
darwin | linux | windows) ;;
|
|
*) log_error "Unknown or unsupported platform: ${CLIENT_PLATFORM}. Supported platforms are Linux, Darwin, and Windows." 2 ;;
|
|
esac
|
|
|
|
case "${CLIENT_ARCH}" in
|
|
x86_64* | i?86_64* | amd64*) CLIENT_ARCH="amd64" ;;
|
|
aarch64* | arm64*) CLIENT_ARCH="arm64" ;;
|
|
*) log_error "Unknown or unsupported architecture: ${CLIENT_ARCH}. Supported architectures are x86_64, i686, and arm64." 3 ;;
|
|
esac
|
|
}
|
|
|
|
detect_client_info
|
|
DOWNLOAD_URL_PREFIX="${DRONE_SCP_RELEASE_URL}/v${DRONE_SCP_VERSION}"
|
|
CLIENT_BINARY="drone-scp-${DRONE_SCP_VERSION}-${CLIENT_PLATFORM}-${CLIENT_ARCH}"
|
|
TARGET="${GITHUB_ACTION_PATH}/${CLIENT_BINARY}"
|
|
echo "Downloading ${CLIENT_BINARY} from ${DOWNLOAD_URL_PREFIX}"
|
|
INSECURE_OPTION=""
|
|
if [[ "${INPUT_CURL_INSECURE}" == 'true' ]]; then
|
|
INSECURE_OPTION="--insecure"
|
|
fi
|
|
|
|
if [[ ! -x "${TARGET}" ]]; then
|
|
curl -fsSL --retry 5 --keepalive-time 2 ${INSECURE_OPTION} "${DOWNLOAD_URL_PREFIX}/${CLIENT_BINARY}" -o "${TARGET}"
|
|
chmod +x "${TARGET}"
|
|
else
|
|
echo "Binary ${CLIENT_BINARY} already exists and is executable, skipping download."
|
|
fi
|
|
|
|
echo "======= CLI Version Information ======="
|
|
"${TARGET}" --version
|
|
echo "======================================="
|
|
if [[ "${INPUT_CAPTURE_STDOUT}" == 'true' ]]; then
|
|
{
|
|
echo 'stdout<<EOF'
|
|
"${TARGET}" "$@" | tee -a "${GITHUB_OUTPUT}"
|
|
echo 'EOF'
|
|
} >>"${GITHUB_OUTPUT}"
|
|
else
|
|
"${TARGET}" "$@"
|
|
fi
|