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
17 changes: 15 additions & 2 deletions .github/workflows/configurator-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ name: Configurator Release
on:
workflow_dispatch:
inputs:
release_mode:
description: Qualified release (default) or Dev only without live Assistant qualification
type: choice
default: qualified
options: ['qualified', 'dev-skip-assistant-qualification']
build_only:
description: Build and publish the immutable release and buildpack tag without deploying
type: boolean
Expand All @@ -21,23 +26,27 @@ permissions:
actions: read
contents: read

env:
LZC_RELEASE_MODE: ${{ inputs.release_mode || 'qualified' }}

concurrency:
group: configurator-lzc-dev-mutation
cancel-in-progress: false

jobs:
assistant:
name: assistant
if: vars.LZC_RELEASE_CI_ENABLED == 'true' && github.event_name == 'workflow_dispatch' && github.run_attempt == 1 && !inputs.release_run_id && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/landing-zone-configurator')
if: vars.LZC_RELEASE_CI_ENABLED == 'true' && github.event_name == 'workflow_dispatch' && github.run_attempt == 1 && inputs.release_mode != 'dev-skip-assistant-qualification' && !inputs.release_run_id && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/landing-zone-configurator')
uses: ./.github/workflows/assistant-live.yml
with:
topic: all
repetitions: 2
secrets: inherit

build:
name: ${{ inputs.release_mode == 'dev-skip-assistant-qualification' && 'build-dev-skip-assistant-qualification' || 'build' }}
needs: assistant
if: vars.LZC_RELEASE_CI_ENABLED == 'true' && github.event_name == 'workflow_dispatch' && github.run_attempt == 1 && !inputs.release_run_id && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/landing-zone-configurator')
if: always() && !cancelled() && ((inputs.release_mode == 'dev-skip-assistant-qualification' && github.ref == 'refs/heads/main' && needs.assistant.result == 'skipped') || (inputs.release_mode != 'dev-skip-assistant-qualification' && needs.assistant.result == 'success')) && vars.LZC_RELEASE_CI_ENABLED == 'true' && github.event_name == 'workflow_dispatch' && github.run_attempt == 1 && !inputs.release_run_id && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/feature/landing-zone-configurator')
runs-on: ubuntu-latest
timeout-minutes: 25
services:
Expand Down Expand Up @@ -123,6 +132,10 @@ jobs:
- name: Assemble immutable stage-neutral release
run: |
node ../infra/ci/release-artifact.mjs create ../.local
echo "Release mode: $LZC_RELEASE_MODE" >> "$GITHUB_STEP_SUMMARY"
if [ "$LZC_RELEASE_MODE" = dev-skip-assistant-qualification ]; then
echo 'Dev only; live Assistant qualification NOT performed; runtime Assistant setting unchanged. Promotion is prohibited.' >> "$GITHUB_STEP_SUMMARY"
fi
tar -czf ../.local/configurator-release.tar.gz -C ../.local release.tar.gz release.sha256 runner.tar.gz runner.sha256 release-manifest.json
(cd ../.local && sha256sum configurator-release.tar.gz > configurator-release.sha256)
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
Expand Down
32 changes: 31 additions & 1 deletion docs/workflows.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,36 @@ Bereitstellungsjob freizugeben.
| Konfigurierte Maschinen-Flavors mit dem aktuellen STACKIT-Katalog vergleichen | **Validate STACKIT Flavors** |

<a id="current-repository-workflows"></a>
### Dev-Release ohne Live-Qualifikation des Assistant

Bei Model-Serving-Ausfällen unter
**Actions > Configurator Release > Run workflow** auf Branch **main** ausdrücklich
**release_mode=dev-skip-assistant-qualification** wählen. **build_only** nicht
anhaken, **release_run_id** leer lassen und **runner_pool_size=1** setzen.
Den genauen Quellstand/Lauf prüfen und nach allen anwendbaren Build-/
Veröffentlichungsprüfungen die bestehende Umgebung **lzc-dev-release** freigeben.
Diese ausdrückliche Dev-Ausnahme überspringt nur den Live-Qualifikationsjob des
Assistant. `LZC_ASSISTANT_ENABLED` übernimmt weiterhin die bestehende
Umgebungseinstellung; ein konfigurierter Assistant bleibt aktiviert, ohne neuen
Live-Qualifikationsnachweis für diesen Release. Ob Inferenz funktioniert, hängt
weiterhin von der Modellverfügbarkeit ab. Dies gilt nicht als erfolgreiche
Qualifikation und löscht keine früheren fehlgeschlagenen Nachweise. Alle übrigen
Prüfungen, Migrationen, geschützten Tags und Dev-Zielprüfungen bleiben erhalten.
Gespräche und Vorschläge bleiben gespeichert; bestehende Laufzeitvalidierung,
Autorisierung und Revisionsprüfungen bleiben unverändert. Der Modus autorisiert
weder Produktion noch Kunden-Infrastruktur-Apply.

