Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 3 additions & 92 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
stages:
- container
- container:boot

.dind:
variables:
Expand All @@ -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
60 changes: 60 additions & 0 deletions .gitlab/ci/container-boot.gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -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
92 changes: 92 additions & 0 deletions .gitlab/ci/container-build.gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -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
3 changes: 2 additions & 1 deletion container/sagittarius/Dockerfile.erb
Original file line number Diff line number Diff line change
Expand Up @@ -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 ./
Expand Down
6 changes: 6 additions & 0 deletions container/sagittarius/sagittarius.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
rails:
web:
force_ssl: false
db:
host: postgres
port: 5432