'Generic Commit'
Some checks failed
dropshell-build / build (linux/arm64) (push) Has been cancelled
dropshell-build / build (linux/amd64) (push) Has been cancelled

This commit is contained in:
Your Name 2025-06-15 08:59:00 +12:00
parent 5de0f19769
commit a075d45ed3
6 changed files with 25 additions and 62 deletions

View File

@ -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

View File

@ -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}

View File

@ -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

0
changes.txt Normal file
View File

View File

@ -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
mkdir -p "${output_dir}"
local tag="${project}-build"
"${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"

View File

@ -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