From 791f47031d8f5d4c9b01b0231fbfa95499279558 Mon Sep 17 00:00:00 2001 From: Niklas van Schrick Date: Sat, 12 Jul 2025 15:48:14 +0200 Subject: [PATCH 1/3] Move image builds into separate file --- .gitlab-ci.yml | 95 +----------------------- .gitlab/ci/container-build.gitlab-ci.yml | 92 +++++++++++++++++++++++ 2 files changed, 95 insertions(+), 92 deletions(-) create mode 100644 .gitlab/ci/container-build.gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c86bca7d..97a531d4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,6 @@ stages: - container + - container:boot .dind: variables: @@ -13,95 +14,5 @@ stages: alias: docker entrypoint: [ "sh", "-c", "dockerd-entrypoint.sh $DOCKER_OPTIONS" ] -.image-build-base: - extends: - - .dind - image: ghcr.io/code0-tech/build-images/reticulum-builder:171.1-ruby-3.2.2 - stage: container - script: - - source scripts/helpers.sh - - docker_login - - '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 - -.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: - - .single-image-build-base - needs: - - container:mise - -container:aquila: - extends: - - .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 - -container:taurus: - extends: - - .single-image-build-base - needs: - - container:rust - variables: - NEED_PROJECT_DOWNLOAD: 'true' - -container:ruby: - extends: - - .single-image-build-base - needs: - - container:mise - -container:postgresql: - extends: - - .single-image-build-base - needs: - - container:mise - -container:sagittarius: - extends: - - .variant-image-build-base - needs: - - container:ruby - - container:postgresql - variables: - NEED_PROJECT_DOWNLOAD: 'true' - parallel: - matrix: - - VARIANT: - - ce - - ee +include: + - local: .gitlab/ci/*.gitlab-ci.yml diff --git a/.gitlab/ci/container-build.gitlab-ci.yml b/.gitlab/ci/container-build.gitlab-ci.yml new file mode 100644 index 00000000..1b6086d5 --- /dev/null +++ b/.gitlab/ci/container-build.gitlab-ci.yml @@ -0,0 +1,92 @@ +.image-build-base: + extends: + - .dind + image: ghcr.io/code0-tech/build-images/reticulum-builder:171.1-ruby-3.2.2 + stage: container + script: + - source scripts/helpers.sh + - docker_login + - '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 + +.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: + - .single-image-build-base + needs: + - container:mise + +container:aquila: + extends: + - .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 + +container:taurus: + extends: + - .single-image-build-base + needs: + - container:rust + variables: + NEED_PROJECT_DOWNLOAD: 'true' + +container:ruby: + extends: + - .single-image-build-base + needs: + - container:mise + +container:postgresql: + extends: + - .single-image-build-base + needs: + - container:mise + +container:sagittarius: + extends: + - .variant-image-build-base + needs: + - container:ruby + - container:postgresql + variables: + NEED_PROJECT_DOWNLOAD: 'true' + parallel: + matrix: + - VARIANT: + - ce + - ee From 7a9927027962915c6f31751a108ea8878e1f1cdf Mon Sep 17 00:00:00 2001 From: Niklas van Schrick Date: Sat, 12 Jul 2025 16:54:55 +0200 Subject: [PATCH 2/3] Add boot test for sagittarius rails-web --- .gitlab/ci/container-boot.gitlab-ci.yml | 60 +++++++++++++++++++++++++ container/sagittarius/sagittarius.yml | 6 +++ 2 files changed, 66 insertions(+) create mode 100644 .gitlab/ci/container-boot.gitlab-ci.yml create mode 100644 container/sagittarius/sagittarius.yml diff --git a/.gitlab/ci/container-boot.gitlab-ci.yml b/.gitlab/ci/container-boot.gitlab-ci.yml new file mode 100644 index 00000000..743be47c --- /dev/null +++ b/.gitlab/ci/container-boot.gitlab-ci.yml @@ -0,0 +1,60 @@ +.container:boot: + extends: + - .dind + stage: container:boot + image: ghcr.io/code0-tech/build-images/reticulum-builder:171.1-ruby-3.2.2 + +.container:boot:sagittarius: + extends: + - .container:boot + needs: + - container:sagittarius + parallel: + matrix: + - VARIANT: + - ce + - ee + variables: + SAGITTARIUS_IMAGE: ghcr.io/code0-tech/reticulum/ci-builds/sagittarius:${CI_PIPELINE_ID}-${VARIANT} + CURL_IMAGE: curlimages/curl:8.5.0 + before_script: + - docker network create boot + - > + docker run + --detach + --name postgres + --network boot + --network-alias postgres + --env POSTGRES_USER=sagittarius + --env POSTGRES_PASSWORD=sagittarius + --env POSTGRES_DB=sagittarius_production + postgres:16.1 + - docker pull $SAGITTARIUS_IMAGE + - docker pull $CURL_IMAGE + - > + docker run + --name sagittarius + --network boot + --network-alias sagittarius + --volume $(pwd)/container/sagittarius/sagittarius.yml:/sagittarius/config/sagittarius.yml + $SAGITTARIUS_IMAGE + $SAGITTARIUS_CMD & + +container:boot:sagittarius:rails-web: + extends: + - .container:boot:sagittarius + variables: + SAGITTARIUS_CMD: "" + script: + - > + docker run + --rm + --network boot + $CURL_IMAGE + curl + --fail + -sv + --retry 20 + --retry-delay 3 + --retry-connrefused + http://sagittarius:3000/health/liveness diff --git a/container/sagittarius/sagittarius.yml b/container/sagittarius/sagittarius.yml new file mode 100644 index 00000000..970bf777 --- /dev/null +++ b/container/sagittarius/sagittarius.yml @@ -0,0 +1,6 @@ +rails: + web: + force_ssl: false + db: + host: postgres + port: 5432 From 529d7ddd35a223d519cbc163ae971831bad78256 Mon Sep 17 00:00:00 2001 From: Niklas van Schrick Date: Sat, 12 Jul 2025 20:15:07 +0200 Subject: [PATCH 3/3] Fix sagittarius image for empty databases --- container/sagittarius/Dockerfile.erb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/container/sagittarius/Dockerfile.erb b/container/sagittarius/Dockerfile.erb index e007880e..13c44247 100644 --- a/container/sagittarius/Dockerfile.erb +++ b/container/sagittarius/Dockerfile.erb @@ -17,7 +17,8 @@ WORKDIR /sagittarius ENV RAILS_ENV="production" \ BUNDLE_DEPLOYMENT="1" \ BUNDLE_PATH="/usr/local/bundle" \ - BUNDLE_WITHOUT="development:test" + BUNDLE_WITHOUT="development:test" \ + PATH="$PATH:/usr/local/share/postgres/bin" # Install application gems COPY projects/sagittarius/Gemfile projects/sagittarius/Gemfile.lock ./