test: Update 3 files
All checks were successful
dropshell-build multiarch / build (linux/amd64) (push) Successful in 19s
dropshell-build multiarch / build (linux/arm64) (push) Successful in 27s
dropshell-build multiarch / create-manifest (push) Successful in 13s

This commit is contained in:
Your Name
2025-06-22 18:36:53 +12:00
parent 3af2f6c537
commit 1bfcb35005
4 changed files with 63 additions and 4 deletions

View File

@ -250,3 +250,7 @@ RUN curl -LO https://github.com/nlohmann/json/archive/refs/tags/v${NLOHMANN_JSON
make -j$(nproc) && \
make install && \
cd / && rm -rf /tmp/json-${NLOHMANN_JSON_VERSION} /tmp/v${NLOHMANN_JSON_VERSION}.tar.gz
# Install upx
COPY opt /opt
RUN /opt/install_upx.sh

View File

@ -5,11 +5,14 @@ set -euo pipefail
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
PROJECT="dropshell-build-base"
ARCH=$(uname -m)
echo "Building ${PROJECT} for ${ARCH}..."
# Build multi-platform image and push it
docker build \
-t "dropshell-build-base:test" \
-f "${SCRIPT_DIR}/Dockerfile.dropshell-build-base" \
${SCRIPT_DIR}
-t "${PROJECT}:test" \
-f "${SCRIPT_DIR}/Dockerfile.${PROJECT}" \
"${SCRIPT_DIR}"
echo "Successfully built ${PROJECT}:test"

46
build-base/opt/install_upx.sh Executable file
View File

@ -0,0 +1,46 @@
#!/bin/bash
set -euo pipefail
# check we're running as root
if [ "$(id -u)" -ne 0 ]; then
echo "Please run as root"
exit 1
fi
# Determine architecture
ARCH=$(uname -m)
case $ARCH in
x86_64)
UPX_ARCH="amd64"
;;
aarch64)
UPX_ARCH="arm64"
;;
*)
echo "Unsupported architecture: $ARCH"
exit 1
;;
esac
# Download and install UPX v5.0.1
UPX_VERSION="5.0.1"
UPX_FILE="upx-${UPX_VERSION}-${UPX_ARCH}_linux.tar.xz"
UPX_URL="https://github.com/upx/upx/releases/download/v${UPX_VERSION}/${UPX_FILE}"
echo "Downloading UPX ${UPX_VERSION} for ${UPX_ARCH}..."
curl -L -o "${UPX_FILE}" "${UPX_URL}"
# Extract UPX
tar -xf "${UPX_FILE}"
# Install to /usr/local/bin
cp "upx-${UPX_VERSION}-${UPX_ARCH}_linux/upx" /usr/local/bin/
chmod +x /usr/local/bin/upx
# Verify installation
upx --version
# Cleanup
rm -rf "${UPX_FILE}" "upx-${UPX_VERSION}-${UPX_ARCH}_linux"
echo "UPX ${UPX_VERSION} installed successfully!"

View File

@ -53,6 +53,12 @@ RUN --mount=type=cache,target=/build \
find /build -type f -executable -name "*${PROJECT}*" -exec cp {} /output/${PROJECT} \; || \
find /build -type f -executable -exec cp {} /output/${PROJECT} \;
# if we're a release build, then run upx on the binary.
RUN if [ "${CMAKE_BUILD_TYPE}" = "Release" ]; then \
upx /output/${PROJECT}; \
fi
# Final stage that only contains the binary
FROM scratch AS project