Das Manifest vermerkt die Beschränkung auf Dev und `assistantQualified=false`;
der Build-Job heißt `build-dev-skip-assistant-qualification`. Diese Artefakte
können nicht mit `release_run_id` übernommen werden, auch nicht als qualifizierter
Release. Nach einem Deploymentfehler sind Untersuchung und ein neuer manueller
Lauf nötig. `build_only=true` erlaubt einen Build zur Prüfung, dessen Artefakt
anschließend nicht übernommen werden kann. Ein qualifizierter Release erfordert
weiterhin einen neuen Lauf mit **release_mode=qualified** und vollständiger
quellstandsgebundener Live-Qualifikation. Der Standardpfad **qualified** und dessen
Übernahmebedingungen bleiben unverändert.


## Aktuelle Repository-Workflows

**Automatisch** beschreibt Repository-Ereignisse, keinen manuellen Klick.
Expand Down Expand Up @@ -85,7 +115,7 @@ Pflichtprüfung, ohne sicherzustellen, dass er für jeden relevanten PR ein Erge
| Configurator Bootstrap | Standardmäßig `root=bootstrap` oder `backend`; standardmäßig `apply=false`. Apply verwendet `lzc-dev-bootstrap-apply`. |
| Configurator Platform | `root=platform`; standardmäßig `apply=false`. Benötigt den obigen Plattform-Operatorschalter; Apply verwendet `lzc-dev-platform-apply`. |
| Configurator Runtime | `root=runtime`; standardmäßig `apply=false`. Benötigt den obigen Laufzeit-Operatorschalter; Apply verwendet `lzc-dev-runtime-apply`. |
| Configurator Release | Standardmäßig `build_only=false`; leere `release_run_id` bedeutet neue Qualifikation/neuer Build. Setzen Sie `build_only=true` für einen Build ohne CF-Bereitstellung; echte Modellaufrufe und Veröffentlichung des geschützten Tags erfolgen trotzdem. Um einen bestehenden qualifizierten Build zu übernehmen, lassen Sie Build-only deaktiviert und geben Sie dessen numerische Run-ID an; das aufbewahrte Artefakt/Tag muss weiterhin gültig sein. |
| Configurator Release | Standardmäßig `release_mode=qualified` und `build_only=false`; leere `release_run_id` bedeutet einen neuen Build im gewählten Modus. Setzen Sie `build_only=true` für einen Build ohne CF-Bereitstellung; die Veröffentlichung des geschützten Tags erfolgt trotzdem; echte Modellaufrufe laufen im Modus `qualified`. Um einen bestehenden qualifizierten Build zu übernehmen, lassen Sie Build-only deaktiviert und geben Sie dessen numerische Run-ID an; das aufbewahrte Artefakt/Tag muss weiterhin gültig sein. |

Für die normale Configurator-Bereitstellung: Wählen Sie **Configurator Release**,
**runner_pool_size=1** für einen vorbereiteten Einmal-Runner in Dev
Expand Down
32 changes: 30 additions & 2 deletions docs/workflows.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,34 @@ Starting a workflow is not the same as approving its protected deployment job.
| Publish an Accelerator GitHub release after real deployment verification | **Publish Release** |
| Compare configured machine flavors with the live STACKIT catalogue | **Validate STACKIT Flavors** |

### Dev release without live Assistant qualification

During Model Serving outages, select
**release_mode=dev-skip-assistant-qualification** in
**Actions > Configurator Release > Run workflow**, branch **main**.
Leave **build_only** unchecked and **release_run_id** empty; set
**runner_pool_size=1**. Review the exact source/run and approve the existing
**lzc-dev-release** environment after all applicable build/publication checks.
This explicit Dev exception skips only the live Assistant qualification job.
`LZC_ASSISTANT_ENABLED` continues to use the existing environment setting;
the Assistant remains enabled when configured, without a new live qualification
receipt for this release. Model availability still determines whether inference
works. This is not a successful qualification and does not erase earlier failed
receipts. All non-Assistant checks, migrations, protected tags and Dev destination
guards remain in force. Conversations and proposals are preserved; existing
runtime validation, authorization and revision checks remain unchanged. No
production deployment or customer infrastructure Apply is authorized by this mode.

