From 46d1c79799fdd03293291f02ac1733efac23d12a Mon Sep 17 00:00:00 2001 From: Niklas van Schrick Date: Thu, 29 May 2025 01:23:04 +0200 Subject: [PATCH] Setup draco build --- .gitlab-ci.yml | 36 ++++++++++++++++++++++++++++++++---- container/aquila/Dockerfile | 2 +- container/draco/Dockerfile | 17 +++++++++++++++++ scripts/download_projects | 5 +++-- scripts/helpers.sh | 21 +++++++++++++++++++++ versions/draco | 1 + 6 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 container/draco/Dockerfile create mode 100644 versions/draco diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8fc7874..451340e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,25 +22,53 @@ stages: - apk add bash curl tar - source scripts/helpers.sh - docker_login - - 'image=$(echo $CI_JOB_NAME | cut -d : -f 2)' + - 'image=$(echo "$CI_JOB_NAME" | cut -d : -f 2)' - '[ -z "$NEED_PROJECT_DOWNLOAD" ] || download_project $image' + +.single-image-build-base: + extends: + - .image-build-base + script: + - !reference [.image-build-base, script] - build_image $image $CI_PIPELINE_ID - push_image $image $CI_PIPELINE_ID -container:mise: +.variant-image-build-base: extends: - .image-build-base + script: + - !reference [.image-build-base, script] + - build_image $image $CI_PIPELINE_ID "--build-arg VARIANT=$VARIANT" + - image_tag=$(get_image_tag $CI_PIPELINE_ID $VARIANT) + - retag_image $image $CI_PIPELINE_ID $image_tag + - push_image $image $image_tag + +container:mise: + extends: + - .single-image-build-base container:rust: extends: - - .image-build-base + - .single-image-build-base needs: - container:mise container:aquila: extends: - - .image-build-base + - .single-image-build-base + needs: + - container:rust + variables: + NEED_PROJECT_DOWNLOAD: 'true' + +container:draco: + extends: + - .variant-image-build-base needs: - container:rust variables: NEED_PROJECT_DOWNLOAD: 'true' + parallel: + matrix: + - VARIANT: + - rest diff --git a/container/aquila/Dockerfile b/container/aquila/Dockerfile index 8cf4aa4..b84eec5 100644 --- a/container/aquila/Dockerfile +++ b/container/aquila/Dockerfile @@ -1,6 +1,6 @@ ARG RETICULUM_IMAGE_TAG=local -FROM ghcr.io/code0-tech/reticulum/ci-builds/rust:$RETICULUM_IMAGE_TAG as builder +FROM ghcr.io/code0-tech/reticulum/ci-builds/rust:$RETICULUM_IMAGE_TAG AS builder WORKDIR /aquila COPY projects/aquila . diff --git a/container/draco/Dockerfile b/container/draco/Dockerfile new file mode 100644 index 0000000..282bc6b --- /dev/null +++ b/container/draco/Dockerfile @@ -0,0 +1,17 @@ +ARG RETICULUM_IMAGE_TAG=local + +FROM ghcr.io/code0-tech/reticulum/ci-builds/rust:$RETICULUM_IMAGE_TAG AS builder +ARG VARIANT + +WORKDIR /draco +COPY projects/draco . +WORKDIR /draco/adapters/$VARIANT +RUN cargo build --release + +FROM alpine:3.21 +ARG VARIANT + +RUN apk --update add libc6-compat +COPY --from=builder /draco/target/release/$VARIANT /draco + +CMD ["/draco"] diff --git a/scripts/download_projects b/scripts/download_projects index e1acf70..9f0febf 100644 --- a/scripts/download_projects +++ b/scripts/download_projects @@ -4,8 +4,9 @@ set -e source scripts/helpers.sh -rm -rf projects -mkdir projects +rm -rf projects/* +mkdir -p projects download_project aquila +download_project draco download_project sagittarius diff --git a/scripts/helpers.sh b/scripts/helpers.sh index 77399cc..f7ab95f 100644 --- a/scripts/helpers.sh +++ b/scripts/helpers.sh @@ -16,6 +16,7 @@ function docker_login() { function build_image() { image=$1 reticulum_tag=$2 + build_args=$3 echo "Building image for $image" @@ -28,9 +29,29 @@ function build_image() { -t "ghcr.io/code0-tech/reticulum/ci-builds/$image:$reticulum_tag" \ -f "container/$image/Dockerfile" \ --build-arg RETICULUM_IMAGE_TAG=$reticulum_tag \ + $build_args \ . } function push_image() { + image=$1 + reticulum_tag=$2 docker push "ghcr.io/code0-tech/reticulum/ci-builds/$image:$reticulum_tag" } + +function retag_image() { + image=$1 + reticulum_tag=$2 + variant_tag=$3 + docker image tag "ghcr.io/code0-tech/reticulum/ci-builds/$image:$reticulum_tag" "ghcr.io/code0-tech/reticulum/ci-builds/$image:$variant_tag" +} + +function get_image_tag() { + reticulum_tag=$1 + reticulum_variant=$2 + if [ -z "$reticulum_variant" ]; then + echo $reticulum_tag + else + echo $reticulum_tag-$reticulum_variant + fi +} diff --git a/versions/draco b/versions/draco new file mode 100644 index 0000000..e4223a9 --- /dev/null +++ b/versions/draco @@ -0,0 +1 @@ +8199374e88f72157b715ec717c8542e95db76b6b \ No newline at end of file