From a075d45ed3948d243e75d85cd03a10c0682190c6 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 15 Jun 2025 08:59:00 +1200 Subject: [PATCH] 'Generic Commit' --- .gitea/workflows/dropshell-build.yaml | 9 +++++-- build-base/build.sh | 12 ++------- build-base/publish.sh | 11 +++----- changes.txt | 0 tests/build.sh | 36 ++++++--------------------- tests/test.sh | 19 +++----------- 6 files changed, 25 insertions(+), 62 deletions(-) create mode 100644 changes.txt diff --git a/.gitea/workflows/dropshell-build.yaml b/.gitea/workflows/dropshell-build.yaml index 0155662..9d45780 100644 --- a/.gitea/workflows/dropshell-build.yaml +++ b/.gitea/workflows/dropshell-build.yaml @@ -9,7 +9,12 @@ defaults: jobs: build: - runs-on: ubuntu-latest + strategy: + matrix: + platform: + - linux/amd64 + - linux/arm64 + runs-on: ${{ matrix.platform }} steps: - name: Checkout uses: actions/checkout@v4 @@ -19,7 +24,7 @@ jobs: registry: gitea.jde.nz username: DoesntMatter password: ${{ secrets.DOCKER_PUSH_TOKEN }} - - name: Build Base - Multiple Architectures + - name: Build Base run: | cd build-base && ./build.sh - name: Build Test Applications diff --git a/build-base/build.sh b/build-base/build.sh index ab6088a..0a9490b 100755 --- a/build-base/build.sh +++ b/build-base/build.sh @@ -6,18 +6,10 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" PROJECT="dropshell-build-base" -# Create buildx builder if it doesn't exist -if ! docker buildx ls | grep -q "${PROJECT}-multiarch"; then - docker buildx create --name ${PROJECT}-multiarch --use \ - --driver-opt env.BUILDKIT_MAX_PARALLELISM=4 -else - docker buildx use ${PROJECT}-multiarch -fi +ARCH=$(uname -m) # Build multi-platform image and push it -docker buildx build \ - --platform linux/amd64,linux/arm64 \ - --push \ +docker build \ -t "gitea.jde.nz/public/dropshell-build-base:test" \ -f "${SCRIPT_DIR}/Dockerfile.dropshell-build-base" \ ${SCRIPT_DIR} diff --git a/build-base/publish.sh b/build-base/publish.sh index f8cbec8..6a30beb 100755 --- a/build-base/publish.sh +++ b/build-base/publish.sh @@ -6,18 +6,15 @@ set -euo pipefail #[[ -n $SOS_WRITE_TOKEN ]] || die "SOS_WRITE_TOKEN not specified" #[[ -n $DOCKER_PUSH_TOKEN ]] || die "DOCKER_PUSH_TOKEN not specified" +ARCH=$(uname -m) -echo "Publishing dropshell-build-base:test as :latest..." +echo "Publishing dropshell-build-base:test as :latest-${ARCH}..." # Pull the multiarch manifest from :test tag docker buildx imagetools create \ - --tag gitea.jde.nz/public/dropshell-build-base:latest \ + --tag gitea.jde.nz/public/dropshell-build-base:latest-${ARCH} \ gitea.jde.nz/public/dropshell-build-base:test -echo "Successfully tagged dropshell-build-base:test as :latest" +echo "Successfully tagged dropshell-build-base:test as :latest-${ARCH}" -# Show the manifest to confirm it's multiarch -echo "" -echo "Verifying multiarch manifest:" -docker buildx imagetools inspect gitea.jde.nz/public/dropshell-build-base:latest diff --git a/changes.txt b/changes.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/build.sh b/tests/build.sh index 930c006..dac7e1b 100755 --- a/tests/build.sh +++ b/tests/build.sh @@ -4,55 +4,35 @@ set -euo pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" -#make canonical -ROOT_DIR="$(cd "${SCRIPT_DIR}/../" &> /dev/null && pwd)" - - export CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:-Debug}" +output_dir="${SCRIPT_DIR}/output" + # Function to build a project build_project() { local project="$1" - local platform="${2:-}" - - local build_cmd - local tag - local output_dir + local build_cmd=(docker build) - if [ -n "${platform}" ]; then - build_cmd=(docker buildx build "--platform" "${platform}") - local tag_suffix="${platform##*/}" # Extract arch from platform (e.g., linux/arm64 -> arm64) - tag="gitea.jde.nz/public/${project}-build-${tag_suffix}:test" - output_dir="${SCRIPT_DIR}/output/${tag_suffix}" - else - build_cmd=(docker build) - tag="gitea.jde.nz/public/${project}-build:test" - output_dir="${SCRIPT_DIR}/output/native" - fi + local tag="${project}-build" - mkdir -p "${output_dir}" - "${build_cmd[@]}" \ -t "${tag}" \ -f "${SCRIPT_DIR}/Dockerfile.test-build" \ --build-arg PROJECT="${project}" \ - --build-arg CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" \ + --build-arg CMAKE_BUILD_TYPE="${build_type}" \ --output "${output_dir}" \ - "${SCRIPT_DIR}/${project}" + "${SCRIPT_DIR}/tests/${project}" } # Clean and prepare output directory -rm -rf "${SCRIPT_DIR}/output" -mkdir -p "${SCRIPT_DIR}/output" +rm -rf "${output_dir}" +mkdir -p "${output_dir}" # Build all projects echo "Building ipdemo..." build_project "ipdemo" -echo "Building ipdemo for aarch64..." -build_project "ipdemo" "linux/arm64" - echo "Building test_libs..." build_project "test_libs" diff --git a/tests/test.sh b/tests/test.sh index 61148f9..e6621b0 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -8,9 +8,9 @@ echo "" echo "testing test_libs..." # Run test_libs -if [ -f "${SCRIPT_DIR}/output/native/test_libs" ]; then +if [ -f "${SCRIPT_DIR}/output/test_libs" ]; then echo "Running test_libs..." - "${SCRIPT_DIR}/output/native/test_libs" + "${SCRIPT_DIR}/output/test_libs" echo "test_libs completed successfully!" else echo "test_libs binary not found" @@ -21,21 +21,10 @@ echo "" echo "Testing ipdemo..." # Check if ipdemo exists -if [ -f "${SCRIPT_DIR}/output/native/ipdemo" ]; then +if [ -f "${SCRIPT_DIR}/output/ipdemo" ]; then echo "Running ipdemo..." - "${SCRIPT_DIR}/output/native/ipdemo" || echo "ipdemo test completed!" + "${SCRIPT_DIR}/output/ipdemo" || echo "ipdemo test completed!" else echo "ipdemo binary not found - run ./build.sh first" fi -echo "" -echo "Testing cross-architecture builds..." - -# Verify the binary was built and check its architecture -if [ -f "${SCRIPT_DIR}/output/arm64/ipdemo" ]; then - echo "aarch64 ipdemo binary built successfully!" - echo "Architecture info:" - file "${SCRIPT_DIR}/output/arm64/ipdemo" || true -else - echo "aarch64 ipdemo binary not found" -fi \ No newline at end of file