The manifest records Dev-only scope and `assistantQualified=false`; the build
job is named `build-dev-skip-assistant-qualification`. These artifacts cannot be
promoted using `release_run_id`, including as a qualified release. A deployment
failure requires inspection and a fresh manual run. `build_only=true` may build
this mode for inspection, but its artifact cannot subsequently be promoted.
A qualified release still requires a fresh **release_mode=qualified** run with
the complete source-bound live qualification. The default **qualified** path
and its promotion requirements are unchanged.


## Current repository workflows

**Automatic** describes repository events, not a manual click. **Reusable** means
Expand All @@ -42,7 +70,7 @@ branch restrictions, operator switches and environment protection still apply.
| [Configurator Bootstrap](https://github.com/stackitcloud/stackit-landing-zone/actions/workflows/configurator-bootstrap.yml) · [source](../.github/workflows/configurator-bootstrap.yml) | Plan the workload-state bucket/access (`bootstrap`) or its versioning (`backend`) | None | **Run workflow** on `main`; choose root and optionally Apply | Real backend/credential access for Plan; `apply=true` enables cloud changes after protected environment approval |
| [Configurator Platform](https://github.com/stackitcloud/stackit-landing-zone/actions/workflows/configurator-platform.yml) · [source](../.github/workflows/configurator-platform.yml) | Plan shared Configurator services: CF organization, database, Secrets Manager, artifact storage and model token | None | **Run workflow** on `main`; optionally Apply; requires `LZC_PLATFORM_CI_ENABLED=true` | Real backend/credential access for Plan; optional approved cloud Apply |
| [Configurator Runtime](https://github.com/stackitcloud/stackit-landing-zone/actions/workflows/configurator-runtime.yml) · [source](../.github/workflows/configurator-runtime.yml) | Plan CF space/roles and database/Secrets runtime users | None | **Run workflow** on `main`; optionally Apply; requires `LZC_RUNTIME_CI_ENABLED=true` | Real backend/credential access for Plan; optional approved cloud Apply. Does not publish application code. |
| [Configurator Release](https://github.com/stackitcloud/stackit-landing-zone/actions/workflows/configurator-release.yml) · [source](../.github/workflows/configurator-release.yml) | Qualify, build and package API/UI and Runner together, or promote an existing qualified build | None; a merge does not start it | **Run workflow** on `main`; choose build-only, new release or promotion; requires `LZC_RELEASE_CI_ENABLED=true` | Fresh builds call **Assistant live regression** and publish a protected buildpack tag. Unless build-only, deploys development after `lzc-dev-release` approval, including migrations and runtime checks. |
| [Configurator Release](https://github.com/stackitcloud/stackit-landing-zone/actions/workflows/configurator-release.yml) · [source](../.github/workflows/configurator-release.yml) | Qualify, build and package API/UI and Runner together, or promote an existing qualified build | None; a merge does not start it | **Run workflow** on `main`; choose build-only, new release or promotion; requires `LZC_RELEASE_CI_ENABLED=true` | Fresh `qualified` builds call **Assistant live regression** and publish a protected buildpack tag. Unless build-only, deploys development after `lzc-dev-release` approval, including migrations and runtime checks. |

The exact Configurator path filter is in the linked YAML. A skipped
Accelerator-only job on a Configurator PR is intentional, not a deployment.
Expand Down Expand Up @@ -76,7 +104,7 @@ it reports a result for every relevant PR.
| Configurator Bootstrap | `root=bootstrap` by default, or `backend`; `apply=false` by default. Apply uses `lzc-dev-bootstrap-apply`. |
| Configurator Platform | `root=platform`; `apply=false` by default. Requires the platform operator switch above; Apply uses `lzc-dev-platform-apply`. |
| Configurator Runtime | `root=runtime`; `apply=false` by default. Requires the runtime operator switch above; Apply uses `lzc-dev-runtime-apply`. |
| Configurator Release | `build_only=false` by default; `release_run_id` empty means fresh qualification/build. Set `build_only=true` to build without CF deployment; real-model calls and protected tag publication still occur. To promote an existing qualified build, leave build-only unchecked and enter its numeric run ID; the retained artifact/tag must remain valid. |
| Configurator Release | `release_mode=qualified` and `build_only=false` by default; `release_run_id` empty means a fresh build under the selected mode. Set `build_only=true` to build without CF deployment; protected tag publication still occurs; live-model calls run in `qualified` mode. To promote an existing qualified build, leave build-only unchecked and enter its numeric run ID; the retained artifact/tag must remain valid. |

For the normal Configurator deployment: select **Configurator Release**, `main`,
choose **runner_pool_size=1** to maintain one prepared one-shot Dev Runner
Expand Down
35 changes: 33 additions & 2 deletions landing-zone-configurator/deploy/cloud-foundry/README.de.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ des Repositorys **Configurator Release** und dann **Run workflow** auswählen:
auf `0` zum Deaktivieren/Abbauen des Pools setzen. Standard ist `0`; zulässig
sind `0`–`4`. Jede Reserve benötigt zusätzlich zu aktiven Aufträgen 1 GiB RAM
und ein Disk-Budget von 4 GiB.
5. Workflow starten. Er qualifiziert den echten Assistant, baut und testet beide
5. Für normale Releases **release_mode=qualified** beibehalten und den Workflow
starten. Er qualifiziert den echten Assistant, baut und testet beide
Pakete und erstellt anschließend den geschützten, quellgebundenen Buildpack-Tag.
6. Wenn **deploy** auf Prüfung wartet, über **Review deployments** das
Environment **lzc-dev-release** mit einem autorisierten Prüferkonto freigeben.
Expand All @@ -47,7 +48,7 @@ Ein überholter Branch-HEAD wird abgelehnt, statt stillschweigend eine andere
Revision zu deployen. Bei einem gewöhnlichen neuen Release weder Repository-Token-Rechte
erweitern noch Tags manuell erstellen.

Für „jetzt bauen, später deployen“ **build_only** anhaken. Qualifizierung, Paketierung und Tag-
Für qualifiziertes „jetzt bauen, später deployen“ **release_mode=qualified** beibehalten und **build_only** anhaken. Qualifizierung, Paketierung und Tag-
Veröffentlichung laufen weiterhin, aber es findet kein Cloud-Deployment statt. Später einen **neuen**
manuellen Lauf auf `main` starten, **build_only** nicht anhaken und die ursprüngliche
numerische Build-Run-ID unter **release_run_id** eintragen. Damit wird exakt das qualifizierte
Expand Down Expand Up @@ -300,6 +301,36 @@ Task-Status, bereinigte Diagnosen und öffentliche Health Checks liefern Release

<a id="immutable-release-and-promotion"></a>

### Dev-Release ohne Live-Qualifikation des Assistant

Bei Model-Serving-Ausfällen unter
**Actions > Configurator Release > Run workflow** auf Branch **main** ausdrücklich
**release_mode=dev-skip-assistant-qualification** wählen. **build_only** nicht
anhaken, **release_run_id** leer lassen und **runner_pool_size=1** setzen.
Den genauen Quellstand/Lauf prüfen und nach allen anwendbaren Build-/
Veröffentlichungsprüfungen die bestehende Umgebung **lzc-dev-release** freigeben.
Diese ausdrückliche Dev-Ausnahme überspringt nur den Live-Qualifikationsjob des
Assistant. `LZC_ASSISTANT_ENABLED` übernimmt weiterhin die bestehende
Umgebungseinstellung; ein konfigurierter Assistant bleibt aktiviert, ohne neuen
Live-Qualifikationsnachweis für diesen Release. Ob Inferenz funktioniert, hängt
weiterhin von der Modellverfügbarkeit ab. Dies gilt nicht als erfolgreiche
Qualifikation und löscht keine früheren fehlgeschlagenen Nachweise. Alle übrigen
Prüfungen, Migrationen, geschützten Tags und Dev-Zielprüfungen bleiben erhalten.
Gespräche und Vorschläge bleiben gespeichert; bestehende Laufzeitvalidierung,
Autorisierung und Revisionsprüfungen bleiben unverändert. Der Modus autorisiert
weder Produktion noch Kunden-Infrastruktur-Apply.

Das Manifest vermerkt die Beschränkung auf Dev und `assistantQualified=false`;
der Build-Job heißt `build-dev-skip-assistant-qualification`. Diese Artefakte
können nicht mit `release_run_id` übernommen werden, auch nicht als qualifizierter
Release. Nach einem Deploymentfehler sind Untersuchung und ein neuer manueller
Lauf nötig. `build_only=true` erlaubt einen Build zur Prüfung, dessen Artefakt
anschließend nicht übernommen werden kann. Ein qualifizierter Release erfordert
weiterhin einen neuen Lauf mit **release_mode=qualified** und vollständiger
quellstandsgebundener Live-Qualifikation. Der Standardpfad **qualified** und dessen
Übernahmebedingungen bleiben unverändert.


## Unveränderlicher Release und Promotion

Einmal bauen; dieselben Bytes deployen. Der Workflow veröffentlicht ein unveränderliches GitHub-
Expand Down
Loading
Loading