mehrere gitlabpages in DWT

basierend auf das Meeting mit Jürgen bruachen wir eine Lösung um DEV oder FEatures bei internen stakeholdern abzunehmen ohne einen weiteren Server zu nutzen.

Folgende Idee könnte das voranbringen basierend auf die Idee von @schauder :

  1. Es gibt ein Fetching Skript was alte Pages/artifakte von anderen Branches sich nimmt und zwischenspeichert um sie später in Public Folder zu verschieben.
  2. danach muss die CI die Webseiten ggf bauen die noch nicht gebaut sind (Main)
  3. alles wird in public verschoben in untererzeichnisse.
  4. alle außer main werden verschlüsselt damit nur interner mit Zugang zum PW darauf zugreifen können

Beispiel:

ein Fetching skript siehe https://gitlab.opencode.de/open-code/internal/testprojekte/page-a-rama @sebastian

und dann brauchen wir eine CI Yaml die das verwaltet, (siehe https://gitlab.opencode.de/open-code/internal/testprojekte/page-a-rama) z.B. sowas:

CI Beispiel

  - prepare
  - build
  - deploy

variables:
  PAGES_DIR: public

.default-build:
  image: node:18-alpine
  stage: build
  before_script:
    - apk add --no-cache curl git unzip bash
    - npm install -g staticrypt

fetch-existing-pages:
  image: alpine:latest
  stage: prepare
  before_script:
    - apk add --no-cache curl jq unzip
  script:
    - sh fetch_latest_pages_artifacts_any_branch.sh
  artifacts:
    paths:
      - $PAGES_DIR

build-pages:
  extends: .default-build
  script:
    - mkdir -p $PAGES_DIR/$CI_COMMIT_BRANCH
    # Beispielinhalt erzeugen (dies ersetzt dein DWT-Output)
    - echo "<h1>$CI_COMMIT_BRANCH – Hello World</h1>" > $PAGES_DIR/$CI_COMMIT_BRANCH/index.html

    # 🔐 Nur 'main' bleibt ungeschützt
    - |
      if [ "$CI_COMMIT_BRANCH" != "main" ]; then
        if [ -z "$STATICRYPT_PASSWORD" ]; then
          echo "❌ Fehler: STATICRYPT_PASSWORD ist nicht gesetzt"
          exit 1
        fi
        staticrypt $PAGES_DIR/$CI_COMMIT_BRANCH/index.html "$STATICRYPT_PASSWORD" -o $PAGES_DIR/$CI_COMMIT_BRANCH/index.html
      fi
  artifacts:
    paths:
      - $PAGES_DIR
  needs:
    - fetch-existing-pages

pages:
  stage: deploy
  script:
    - echo "Deploying GitLab Pages from $PAGES_DIR"
  artifacts:
    paths:
      - $PAGES_DIR
  resource_group: gitlab-pages-deploy
Edited by Alexandros Bouras