fix(jenkins): download provision tools on build agent
This commit is contained in:
@@ -4,10 +4,11 @@ set -euo pipefail
|
||||
PROVISION_TOOLS_DIR="${PROVISION_TOOLS_DIR:-provision-tools}"
|
||||
OTELCOL_VERSION="${OTELCOL_VERSION:-0.151.0}"
|
||||
PREPARE_OTELCOL="${PREPARE_OTELCOL:-${ENABLE_OTELCOL:-true}}"
|
||||
OTELCOL_ARCHIVE_SOURCE="${OTELCOL_ARCHIVE_SOURCE:-}"
|
||||
OTELCOL_DOWNLOAD_ROOT="${OTELCOL_DOWNLOAD_ROOT:-https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download}"
|
||||
SPACETIME_INSTALLER_URL="${SPACETIME_INSTALLER_URL:-https://install.spacetimedb.com}"
|
||||
SPACETIME_DOWNLOAD_ROOT="${SPACETIME_DOWNLOAD_ROOT:-https://github.com/clockworklabs/SpacetimeDB/releases/latest/download}"
|
||||
PROVISION_DOWNLOAD_PROXY="${PROVISION_DOWNLOAD_PROXY:-}"
|
||||
PROVISION_NO_PROXY="${PROVISION_NO_PROXY:-127.0.0.1,localhost}"
|
||||
PROVISION_TOOLS_TMP_PARENT="${PROVISION_TOOLS_TMP_PARENT:-${WORKSPACE:-$(pwd)}/.tmp/server-provision-tools}"
|
||||
TMP_DIR_TO_CLEAN=""
|
||||
OTELCOL_SOURCE_DESCRIPTION="skipped"
|
||||
@@ -26,6 +27,22 @@ require_cmd() {
|
||||
fi
|
||||
}
|
||||
|
||||
configure_download_proxy() {
|
||||
if [[ -z "${PROVISION_DOWNLOAD_PROXY}" ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
export HTTP_PROXY="${PROVISION_DOWNLOAD_PROXY}"
|
||||
export HTTPS_PROXY="${PROVISION_DOWNLOAD_PROXY}"
|
||||
export ALL_PROXY="${PROVISION_DOWNLOAD_PROXY}"
|
||||
export http_proxy="${PROVISION_DOWNLOAD_PROXY}"
|
||||
export https_proxy="${PROVISION_DOWNLOAD_PROXY}"
|
||||
export all_proxy="${PROVISION_DOWNLOAD_PROXY}"
|
||||
export NO_PROXY="${PROVISION_NO_PROXY}"
|
||||
export no_proxy="${PROVISION_NO_PROXY}"
|
||||
echo "[prepare-provision-tools] 已配置下载代理: ${PROVISION_DOWNLOAD_PROXY%%://*}://***"
|
||||
}
|
||||
|
||||
download_file() {
|
||||
local url="$1"
|
||||
local output="$2"
|
||||
@@ -57,25 +74,14 @@ prepare_otelcol() {
|
||||
local archive="${tmp_dir}/otelcol-contrib.tar.gz"
|
||||
local extract_dir="${tmp_dir}/otelcol-contrib"
|
||||
local url="${OTELCOL_DOWNLOAD_ROOT}/v${OTELCOL_VERSION}/otelcol-contrib_${OTELCOL_VERSION}_linux_amd64.tar.gz"
|
||||
local source_archive="${OTELCOL_ARCHIVE_SOURCE}"
|
||||
local target="${PROVISION_TOOLS_DIR}/otelcol-contrib"
|
||||
|
||||
require_cmd tar
|
||||
|
||||
echo "[prepare-provision-tools] 下载 otelcol-contrib: ${url}"
|
||||
mkdir -p "${extract_dir}"
|
||||
if [[ -n "${source_archive}" ]]; then
|
||||
if [[ ! -f "${source_archive}" ]]; then
|
||||
echo "[prepare-provision-tools] 上传的 otelcol-contrib 包不存在: ${source_archive}" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "[prepare-provision-tools] 使用手动上传的 otelcol-contrib 包: ${source_archive}"
|
||||
cp "${source_archive}" "${archive}"
|
||||
OTELCOL_SOURCE_DESCRIPTION="manual archive ${source_archive}"
|
||||
else
|
||||
echo "[prepare-provision-tools] 下载 otelcol-contrib: ${url}"
|
||||
download_file "${url}" "${archive}"
|
||||
OTELCOL_SOURCE_DESCRIPTION="download ${url}"
|
||||
fi
|
||||
download_file "${url}" "${archive}"
|
||||
OTELCOL_SOURCE_DESCRIPTION="download ${url}"
|
||||
tar -xzf "${archive}" -C "${extract_dir}"
|
||||
|
||||
if [[ ! -x "${extract_dir}/otelcol-contrib" ]]; then
|
||||
@@ -123,6 +129,8 @@ main() {
|
||||
require_cmd mktemp
|
||||
require_cmd rm
|
||||
|
||||
configure_download_proxy
|
||||
|
||||
mkdir -p "${PROVISION_TOOLS_TMP_PARENT}"
|
||||
tmp_dir="$(mktemp -d "${PROVISION_TOOLS_TMP_PARENT%/}/run.XXXXXX")"
|
||||
TMP_DIR_TO_CLEAN="${tmp_dir}"
|
||||
|
||||
Reference in New Issue
Block a user