diff --git a/.gitignore b/.gitignore index e2ae28e..c7e0aed 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ # generated dockerfiles container/sagittarius/Dockerfile +container/sculptor/Dockerfile # downloaded projects projects diff --git a/.gitlab/ci/container-boot.gitlab-ci.yml b/.gitlab/ci/container-boot.gitlab-ci.yml index c5da2d3..6170376 100644 --- a/.gitlab/ci/container-boot.gitlab-ci.yml +++ b/.gitlab/ci/container-boot.gitlab-ci.yml @@ -106,3 +106,23 @@ container:boot:draco: - docker compose logs draco -f & - support/grpc_check_health --host docker:8083 --service liveness --retries 20 - support/grpc_check_health --host docker:8083 --service readiness --retries 20 + +container:boot:sculptor: + extends: + - .container:boot + needs: + - manifest:sculptor + parallel: + matrix: + - SCULPTOR_VARIANT: + - ce + - ee + - cloud + PLATFORM: + - amd64 + - arm64 + script: + - docker compose up sculptor -d + - docker ps --all + - docker compose logs sculptor -f & + - docker compose run curl-sculptor diff --git a/.gitlab/ci/container-build.gitlab-ci.yml b/.gitlab/ci/container-build.gitlab-ci.yml index 96cface..3b0d9ab 100644 --- a/.gitlab/ci/container-build.gitlab-ci.yml +++ b/.gitlab/ci/container-build.gitlab-ci.yml @@ -197,3 +197,50 @@ manifest:sagittarius: PLATFORM: - amd64 - arm64 + +container:node: + extends: + - .single-image-build-base + needs: + - manifest:mise + +manifest:node: + extends: + - .manifest-create-base + needs: + - container:node + +container:sculptor: + extends: + - .variant-image-build-base + needs: + - manifest:node + variables: + NEED_PROJECT_DOWNLOAD: 'true' + parallel: + matrix: + - VARIANT: + - ce + - ee + - cloud + PLATFORM: + - amd64 + - arm64 + +manifest:sculptor: + extends: + - .manifest-create-base + parallel: + matrix: + - VARIANT: + - ce + - ee + - cloud + needs: + - job: container:sculptor + parallel: + matrix: + - VARIANT: [ '$[[ matrix.VARIANT ]]' ] + PLATFORM: + - amd64 + - arm64 diff --git a/container/node/Dockerfile b/container/node/Dockerfile new file mode 100644 index 0000000..e07d2cc --- /dev/null +++ b/container/node/Dockerfile @@ -0,0 +1,11 @@ +ARG RETICULUM_IMAGE_TAG=local +ARG NODE_VERSION=24.8.0 + +FROM node:$NODE_VERSION-alpine AS node_image +FROM ghcr.io/code0-tech/reticulum/ci-builds/mise:$RETICULUM_IMAGE_TAG + +COPY --from=node_image /usr/lib /usr/lib +COPY --from=node_image /usr/local/lib /usr/local/lib +COPY --from=node_image /usr/local/include /usr/local/include +COPY --from=node_image /usr/local/bin /usr/local/bin +ENV PATH=/usr/local/bin:$PATH diff --git a/container/sculptor/Dockerfile.erb b/container/sculptor/Dockerfile.erb new file mode 100644 index 0000000..3a15a34 --- /dev/null +++ b/container/sculptor/Dockerfile.erb @@ -0,0 +1,31 @@ +ARG RETICULUM_IMAGE_TAG=local + +FROM ghcr.io/code0-tech/reticulum/ci-builds/node:$RETICULUM_IMAGE_TAG + +WORKDIR /sculptor + +COPY projects/sculptor/edition.mjs \ + projects/sculptor/next.config.ts \ + projects/sculptor/package-lock.json \ + projects/sculptor/package.json \ + projects/sculptor/tsconfig.json \ + . + +RUN npm ci + +COPY projects/sculptor/src/app src/app +COPY projects/sculptor/src/packages/ce src/packages/ce + +<% if ee? || cloud? %> +COPY projects/sculptor/src/packages/ee src/packages/ee +<% end %> + +<% if cloud? %> +COPY projects/sculptor/src/packages/cloud src/packages/cloud +<% end %> + +ENV EDITION=<%= variant %> + +RUN npm run build + +ENTRYPOINT ["npm", "run", "start"] diff --git a/container/sculptor/renderDockerfile b/container/sculptor/renderDockerfile new file mode 100755 index 0000000..73f7cfd --- /dev/null +++ b/container/sculptor/renderDockerfile @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby + +require 'erb' +require 'fileutils' + +def ee? + ENV['VARIANT'].eql?('ee') +end + +def cloud? + ENV['VARIANT'].eql?('cloud') +end + +def variant + ENV['VARIANT'] +end + +template = ERB.new(File.read("#{__dir__}/Dockerfile.erb"), trim_mode: '-') +File.write("#{__dir__}/Dockerfile", template.result) diff --git a/support/docker-compose.yml b/support/docker-compose.yml index 12e3774..087a569 100644 --- a/support/docker-compose.yml +++ b/support/docker-compose.yml @@ -87,5 +87,25 @@ services: ports: - "8083:8083" + sculptor: + image: ghcr.io/code0-tech/reticulum/ci-builds/sculptor:${CI_PIPELINE_ID}-${SCULPTOR_VARIANT} + networks: + - boot + + curl-sculptor: + image: curlimages/curl:8.16.0 + networks: + - boot + command: + - curl + - --fail + - -sv + - --retry + - "20" + - --retry-delay + - "3" + - --retry-connrefused + - http://sculptor:3000/ + networks: boot: diff --git a/versions/sculptor b/versions/sculptor new file mode 100644 index 0000000..d7bba15 --- /dev/null +++ b/versions/sculptor @@ -0,0 +1 @@ +5cd6432f166b416449b5eed50005e4fe703b6913 \ No newline at end of file