diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 0cfe144e1..814b6e543 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -32,6 +32,9 @@ builds: - arm - ppc64le - s390x + hooks: + post: + - ./ci/script.sh compress_binary {{ .Path }} {{ .Arch }} - id: core dir: core @@ -54,6 +57,9 @@ builds: - arm - ppc64le - s390x + hooks: + post: + - ./ci/script.sh compress_binary {{ .Path }} {{ .Arch }} archives: - formats: [ 'tar.gz' ] diff --git a/ci/script.sh b/ci/script.sh index be3b70fbd..4e49a58ea 100755 --- a/ci/script.sh +++ b/ci/script.sh @@ -1,36 +1,79 @@ #!/bin/bash -command -v wget >/dev/null || { - echo "wget not found, please install it and try again ." - exit 1 +set -e + +download_resources() { + command -v wget >/dev/null || { + echo "wget not found, please install it and try again." + exit 1 + } + + if [ ! -f "1pctl" ]; then + wget https://github.com/1Panel-dev/installer/raw/v2/1pctl + fi + + if [ ! -f "install.sh" ]; then + wget https://github.com/1Panel-dev/installer/raw/v2/install.sh + fi + + if [ ! -f "1panel-core.service" ]; then + wget https://github.com/1Panel-dev/installer/raw/v2/1panel-core.service + fi + + if [ ! -f "1panel-agent.service" ]; then + wget https://github.com/1Panel-dev/installer/raw/v2/1panel-agent.service + fi + + if [ ! -d "lang" ]; then + mkdir -p lang && cd lang + for lang in en fa pt-BR ru zh; do + wget -q https://github.com/1Panel-dev/installer/raw/v2/lang/$lang.sh + done + cd .. + fi + + if [ ! -f "GeoIP.mmdb" ]; then + wget https://resource.fit2cloud.com/1panel/package/v2/geo/GeoIP.mmdb + fi + + chmod 755 1pctl install.sh } -if [ ! -f "1pctl" ]; then - wget https://github.com/1Panel-dev/installer/raw/v2/1pctl -fi +compress_binary() { + local binary_path="$1" + local arch="$2" -if [ ! -f "install.sh" ]; then - wget https://github.com/1Panel-dev/installer/raw/v2/install.sh -fi + echo "Attempting to compress: $binary_path for arch: $arch" -if [ ! -f "1panel-core.service" ]; then - wget https://github.com/1Panel-dev/installer/raw/v2/1panel-core.service -fi + if [ "$arch" = "s390x" ]; then + echo "Skipping UPX compression for s390x" + return + fi -if [ ! -f "1panel-agent.service" ]; then - wget https://github.com/1Panel-dev/installer/raw/v2/1panel-agent.service -fi + if ! command -v upx >/dev/null; then + echo "Installing upx..." + if [ "$(uname -m)" = "s390x" ]; then + echo "UPX not supported on s390x" + return + fi -if [ ! -d "lang" ]; then - mkdir -p lang && cd lang - for lang in en fa pt-BR ru zh; do - wget -q https://github.com/1Panel-dev/installer/raw/v2/lang/$lang.sh - done - cd .. -fi + sudo apt-get update + sudo apt-get install -y upx-ucl || { + echo "Failed to install upx via apt, trying source build" + git clone https://github.com/upx/upx.git + cd upx + git checkout v4.2.2 + make + sudo cp src/upx /usr/local/bin/ + cd .. + } + fi -if [ ! -f "GeoIP.mmdb" ]; then - wget https://resource.fit2cloud.com/1panel/package/v2/geo/GeoIP.mmdb -fi + upx --best --lzma "$binary_path" && echo "[ok] Compressed: $binary_path" || echo "[warn] Failed to compress: $binary_path" +} -chmod 755 1pctl install.sh +if [ "$1" = "compress_binary" ]; then + compress_binary "$2" "$3" +else + download_resources +fi \ No newline at end of file