diff --git a/docs/compatibility.md b/docs/compatibility.md index ad9f94d282f..73feb000f44 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -218,6 +218,7 @@ and image digests used for each completed check. | Component | Supported version | Install identity | |-----------|-------------------|------------------| | Server | `%%artifact.serverVersion%%` | `%%artifact.serverDockerHubImage%%` | +| Helm chart | `%%artifact.helmChartVersion%%` | `%%artifact.helmChartInstallIdentity%%` | | CLI | `%%artifact.cliVersion%%` | `%%artifact.cliInstallerEnv%%` | | Workflow engine | `%%artifact.workflowVersion%%` | `%%artifact.workflowComposerPackage%%` | | Waterline operator | `%%artifact.waterlineVersion%%` | `%%artifact.waterlineComposerPackage%%` | @@ -225,6 +226,8 @@ and image digests used for each completed check. | Python SDK | `%%artifact.pythonSdkVersion%%` | `%%artifact.pythonPackagePin%%` | | Rust SDK | `%%artifact.rustSdkVersion%%` | `%%artifact.rustCargoRequirement%%` | +The Helm chart's recorded `appVersion` is `%%artifact.helmChartAppVersion%%`, matching the selected Server. Its [published pairing receipt](%%artifact.helmChartQualificationUrl%%) verifies OCI/package digests and source identity; it is not a fresh cluster-install result. See [chart selection and upgrades](./deployment.md#helm-chart-selection) before installing or overriding the image. + PyPI renders the Python distribution version as `%%artifact.pythonRegistryVersion%%`; the documented PEP 440 install spelling `%%artifact.pythonSdkVersion%%` resolves to that same release. This diff --git a/docs/deployment.md b/docs/deployment.md index 2157bb5975f..c2eeab591cc 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -436,7 +436,8 @@ Install the published chart from the OCI registry: ```bash helm install durable-workflow \ - oci://ghcr.io/durable-workflow/charts/durable-workflow \ + %%artifact.helmChartRepository%% \ + --version %%artifact.helmChartVersion%% \ --namespace durable-workflow --create-namespace \ -f my-values.yaml ``` @@ -444,10 +445,18 @@ helm install durable-workflow \ Your values file must point to an external MySQL/PostgreSQL database and external Redis, provide production credentials through existing Kubernetes Secrets, and configure ingress/TLS for your environment. The chart does not -create persistence or provider-managed infrastructure. For reproducible -production deployments, add `--version ` and pin the -Server image by digest. The Server repository publishes chart versions and -documents chart upgrades alongside the chart source. +create persistence or provider-managed infrastructure. Pin the Server image by +digest for a reproducible deployment. + +### Choosing a chart release {#helm-chart-selection} + +One chart release records the Server image it was tested against in `Chart.yaml`'s `appVersion`; the chart and Server have independent version numbers. The selected [compatibility tuple](./compatibility.md#last-qualified-reproducible-tuple) pairs chart **%%artifact.helmChartVersion%%** with Server **%%artifact.helmChartAppVersion%%**, from the same release metadata as the table and install command. Its [published OCI/package receipt](%%artifact.helmChartQualificationUrl%%) verifies that pairing, not a fresh Kubernetes installation. + +For another Server version, inspect the candidate published chart's `Chart.yaml` (the [selected chart source](%%artifact.helmChartSourceUrl%%) is an example) and select an exact chart version whose `appVersion` matches your intended Server. Read the selected release's [UPGRADING notes](%%artifact.helmChartUpgradeUrl%%), including every chart version crossed. Do not infer a chart version from the Server version or select an unpublished chart from current source. + +Overriding `image.tag` changes the image without changing the chart's recorded `appVersion`. That produces a custom chart/image tuple until it receives its own rendered-manifest, bootstrap, rollout and runtime qualification. Keep ordinary database backups and rollback boundaries in the upgrade plan; a successful render alone does not prove the deployment works. + +The published history includes an exception: chart 0.2.2 crossed a Server minor under a chart patch number. The later [published correction](https://github.com/durable-workflow/server/blob/2.11.0/k8s/helm/durable-workflow/docs/UPGRADING.md#chart-022--server-210) acknowledges that exception and resumes the stated minor-version policy. Historical versions stay unchanged; this note does not select the later Server/chart tuple. ## Kubernetes manifests diff --git a/docusaurus.config.js b/docusaurus.config.js index 6fc02612276..d37b48a1b2b 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -74,7 +74,7 @@ const config = { ({ docs: { sidebarPath: require.resolve('./sidebars.js'), - remarkPlugins: [artifactVersionRemarkPlugin], + beforeDefaultRemarkPlugins: [artifactVersionRemarkPlugin], editUrl: 'https://github.com/durable-workflow/durable-workflow.github.io/edit/main/', editLocalizedFiles: true, diff --git a/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md index 8110ccbd172..ffd5a62efde 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md @@ -157,6 +157,7 @@ Die Tabelle zeigt die für diese Dokumentation geprüfte stabile Kombination aus | Komponente | Unterstützte Version | Installationsidentität | |-----------|-------------------|------------------| | Server | `%%artifact.serverVersion%%` | `%%artifact.serverDockerHubImage%%` | +| Helm-Chart | `%%artifact.helmChartVersion%%` | `%%artifact.helmChartInstallIdentity%%` | | CLI | `%%artifact.cliVersion%%` | `%%artifact.cliInstallerEnv%%` | | Workflow-Engine | `%%artifact.workflowVersion%%` | `%%artifact.workflowComposerPackage%%` | | Waterline-Operator | `%%artifact.waterlineVersion%%` | `%%artifact.waterlineComposerPackage%%` | @@ -164,6 +165,9 @@ Die Tabelle zeigt die für diese Dokumentation geprüfte stabile Kombination aus | Python-SDK | `%%artifact.pythonSdkVersion%%` | `%%artifact.pythonPackagePin%%` | | Rust-SDK | `%%artifact.rustSdkVersion%%` | `%%artifact.rustCargoRequirement%%` | +Die aufgezeichnete `appVersion` des Helm-Charts ist `%%artifact.helmChartAppVersion%%` und entspricht dem ausgewählten Server. Der [Prüfbericht zur veröffentlichten Kombination](%%artifact.helmChartQualificationUrl%%) bestätigt OCI-/Paket-Digests und die Quellidentität; er belegt keine neue Clusterinstallation. Lesen Sie vor der Installation oder einem Image-Override die [Chart-Auswahl und Upgrade-Hinweise](./deployment.md#helm-chart-selection). + + PyPI stellt die Python-Distributionsversion als `%%artifact.pythonRegistryVersion%%` dar. Die dokumentierte PEP-440-Installationsschreibweise `%%artifact.pythonSdkVersion%%` löst dieselbe Veröffentlichung auf. Diese Normalisierung erzeugt keine zweite unterstützte Version. Die gewählte Kombination wird nach Qualifizierung der betroffenen Verbraucher weitergeführt. Die veröffentlichten Serverregistries und generierten Schnellstarts verwenden die gewählten Artefakte. Pakete können unabhängig veröffentlicht werden. Ihre Kompatibilität wird über Protokollmanifeste, Fähigkeiten und Verbraucherprüfungen bestätigt. diff --git a/i18n/de/docusaurus-plugin-content-docs/current/deployment.md b/i18n/de/docusaurus-plugin-content-docs/current/deployment.md index 1d092d2a392..2eed5c01b5e 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/deployment.md @@ -324,12 +324,23 @@ Das Serverrepository verantwortet [Chart-Quellcode und Veröffentlichungshinweis ```bash helm install durable-workflow \ - oci://ghcr.io/durable-workflow/charts/durable-workflow \ + %%artifact.helmChartRepository%% \ + --version %%artifact.helmChartVersion%% \ --namespace durable-workflow --create-namespace \ -f my-values.yaml ``` -Ihre Values-Datei muss eine externe MySQL-/PostgreSQL-Datenbank und externes Redis angeben, Produktionszugangsdaten über bestehende Kubernetes-Secrets liefern und Ingress/TLS für Ihre Umgebung konfigurieren. Das Chart erstellt weder Persistenz noch providerverwaltete Infrastruktur. Ergänzen Sie für reproduzierbare Produktion `--version ` und legen Sie das Serverimage per Digest fest. Das Serverrepository veröffentlicht Chartversionen und dokumentiert Chart-Upgrades neben dem Chart-Quellcode. +Ihre Values-Datei muss auf externes MySQL/PostgreSQL und Redis verweisen, Produktionszugangsdaten über vorhandene Kubernetes Secrets bereitstellen und ingress/TLS für Ihre Umgebung konfigurieren. Das Chart erstellt weder Persistenz noch vom Anbieter verwaltete Infrastruktur. Fixieren Sie das Server-Image für ein reproduzierbares Deployment per Digest. + +### Einen Chart-Release auswählen {#helm-chart-selection} + +Jeder Chart-Release hält das getestete Server-Image in der `appVersion` der `Chart.yaml` fest; Chart und Server haben unabhängige Versionsnummern. Die ausgewählte [kompatible Kombination](./compatibility.md#last-qualified-reproducible-tuple) verbindet Chart **%%artifact.helmChartVersion%%** mit Server **%%artifact.helmChartAppVersion%%** aus denselben Release-Metadaten wie Tabelle und Installationsbefehl. Der [Prüfbericht zu OCI/veröffentlichtem Paket](%%artifact.helmChartQualificationUrl%%) bestätigt diese Kombination, keine neue Kubernetes-Installation. + +Prüfen Sie für eine andere Server-Version die `Chart.yaml` des vorgesehenen veröffentlichten Charts (die [ausgewählte Chart-Quelle](%%artifact.helmChartSourceUrl%%) dient als Beispiel) und wählen Sie eine exakte Chart-Version, deren `appVersion` dem gewünschten Server entspricht. Lesen Sie die [UPGRADING-Hinweise](%%artifact.helmChartUpgradeUrl%%) des ausgewählten Releases einschließlich jeder übersprungenen Chart-Version. Leiten Sie die Chart-Version nicht aus der Server-Version ab und wählen Sie kein unveröffentlichtes Chart aus dem aktuellen Quellstand. + +Ein Override von `image.tag` ändert das Image, ohne die aufgezeichnete `appVersion` des Charts zu ändern. Damit entsteht eine eigene Chart-/Image-Kombination, bis gerenderte Manifeste, Bootstrap, Rollout und Runtime gesondert qualifiziert wurden. Behalten Sie übliche Datenbanksicherungen und Rollback-Grenzen im Upgrade-Plan bei; erfolgreiches Rendern allein belegt kein funktionierendes Deployment. + +Die veröffentlichte Historie enthält eine Ausnahme: Chart 0.2.2 wechselte unter einer Chart-Patchnummer auf eine neue Server-Minor-Version. Die spätere [veröffentlichte Korrektur](https://github.com/durable-workflow/server/blob/2.11.0/k8s/helm/durable-workflow/docs/UPGRADING.md#chart-022--server-210) erkennt die Ausnahme an und kehrt zur erklärten Minor-Versionspolitik zurück. Historische Versionen bleiben unverändert; dieser Hinweis wählt keine spätere Server-/Chart-Kombination aus. ## Kubernetes-Manifeste {#kubernetes-manifests} diff --git a/i18n/de/source-hashes.json b/i18n/de/source-hashes.json index 4551eb0fde1..d335f5ec8ad 100644 --- a/i18n/de/source-hashes.json +++ b/i18n/de/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "28e6e3a55920762b4c9380721710de994335831db573447a60d92b213938d3fb", + "compatibility.md": "5d88e55a566f4103307871846ffc042c8e1e1d10ea57a44bcb3b3542643743d5", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "a4657d239673a4ecdc3981bcc5a7cf33aa2d37c709768131cd5ba3292987681f", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "6f1e88e2d67a5b086c73cc9b42b7f9583f46a45a1bf3b95ceff06457ebe17564", + "deployment.md": "2f272a9c37aade0a8bd7ab5ab388a9aaef9b9d4a9ae387ca303bf67e6c860d97", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", diff --git a/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md index 7e99090dc80..a09b43a7d07 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md @@ -217,6 +217,7 @@ huellas de imágenes exactas usadas en cada comprobación completada. | Componente | Versión admitida | Identidad de instalación | |-----------|-------------------|------------------| | Server | `%%artifact.serverVersion%%` | `%%artifact.serverDockerHubImage%%` | +| Chart de Helm | `%%artifact.helmChartVersion%%` | `%%artifact.helmChartInstallIdentity%%` | | CLI | `%%artifact.cliVersion%%` | `%%artifact.cliInstallerEnv%%` | | Motor Workflow | `%%artifact.workflowVersion%%` | `%%artifact.workflowComposerPackage%%` | | Operador Waterline | `%%artifact.waterlineVersion%%` | `%%artifact.waterlineComposerPackage%%` | @@ -224,6 +225,9 @@ huellas de imágenes exactas usadas en cada comprobación completada. | SDK Python | `%%artifact.pythonSdkVersion%%` | `%%artifact.pythonPackagePin%%` | | SDK Rust | `%%artifact.rustSdkVersion%%` | `%%artifact.rustCargoRequirement%%` | +El `appVersion` registrado del chart de Helm es `%%artifact.helmChartAppVersion%%`, que coincide con el Server seleccionado. La [verificación del par publicado](%%artifact.helmChartQualificationUrl%%) comprueba los digests OCI/del paquete y la identidad del código fuente; no es una nueva instalación de clúster verificada. Consulte la [selección y actualización del chart](./deployment.md#helm-chart-selection) antes de instalar o sustituir la imagen. + + PyPI muestra la versión de distribución de Python como `%%artifact.pythonRegistryVersion%%`. La forma de instalación PEP 440 documentada `%%artifact.pythonSdkVersion%%` resuelve a esa misma publicación. Esta diff --git a/i18n/es/docusaurus-plugin-content-docs/current/deployment.md b/i18n/es/docusaurus-plugin-content-docs/current/deployment.md index 1617f0ef7ca..177155c2241 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/deployment.md @@ -417,17 +417,23 @@ Instala el chart publicado desde el registro OCI: ```bash helm install durable-workflow \ - oci://ghcr.io/durable-workflow/charts/durable-workflow \ + %%artifact.helmChartRepository%% \ + --version %%artifact.helmChartVersion%% \ --namespace durable-workflow --create-namespace \ -f my-values.yaml ``` -Tu archivo de valores debe apuntar a MySQL/PostgreSQL y Redis externos, aportar -credenciales de producción mediante Secrets existentes y configurar ingress/TLS. -El chart no crea persistencia ni infraestructura gestionada. Para reproducir -producción, añade `--version ` y fija la imagen de -Server por resumen. El repositorio publica versiones y documenta actualizaciones -junto al código del chart. +El archivo de valores debe apuntar a MySQL/PostgreSQL y Redis externos, proporcionar credenciales de producción mediante Kubernetes Secrets existentes y configurar ingress/TLS para su entorno. El chart no crea almacenamiento persistente ni infraestructura administrada por el proveedor. Fije la imagen del Server por digest para un despliegue reproducible. + +### Elegir una versión del chart {#helm-chart-selection} + +Cada versión del chart registra en `appVersion` de `Chart.yaml` la imagen del Server con la que se probó; el chart y el Server tienen números de versión independientes. La [combinación compatible seleccionada](./compatibility.md#last-qualified-reproducible-tuple) empareja el chart **%%artifact.helmChartVersion%%** con Server **%%artifact.helmChartAppVersion%%**, usando los mismos metadatos de versiones que la tabla y el comando de instalación. La [verificación OCI/del paquete publicado](%%artifact.helmChartQualificationUrl%%) comprueba ese par, no una instalación nueva de Kubernetes. + +Para otra versión del Server, inspeccione el `Chart.yaml` del chart publicado candidato (el [código del chart seleccionado](%%artifact.helmChartSourceUrl%%) es un ejemplo) y seleccione una versión exacta cuyo `appVersion` coincida con el Server deseado. Lea las [notas UPGRADING](%%artifact.helmChartUpgradeUrl%%) de la versión seleccionada, incluidas todas las versiones del chart que atraviese. No deduzca la versión del chart a partir de la del Server ni seleccione un chart sin publicar del código actual. + +Sustituir `image.tag` cambia la imagen sin cambiar el `appVersion` registrado del chart. Eso produce una combinación personalizada hasta que se valide por separado con sus manifiestos generados, bootstrap, despliegue y runtime. Mantenga las copias de seguridad habituales y los límites de reversión en el plan de actualización; generar correctamente los manifiestos no demuestra que el despliegue funcione. + +El historial publicado contiene una excepción: el chart 0.2.2 cruzó una versión menor del Server bajo un número patch del chart. La [corrección publicada posterior](https://github.com/durable-workflow/server/blob/2.11.0/k8s/helm/durable-workflow/docs/UPGRADING.md#chart-022--server-210) reconoce la excepción y retoma la política declarada de versiones menores. Las versiones históricas permanecen intactas; esta nota no selecciona la combinación posterior del Server/chart. ## Manifiestos Kubernetes {#kubernetes-manifests} diff --git a/i18n/es/source-hashes.json b/i18n/es/source-hashes.json index 4551eb0fde1..d335f5ec8ad 100644 --- a/i18n/es/source-hashes.json +++ b/i18n/es/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "28e6e3a55920762b4c9380721710de994335831db573447a60d92b213938d3fb", + "compatibility.md": "5d88e55a566f4103307871846ffc042c8e1e1d10ea57a44bcb3b3542643743d5", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "a4657d239673a4ecdc3981bcc5a7cf33aa2d37c709768131cd5ba3292987681f", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "6f1e88e2d67a5b086c73cc9b42b7f9583f46a45a1bf3b95ceff06457ebe17564", + "deployment.md": "2f272a9c37aade0a8bd7ab5ab388a9aaef9b9d4a9ae387ca303bf67e6c860d97", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md index 590dd3d094a..206b65ef52a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md @@ -215,6 +215,7 @@ pour chaque vérification terminée. | Composant | Version prise en charge | Identité d'installation | |-----------|-------------------|------------------| | Server | `%%artifact.serverVersion%%` | `%%artifact.serverDockerHubImage%%` | +| Chart Helm | `%%artifact.helmChartVersion%%` | `%%artifact.helmChartInstallIdentity%%` | | CLI | `%%artifact.cliVersion%%` | `%%artifact.cliInstallerEnv%%` | | Moteur Workflow | `%%artifact.workflowVersion%%` | `%%artifact.workflowComposerPackage%%` | | Opérateur Waterline | `%%artifact.waterlineVersion%%` | `%%artifact.waterlineComposerPackage%%` | @@ -222,6 +223,9 @@ pour chaque vérification terminée. | SDK Python | `%%artifact.pythonSdkVersion%%` | `%%artifact.pythonPackagePin%%` | | SDK Rust | `%%artifact.rustSdkVersion%%` | `%%artifact.rustCargoRequirement%%` | +L’`appVersion` enregistré du chart Helm est `%%artifact.helmChartAppVersion%%`, correspondant au Server sélectionné. La [vérification de la paire publiée](%%artifact.helmChartQualificationUrl%%) contrôle les digests OCI/du paquet et l’identité source ; ce n’est pas le résultat d’une nouvelle installation de cluster. Consultez le [choix et la mise à niveau du chart](./deployment.md#helm-chart-selection) avant d’installer ou de remplacer l’image. + + PyPI affiche la version de distribution Python sous `%%artifact.pythonRegistryVersion%%`. La forme d'installation PEP 440 documentée `%%artifact.pythonSdkVersion%%` désigne cette même publication. Cette diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md b/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md index 38df8e25086..21394656fbb 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/deployment.md @@ -428,18 +428,23 @@ Installez le chart publié depuis le registre OCI : ```bash helm install durable-workflow \ - oci://ghcr.io/durable-workflow/charts/durable-workflow \ + %%artifact.helmChartRepository%% \ + --version %%artifact.helmChartVersion%% \ --namespace durable-workflow --create-namespace \ -f my-values.yaml ``` -Votre fichier de valeurs doit désigner MySQL/PostgreSQL et Redis externes, -fournir les identifiants de production via des Secrets Kubernetes existants -et configurer ingress/TLS pour votre environnement. Le chart ne crée ni -persistance ni infrastructure gérée par fournisseur. Pour la reproductibilité, -ajoutez `--version ` et fixez l'image Server par -empreinte. Le dépôt Server publie les versions du chart et documente ses mises -à niveau avec ses sources. +Le fichier de valeurs doit désigner MySQL/PostgreSQL et Redis externes, fournir les identifiants de production via des Kubernetes Secrets existants et configurer ingress/TLS pour votre environnement. Le chart ne crée ni persistance ni infrastructure gérée par le fournisseur. Fixez l’image Server par digest pour un déploiement reproductible. + +### Choisir une version du chart {#helm-chart-selection} + +Chaque version du chart enregistre l’image Server testée dans l’`appVersion` de `Chart.yaml` ; chart et Server ont des numéros de version indépendants. La [combinaison compatible sélectionnée](./compatibility.md#last-qualified-reproducible-tuple) associe le chart **%%artifact.helmChartVersion%%** à Server **%%artifact.helmChartAppVersion%%**, depuis les mêmes métadonnées que le tableau et la commande d’installation. La [vérification OCI/du paquet publié](%%artifact.helmChartQualificationUrl%%) confirme cette paire, pas une nouvelle installation Kubernetes. + +Pour une autre version du Server, examinez le `Chart.yaml` du chart publié candidat (la [source du chart sélectionné](%%artifact.helmChartSourceUrl%%) sert d’exemple) et choisissez une version exacte dont l’`appVersion` correspond au Server voulu. Lisez les [notes UPGRADING](%%artifact.helmChartUpgradeUrl%%) de la version sélectionnée, pour chaque version de chart traversée. Ne déduisez pas la version du chart de celle du Server et ne choisissez pas un chart non publié depuis le code actuel. + +Remplacer `image.tag` change l’image sans changer l’`appVersion` enregistré du chart. Cela crée une combinaison personnalisée jusqu’à sa propre qualification des manifestes rendus, du bootstrap, du déploiement et du runtime. Incluez les sauvegardes habituelles et les limites de retour arrière dans le plan de mise à niveau ; un rendu réussi ne prouve pas que le déploiement fonctionne. + +L’historique publié contient une exception : le chart 0.2.2 a franchi une version mineure du Server sous un numéro patch du chart. La [correction publiée ultérieure](https://github.com/durable-workflow/server/blob/2.11.0/k8s/helm/durable-workflow/docs/UPGRADING.md#chart-022--server-210) reconnaît cette exception et reprend la politique annoncée de versions mineures. Les versions historiques restent inchangées ; cette note ne sélectionne pas la combinaison Server/chart ultérieure. ## Manifestes Kubernetes {#kubernetes-manifests} diff --git a/i18n/fr/source-hashes.json b/i18n/fr/source-hashes.json index 4551eb0fde1..d335f5ec8ad 100644 --- a/i18n/fr/source-hashes.json +++ b/i18n/fr/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "28e6e3a55920762b4c9380721710de994335831db573447a60d92b213938d3fb", + "compatibility.md": "5d88e55a566f4103307871846ffc042c8e1e1d10ea57a44bcb3b3542643743d5", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "a4657d239673a4ecdc3981bcc5a7cf33aa2d37c709768131cd5ba3292987681f", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "6f1e88e2d67a5b086c73cc9b42b7f9583f46a45a1bf3b95ceff06457ebe17564", + "deployment.md": "2f272a9c37aade0a8bd7ab5ab388a9aaef9b9d4a9ae387ca303bf67e6c860d97", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md index aa8fe53c32e..06a50011129 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md @@ -163,6 +163,7 @@ Durable Workflow の各公開インターフェースは、次の安定性レベ | コンポーネント | サポートするバージョン | インストール識別情報 | |-----------|-------------------|------------------| | Server | `%%artifact.serverVersion%%` | `%%artifact.serverDockerHubImage%%` | +| Helm チャート | `%%artifact.helmChartVersion%%` | `%%artifact.helmChartInstallIdentity%%` | | CLI | `%%artifact.cliVersion%%` | `%%artifact.cliInstallerEnv%%` | | Workflow エンジン | `%%artifact.workflowVersion%%` | `%%artifact.workflowComposerPackage%%` | | Waterline 運用ツール | `%%artifact.waterlineVersion%%` | `%%artifact.waterlineComposerPackage%%` | @@ -170,6 +171,9 @@ Durable Workflow の各公開インターフェースは、次の安定性レベ | Python SDK | `%%artifact.pythonSdkVersion%%` | `%%artifact.pythonPackagePin%%` | | Rust SDK | `%%artifact.rustSdkVersion%%` | `%%artifact.rustCargoRequirement%%` | +Helm チャートに記録された `appVersion` は `%%artifact.helmChartAppVersion%%` で、選択した Server と一致します。[公開済みの組み合わせの検証記録](%%artifact.helmChartQualificationUrl%%)は OCI/パッケージのダイジェストとソース識別子を確認したもので、新たなクラスターインストールの結果ではありません。インストールやイメージの上書き前に、[チャートの選択とアップグレード](./deployment.md#helm-chart-selection)を確認してください。 + + PyPI は Python 配布版を `%%artifact.pythonRegistryVersion%%` と表示します。文書化した PEP 440 のインストール表記 `%%artifact.pythonSdkVersion%%` は、同じリリースに解決します。この正規化が別のサポート対象バージョンを作ることはありません。 影響する利用側の適格性確認後に、選択した組み合わせを更新します。公開 Server レジストリと生成クイックスタートは、選択した成果物を使います。パッケージは独立してリリースでき、プロトコルマニフェスト、機能、利用側チェックで互換性を検証します。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md b/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md index 99e640d0dd2..a7312d3a6a1 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/deployment.md @@ -302,12 +302,23 @@ Server リポジトリが[チャートソースとリリース手順](https://gi ```bash helm install durable-workflow \ - oci://ghcr.io/durable-workflow/charts/durable-workflow \ + %%artifact.helmChartRepository%% \ + --version %%artifact.helmChartVersion%% \ --namespace durable-workflow --create-namespace \ -f my-values.yaml ``` -values は外部 MySQL/PostgreSQL・Redis を指し、既存 Kubernetes Secrets で本番認証情報を提供し、環境の ingress・TLS を設定します。永続化・プロバイダー管理インフラは作りません。再現可能な本番では `--version ` を加え、Server をダイジェスト固定します。チャート版と更新手順はソースとともに公開します。 +values ファイルでは、外部の MySQL/PostgreSQL と Redis、既存の Kubernetes Secret による本番認証情報、環境に合った ingress/TLS を指定してください。チャートは永続ストレージやプロバイダー管理のインフラを作成しません。再現可能なデプロイのため、Server イメージをダイジェストで固定してください。 + +### チャートのリリースを選ぶ {#helm-chart-selection} + +各チャートリリースは、テスト対象の Server イメージを `Chart.yaml` の `appVersion` に記録します。チャートと Server のバージョン番号は独立しています。選択した[互換な組み合わせ](./compatibility.md#last-qualified-reproducible-tuple)は、チャート **%%artifact.helmChartVersion%%** と Server **%%artifact.helmChartAppVersion%%** で、表やインストールコマンドと同じリリースメタデータに基づきます。[公開済み OCI/パッケージの検証記録](%%artifact.helmChartQualificationUrl%%)が確認するのはその組み合わせであり、新たな Kubernetes インストールではありません。 + +別の Server バージョンでは、候補の公開済みチャートの `Chart.yaml` を調べ([選択済みチャートのソース](%%artifact.helmChartSourceUrl%%)を例として参照)、`appVersion` が目的の Server と一致するチャートの正確なバージョンを選んでください。選択したリリースの [UPGRADING ノート](%%artifact.helmChartUpgradeUrl%%)を、途中で通過するすべてのチャートバージョンについて確認してください。Server のバージョンからチャートのバージョンを推測したり、現在のソースから未公開チャートを選んだりしないでください。 + +`image.tag` の上書きはイメージを変更しますが、チャートに記録された `appVersion` は変わりません。その組み合わせ自体のレンダリング済みマニフェスト、bootstrap、ロールアウト、ランタイムを検証するまでは、カスタムのチャート/イメージ構成です。通常のデータベースバックアップとロールバック境界をアップグレード計画に含めてください。レンダリングの成功だけではデプロイの動作を証明できません。 + +公開履歴には例外があります。チャート 0.2.2 は、チャートのパッチ番号で Server のマイナーバージョンを跨ぎました。後の[公開済み訂正](https://github.com/durable-workflow/server/blob/2.11.0/k8s/helm/durable-workflow/docs/UPGRADING.md#chart-022--server-210)はこの例外を認め、明示されたマイナーバージョンの方針に戻しています。過去のバージョンは変更されません。この注記は後の Server/チャート構成を選択するものではありません。 ## Kubernetes マニフェスト {#kubernetes-manifests} diff --git a/i18n/ja/source-hashes.json b/i18n/ja/source-hashes.json index 4551eb0fde1..d335f5ec8ad 100644 --- a/i18n/ja/source-hashes.json +++ b/i18n/ja/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "28e6e3a55920762b4c9380721710de994335831db573447a60d92b213938d3fb", + "compatibility.md": "5d88e55a566f4103307871846ffc042c8e1e1d10ea57a44bcb3b3542643743d5", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "a4657d239673a4ecdc3981bcc5a7cf33aa2d37c709768131cd5ba3292987681f", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "6f1e88e2d67a5b086c73cc9b42b7f9583f46a45a1bf3b95ceff06457ebe17564", + "deployment.md": "2f272a9c37aade0a8bd7ab5ab388a9aaef9b9d4a9ae387ca303bf67e6c860d97", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md index 2b459a5092f..e5d901e4012 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md @@ -220,6 +220,7 @@ as versões exatas e os digests de imagens usados em cada verificação concluí | Componente | Versão suportada | Identidade de instalação | |-----------|-------------------|------------------| | Server | `%%artifact.serverVersion%%` | `%%artifact.serverDockerHubImage%%` | +| Chart Helm | `%%artifact.helmChartVersion%%` | `%%artifact.helmChartInstallIdentity%%` | | CLI | `%%artifact.cliVersion%%` | `%%artifact.cliInstallerEnv%%` | | Engine Workflow | `%%artifact.workflowVersion%%` | `%%artifact.workflowComposerPackage%%` | | Operador Waterline | `%%artifact.waterlineVersion%%` | `%%artifact.waterlineComposerPackage%%` | @@ -227,6 +228,9 @@ as versões exatas e os digests de imagens usados em cada verificação concluí | SDK Python | `%%artifact.pythonSdkVersion%%` | `%%artifact.pythonPackagePin%%` | | SDK Rust | `%%artifact.rustSdkVersion%%` | `%%artifact.rustCargoRequirement%%` | +O `appVersion` registrado do chart Helm é `%%artifact.helmChartAppVersion%%`, correspondendo ao Server selecionado. A [verificação do par publicado](%%artifact.helmChartQualificationUrl%%) comprova os digests OCI/do pacote e a identidade do código-fonte; não é uma nova instalação de cluster verificada. Consulte a [seleção e atualização do chart](./deployment.md#helm-chart-selection) antes de instalar ou substituir a imagem. + + O PyPI exibe a versão da distribuição Python como `%%artifact.pythonRegistryVersion%%`; a grafia documentada de instalação PEP 440 `%%artifact.pythonSdkVersion%%` resolve para o mesmo release. Essa normalização diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md index 0e28eb3f8ea..9057ca39700 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/deployment.md @@ -439,18 +439,23 @@ Instale o chart publicado pelo registro OCI: ```bash helm install durable-workflow \ - oci://ghcr.io/durable-workflow/charts/durable-workflow \ + %%artifact.helmChartRepository%% \ + --version %%artifact.helmChartVersion%% \ --namespace durable-workflow --create-namespace \ -f my-values.yaml ``` -Seu arquivo de valores deve apontar para um banco de dados MySQL/PostgreSQL -externo e um Redis externo, fornecer credenciais de produção por Secrets -Kubernetes existentes e configurar ingress/TLS para seu ambiente. O chart não -cria persistência nem infraestrutura gerenciada pelo provedor. Para implantações -reproduzíveis de produção, adicione `--version ` e fixe -a imagem do Server por digest. O repositório Server publica versões do chart -e documenta suas atualizações junto ao código-fonte. +O arquivo de valores deve apontar para MySQL/PostgreSQL e Redis externos, fornecer credenciais de produção por Kubernetes Secrets existentes e configurar ingress/TLS para o ambiente. O chart não cria persistência ou infraestrutura gerenciada pelo provedor. Fixe a imagem do Server por digest para uma implantação reproduzível. + +### Escolher uma versão do chart {#helm-chart-selection} + +Cada versão do chart registra em `appVersion` do `Chart.yaml` a imagem do Server com que foi testada; chart e Server têm números de versão independentes. A [combinação compatível selecionada](./compatibility.md#last-qualified-reproducible-tuple) associa o chart **%%artifact.helmChartVersion%%** ao Server **%%artifact.helmChartAppVersion%%**, usando os mesmos metadados da tabela e do comando de instalação. A [verificação OCI/do pacote publicado](%%artifact.helmChartQualificationUrl%%) comprova esse par, não uma nova instalação Kubernetes. + +Para outra versão do Server, inspecione o `Chart.yaml` do chart publicado candidato (o [código do chart selecionado](%%artifact.helmChartSourceUrl%%) é um exemplo) e selecione uma versão exata cujo `appVersion` corresponda ao Server desejado. Leia as [notas UPGRADING](%%artifact.helmChartUpgradeUrl%%) da versão selecionada, incluindo cada versão do chart atravessada. Não deduza a versão do chart a partir da versão do Server nem selecione um chart não publicado do código atual. + +Sobrescrever `image.tag` altera a imagem sem alterar o `appVersion` registrado no chart. Isso cria uma combinação personalizada até que ela receba sua própria qualificação de manifestos gerados, bootstrap, rollout e runtime. Inclua os backups normais e os limites de rollback no plano de atualização; gerar os manifestos com sucesso não comprova que a implantação funciona. + +O histórico publicado inclui uma exceção: o chart 0.2.2 atravessou uma versão minor do Server com um número patch do chart. A [correção publicada posterior](https://github.com/durable-workflow/server/blob/2.11.0/k8s/helm/durable-workflow/docs/UPGRADING.md#chart-022--server-210) reconhece essa exceção e retoma a política declarada de versões minor. Versões históricas ficam inalteradas; esta nota não seleciona a combinação posterior de Server/chart. ## Manifestos Kubernetes {#kubernetes-manifests} diff --git a/i18n/pt-BR/source-hashes.json b/i18n/pt-BR/source-hashes.json index 4551eb0fde1..d335f5ec8ad 100644 --- a/i18n/pt-BR/source-hashes.json +++ b/i18n/pt-BR/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "28e6e3a55920762b4c9380721710de994335831db573447a60d92b213938d3fb", + "compatibility.md": "5d88e55a566f4103307871846ffc042c8e1e1d10ea57a44bcb3b3542643743d5", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "a4657d239673a4ecdc3981bcc5a7cf33aa2d37c709768131cd5ba3292987681f", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "6f1e88e2d67a5b086c73cc9b42b7f9583f46a45a1bf3b95ceff06457ebe17564", + "deployment.md": "2f272a9c37aade0a8bd7ab5ab388a9aaef9b9d4a9ae387ca303bf67e6c860d97", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md index 0937e986e37..204a206978f 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md @@ -216,6 +216,7 @@ forward compatibility в документах стабільності паке | Компонент | Підтримувана версія | Ідентичність установлення | |-----------|-------------------|------------------| | Server | `%%artifact.serverVersion%%` | `%%artifact.serverDockerHubImage%%` | +| Чарт Helm | `%%artifact.helmChartVersion%%` | `%%artifact.helmChartInstallIdentity%%` | | CLI | `%%artifact.cliVersion%%` | `%%artifact.cliInstallerEnv%%` | | Рушій Workflow | `%%artifact.workflowVersion%%` | `%%artifact.workflowComposerPackage%%` | | Операторський Waterline | `%%artifact.waterlineVersion%%` | `%%artifact.waterlineComposerPackage%%` | @@ -223,6 +224,9 @@ forward compatibility в документах стабільності паке | Python SDK | `%%artifact.pythonSdkVersion%%` | `%%artifact.pythonPackagePin%%` | | Rust SDK | `%%artifact.rustSdkVersion%%` | `%%artifact.rustCargoRequirement%%` | +Записаний `appVersion` чарту Helm — `%%artifact.helmChartAppVersion%%`, що відповідає вибраному Server. [Підтвердження опублікованої пари](%%artifact.helmChartQualificationUrl%%) перевіряє OCI/package digests та ідентичність джерела; це не нова перевірка встановлення кластера. Перед встановленням або перевизначенням образу див. [вибір і оновлення чарту](./deployment.md#helm-chart-selection). + + PyPI показує версію Python distribution як `%%artifact.pythonRegistryVersion%%`. Документоване позначення встановлення PEP 440 `%%artifact.pythonSdkVersion%%` вибирає той самий випуск. diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md b/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md index 41a989f65c4..d5ac6b963b5 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/deployment.md @@ -429,18 +429,23 @@ SQL-з’єднання. ```bash helm install durable-workflow \ - oci://ghcr.io/durable-workflow/charts/durable-workflow \ + %%artifact.helmChartRepository%% \ + --version %%artifact.helmChartVersion%% \ --namespace durable-workflow --create-namespace \ -f my-values.yaml ``` -Ваш файл значень має вказувати зовнішні MySQL/PostgreSQL і Redis, надавати -виробничі облікові дані через наявні Kubernetes Secrets та налаштовувати -вхід до кластера й TLS для вашого середовища. Чарт не створює сховище чи -інфраструктуру під керуванням провайдера. Для відтворюваних виробничих -розгортань додайте `--version ` і закріпіть образ -Server за дайджестом. Репозиторій Server публікує версії чарта та документує -оновлення поруч із його кодом. +Файл values має вказувати на зовнішні MySQL/PostgreSQL і Redis, отримувати production-облікові дані з наявних Kubernetes Secrets та налаштовувати ingress/TLS для вашого середовища. Чарт не створює сховище чи керовану провайдером інфраструктуру. Для відтворюваного розгортання закріпіть образ Server за digest. + +### Вибір випуску чарту {#helm-chart-selection} + +Кожен випуск чарту записує образ Server, з яким його перевіряли, у `appVersion` файлу `Chart.yaml`; номери версій чарту й Server незалежні. Вибрана [сумісна комбінація](./compatibility.md#last-qualified-reproducible-tuple) поєднує чарт **%%artifact.helmChartVersion%%** із Server **%%artifact.helmChartAppVersion%%**, використовуючи ті самі метадані випусків, що й таблиця та команда встановлення. [Підтвердження опублікованих OCI/package](%%artifact.helmChartQualificationUrl%%) перевіряє цю пару, а не нове встановлення Kubernetes. + +Для іншої версії Server перевірте `Chart.yaml` потрібного опублікованого чарту ([джерело вибраного чарту](%%artifact.helmChartSourceUrl%%) є прикладом) й виберіть точну версію, чий `appVersion` відповідає потрібному Server. Прочитайте [нотатки UPGRADING](%%artifact.helmChartUpgradeUrl%%) вибраного випуску для кожної версії чарту, через яку переходите. Не виводьте версію чарту з версії Server і не вибирайте неопублікований чарт із поточного джерела. + +Перевизначення `image.tag` змінює образ, але не записаний `appVersion` чарту. Це власна комбінація чарту й образу, доки вона не пройде перевірку згенерованих маніфестів, bootstrap, rollout і runtime. Включайте звичайні резервні копії бази та межі відкату до плану оновлення; саме успішне генерування маніфестів не доводить працездатність розгортання. + +В опублікованій історії є виняток: чарт 0.2.2 перейшов на нову мінорну версію Server під patch-номером чарту. Пізніше [опубліковане виправлення пояснення](https://github.com/durable-workflow/server/blob/2.11.0/k8s/helm/durable-workflow/docs/UPGRADING.md#chart-022--server-210) визнає цей виняток і повертає заявлену політику мінорних версій. Історичні версії незмінні; ця примітка не вибирає новішу комбінацію Server/чарту. ## Маніфести Kubernetes {#kubernetes-manifests} diff --git a/i18n/uk/source-hashes.json b/i18n/uk/source-hashes.json index 4551eb0fde1..d335f5ec8ad 100644 --- a/i18n/uk/source-hashes.json +++ b/i18n/uk/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "28e6e3a55920762b4c9380721710de994335831db573447a60d92b213938d3fb", + "compatibility.md": "5d88e55a566f4103307871846ffc042c8e1e1d10ea57a44bcb3b3542643743d5", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "a4657d239673a4ecdc3981bcc5a7cf33aa2d37c709768131cd5ba3292987681f", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "6f1e88e2d67a5b086c73cc9b42b7f9583f46a45a1bf3b95ceff06457ebe17564", + "deployment.md": "2f272a9c37aade0a8bd7ab5ab388a9aaef9b9d4a9ae387ca303bf67e6c860d97", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md index 9e051fca693..8467de6c64d 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md @@ -163,6 +163,7 @@ Durable Workflow 中每个公开接口恰好具有以下一个稳定性级别。 | 组件 | 支持版本 | 安装身份 | |-----------|-------------------|------------------| | Server | `%%artifact.serverVersion%%` | `%%artifact.serverDockerHubImage%%` | +| Helm Chart | `%%artifact.helmChartVersion%%` | `%%artifact.helmChartInstallIdentity%%` | | CLI | `%%artifact.cliVersion%%` | `%%artifact.cliInstallerEnv%%` | | 工作流引擎 | `%%artifact.workflowVersion%%` | `%%artifact.workflowComposerPackage%%` | | Waterline 操作界面 | `%%artifact.waterlineVersion%%` | `%%artifact.waterlineComposerPackage%%` | @@ -170,6 +171,9 @@ Durable Workflow 中每个公开接口恰好具有以下一个稳定性级别。 | Python SDK | `%%artifact.pythonSdkVersion%%` | `%%artifact.pythonPackagePin%%` | | Rust SDK | `%%artifact.rustSdkVersion%%` | `%%artifact.rustCargoRequirement%%` | +Helm Chart 记录的 `appVersion` 为 `%%artifact.helmChartAppVersion%%`,与所选 Server 一致。[已发布组合的验证记录](%%artifact.helmChartQualificationUrl%%)核实了 OCI/软件包摘要和源码标识,并不代表新完成的集群安装验证。安装或覆盖镜像前,请阅读 [Chart 选择与升级](./deployment.md#helm-chart-selection)。 + + PyPI 将 Python 分发版本显示为 `%%artifact.pythonRegistryVersion%%`;文档中的 PEP 440 安装写法 `%%artifact.pythonSdkVersion%%` 解析到同一发布。这种规范化不产生第二个受支持版本。 所选组合在受影响使用方完成资格验证后推进。公开 Server 镜像仓库和生成的快速入门使用所选产物。软件包可以独立发布,通过协议清单、能力和使用方检查验证兼容性。 diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md index 22166566e68..d77914e30ec 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/deployment.md @@ -290,12 +290,23 @@ Server 仓库负责 [chart 源码和发布指南](https://github.com/durable-wor ```bash helm install durable-workflow \ - oci://ghcr.io/durable-workflow/charts/durable-workflow \ + %%artifact.helmChartRepository%% \ + --version %%artifact.helmChartVersion%% \ --namespace durable-workflow --create-namespace \ -f my-values.yaml ``` -Values 文件必须指向外部 MySQL/PostgreSQL 和外部 Redis,通过现有 Kubernetes Secret 提供生产凭据,并针对环境配置 ingress/TLS。Chart 不创建持久化或提供商托管基础设施。为使生产部署可复现,添加 `--version `,并按摘要固定 Server 镜像。Server 仓库发布 chart 版本,并在 chart 源码旁记录升级方法。 +values 文件必须指向外部 MySQL/PostgreSQL 和 Redis,通过已有 Kubernetes Secret 提供生产凭据,并为环境配置 ingress/TLS。Chart 不会创建持久化存储或提供商托管基础设施。为了可复现部署,请按摘要固定 Server 镜像。 + +### 选择 Chart 版本 {#helm-chart-selection} + +每个 Chart 发布版都会在 `Chart.yaml` 的 `appVersion` 中记录其测试过的 Server 镜像;Chart 与 Server 的版本号彼此独立。所选[兼容组合](./compatibility.md#last-qualified-reproducible-tuple)使用 Chart **%%artifact.helmChartVersion%%** 和 Server **%%artifact.helmChartAppVersion%%**,与表格和安装命令共享同一份发布元数据。[已发布 OCI/软件包的验证记录](%%artifact.helmChartQualificationUrl%%)核实的是这个组合,并非一次新的 Kubernetes 安装。 + +对于其他 Server 版本,请检查候选已发布 Chart 的 `Chart.yaml`([当前所选 Chart 源码](%%artifact.helmChartSourceUrl%%)可作为示例),选择 `appVersion` 与目标 Server 一致的确切 Chart 版本。阅读所选版本的 [UPGRADING 说明](%%artifact.helmChartUpgradeUrl%%),包括升级跨越的每个 Chart 版本。不要根据 Server 版本推算 Chart 版本,也不要从当前源码选择尚未发布的 Chart。 + +覆盖 `image.tag` 会更换镜像,却不会改变 Chart 记录的 `appVersion`。这会形成一个自定义 Chart/镜像组合,直到该组合单独完成渲染清单、初始化、滚动部署和运行时验证。升级计划应包含常规数据库备份和回滚边界;成功渲染清单并不能证明部署可用。 + +已发布历史中存在一个例外:Chart 0.2.2 在 Chart 补丁版本号下跨越了 Server 的次版本。后续[已发布的更正说明](https://github.com/durable-workflow/server/blob/2.11.0/k8s/helm/durable-workflow/docs/UPGRADING.md#chart-022--server-210)承认了该例外,并恢复所述的次版本策略。历史版本保持不变;这条说明不会选择后续 Server/Chart 组合。 ## Kubernetes 清单 {#kubernetes-manifests} diff --git a/i18n/zh-Hans/source-hashes.json b/i18n/zh-Hans/source-hashes.json index 4551eb0fde1..d335f5ec8ad 100644 --- a/i18n/zh-Hans/source-hashes.json +++ b/i18n/zh-Hans/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "28e6e3a55920762b4c9380721710de994335831db573447a60d92b213938d3fb", + "compatibility.md": "5d88e55a566f4103307871846ffc042c8e1e1d10ea57a44bcb3b3542643743d5", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "a4657d239673a4ecdc3981bcc5a7cf33aa2d37c709768131cd5ba3292987681f", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -27,7 +27,7 @@ "defining-workflows/workflow-id.md": "91b94211e2f8f405895ad82cfe2ef9baadb7a2cbd06e9c1e7aa6362231e0d424", "defining-workflows/workflow-status.md": "8e8cb27ff44c890d489d89bf166375acfdfaecabd990a2235e106fab1592d529", "defining-workflows/workflows.md": "f467bc73de32aa5d722c61ce085065460382ae7dd44cea4625847d9fcdc4c97c", - "deployment.md": "6f1e88e2d67a5b086c73cc9b42b7f9583f46a45a1bf3b95ceff06457ebe17564", + "deployment.md": "2f272a9c37aade0a8bd7ab5ab388a9aaef9b9d4a9ae387ca303bf67e6c860d97", "failures-and-recovery.md": "b142a2edc4c9836bca2634b6a0a2358336f99103e9da04ed64053d12b74b796e", "features/activity-execution-model.md": "e8c37520ae46a7efb30438f4fc06bf893c1df430cb1f92c48963697adaf09082", "features/cancel-and-terminate.md": "c678fc7a0c9b11f0e1bee295aff259de9803219c0aa6769fb801622799e7deb1", diff --git a/package.json b/package.json index 789f3074515..4ead007189c 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "postinstall": "patch-package", "prestart": "node scripts/check-dependency-security.js", "start": "docusaurus start", - "build": "npm run check:dependency-security && npm run check:node-toolchain && node scripts/check-local-search.test.js && node scripts/check-doc-translation-updates.test.js && node scripts/check-doc-translations.js && node scripts/check-localized-links.test.js && docusaurus build && node scripts/generate-llms.js && node scripts/generate-llms-full.js", + "build": "npm run check:dependency-security && npm run check:node-toolchain && node scripts/check-helm-chart-pairing.test.js && node scripts/check-local-search.test.js && node scripts/check-doc-translation-updates.test.js && node scripts/check-doc-translations.js && node scripts/check-localized-links.test.js && docusaurus build && node scripts/generate-llms.js && node scripts/generate-llms-full.js", "check:node-toolchain": "node scripts/check-node-toolchain.js && node scripts/check-node-toolchain.test.js", "check:dependency-security": "node scripts/check-dependency-security.js && node scripts/check-dependency-security.test.js", "check:platform-protocol-specs": "node scripts/check-platform-protocol-specs.js", diff --git a/scripts/check-helm-chart-pairing.test.js b/scripts/check-helm-chart-pairing.test.js new file mode 100644 index 00000000000..6809e3790da --- /dev/null +++ b/scripts/check-helm-chart-pairing.test.js @@ -0,0 +1,32 @@ +const assert = require('node:assert/strict'); +const test = require('node:test'); +const source = require('../static/stable-releases.json'); +const {readStableReleases, buildArtifactPins, replaceArtifactTokens, artifactVersionRemarkPlugin} = require('./public-artifact-versions'); + +test('reject a Server selected without its matching Helm appVersion', () => { + const versions = readStableReleases(source); + assert.equal(versions.server, source.helm_chart.app_version); + const mismatch = structuredClone(source); + mismatch.artifacts.server = '999.0.0'; + assert.throws(() => readStableReleases(mismatch), /Helm app_version must match/); + assert.throws(() => buildArtifactPins({...versions, server: '999.0.0'}), /paired with the selected Server/); +}); + +test('reject missing published Helm qualification metadata', () => { + const unqualified = structuredClone(source); + delete unqualified.helm_chart.package_digest; + assert.throws(() => readStableReleases(unqualified), /package_digest must be a SHA256 digest/); + delete unqualified.helm_chart; + assert.throws(() => readStableReleases(unqualified), /Helm app_version must match/); +}); + +test('render the paired chart identity and resolve URLs before MDX URI decoding', () => { + const versions = readStableReleases(source); + const rendered = replaceArtifactTokens('| Helm | %%artifact.helmChartVersion%% | %%artifact.helmChartInstallIdentity%% | Server %%artifact.helmChartAppVersion%% |'); + assert.equal(rendered, `| Helm | ${versions['helm-chart']} | ${source.helm_chart.repository} --version ${versions['helm-chart']} | Server ${versions.server} |`); + const link = {type: 'link', url: '%%artifact.helmChartSourceUrl%%', children: []}; + assert.throws(() => decodeURIComponent(link.url), URIError); + artifactVersionRemarkPlugin()({type: 'root', children: [link]}); + assert.doesNotThrow(() => decodeURIComponent(link.url)); + assert.equal(link.url, buildArtifactPins().helmChartSourceUrl); +}); diff --git a/scripts/public-artifact-versions.js b/scripts/public-artifact-versions.js index ed19a057ce2..b4377d7ce01 100644 --- a/scripts/public-artifact-versions.js +++ b/scripts/public-artifact-versions.js @@ -4,6 +4,7 @@ const STABLE_RELEASE_SCHEMA = 'durable-workflow.docs.stable-releases'; const STABLE_VERSION_PATTERN_SOURCE = '\\d+\\.\\d+\\.\\d+'; const REQUIRED_ARTIFACTS = Object.freeze([ 'cli', + 'helm-chart', 'sdk-php', 'sdk-python', 'sdk-rust', @@ -32,10 +33,28 @@ function readStableReleases(source = stableReleaseSource) { throw new Error(`stable-releases.json contains unknown artifacts: ${unknown.join(', ')}`); } + const chart = source.helm_chart; + if (chart?.app_version !== artifacts.server) { + throw new Error('stable-releases.json Helm app_version must match the selected Server version'); + } + if (chart.repository !== 'oci://ghcr.io/durable-workflow/charts/durable-workflow') { + throw new Error('stable-releases.json must identify the published Helm OCI repository'); + } + for (const key of ['oci_manifest_digest', 'package_digest']) { + if (!/^sha256:[a-f0-9]{64}$/.test(chart[key] || '')) { + throw new Error(`stable-releases.json helm_chart.${key} must be a SHA256 digest`); + } + } + if (!/^[a-f0-9]{40}$/.test(chart.source_commit || '') + || !/^https:\/\/github\.com\/durable-workflow\/.+/.test(chart.qualification_url || '')) { + throw new Error('stable-releases.json Helm pairing needs immutable source and qualification evidence'); + } + return Object.freeze({...artifacts}); } const ARTIFACT_VERSIONS = readStableReleases(); +const HELM_CHART = Object.freeze({...stableReleaseSource.helm_chart}); const PUBLISHED_ARTIFACT_VERSIONS = ARTIFACT_VERSIONS; const ARTIFACT_RELEASE_POLICY = Object.freeze({ schema: STABLE_RELEASE_SCHEMA, @@ -112,7 +131,10 @@ function productTrainVersion(versions = ARTIFACT_VERSIONS) { return assertStableVersion('Python SDK', versions['sdk-python']); } -function buildArtifactPins(versions = ARTIFACT_VERSIONS) { +function buildArtifactPins(versions = ARTIFACT_VERSIONS, helmChart = HELM_CHART) { + if (versions.server !== helmChart.app_version) { + throw new Error('Artifact pins require a Helm appVersion paired with the selected Server'); + } const python = buildPythonPackageAuthority(versions); const rust = buildRustPackageAuthority(versions); @@ -145,6 +167,13 @@ function buildArtifactPins(versions = ARTIFACT_VERSIONS) { rustRepositoryUrl: 'https://github.com/durable-workflow/sdk-rust', rustDocumentationUrl: 'https://rust.durable-workflow.com/', serverVersion: versions.server, + helmChartVersion: versions['helm-chart'], + helmChartAppVersion: helmChart.app_version, + helmChartRepository: helmChart.repository, + helmChartInstallIdentity: `${helmChart.repository} --version ${versions['helm-chart']}`, + helmChartSourceUrl: `https://github.com/durable-workflow/server/blob/${helmChart.source_commit}/k8s/helm/durable-workflow/Chart.yaml`, + helmChartUpgradeUrl: `https://github.com/durable-workflow/server/blob/${versions.server}/k8s/helm/durable-workflow/docs/UPGRADING.md`, + helmChartQualificationUrl: helmChart.qualification_url, serverPackageUrl: `https://hub.docker.com/r/durableworkflow/server/tags?name=${versions.server}`, serverDockerHubImage: `durableworkflow/server:${versions.server}`, serverGhcrImage: `ghcr.io/durable-workflow/server:${versions.server}`, @@ -189,13 +218,14 @@ const ARTIFACT_PINS = Object.freeze({ const SERVICE_MODE_SDK_ARTIFACTS = Object.freeze(['sdk-php', 'sdk-python', 'sdk-rust']); const QUALIFIED_ARTIFACT_DEPLOYMENT_PATHS = Object.freeze([ Object.freeze({id: 'cloud_service', label: 'Cloud', required_artifacts: Object.freeze([]), choose_one_artifacts: SERVICE_MODE_SDK_ARTIFACTS, optional_artifacts: Object.freeze([]), provisioned_components: Object.freeze(['server_runtime_values', 'managed_waterline']), separately_deployed_components: Object.freeze([])}), - Object.freeze({id: 'self_hosted_service', label: 'Self-hosted service mode', required_artifacts: Object.freeze(['server']), choose_one_artifacts: SERVICE_MODE_SDK_ARTIFACTS, optional_artifacts: Object.freeze(['cli']), provisioned_components: Object.freeze([]), separately_deployed_components: Object.freeze(['waterline_service'])}), + Object.freeze({id: 'self_hosted_service', label: 'Self-hosted service mode', required_artifacts: Object.freeze(['server']), choose_one_artifacts: SERVICE_MODE_SDK_ARTIFACTS, optional_artifacts: Object.freeze(['cli', 'helm-chart']), provisioned_components: Object.freeze([]), separately_deployed_components: Object.freeze(['waterline_service'])}), Object.freeze({id: 'embedded_laravel', label: 'Embedded Laravel', required_artifacts: Object.freeze(['workflow']), choose_one_artifacts: Object.freeze([]), optional_artifacts: Object.freeze(['waterline']), provisioned_components: Object.freeze([]), separately_deployed_components: Object.freeze([])}), ]); const applicability = (cloud, service, embedded) => Object.freeze({cloud_service: cloud, self_hosted_service: service, embedded_laravel: embedded}); const QUALIFIED_ARTIFACT_MATRIX = Object.freeze([ Object.freeze({artifact: 'server', label: 'Server', role: 'service_runtime', identity: ARTIFACT_PINS.serverDockerHubImage, packageUrl: ARTIFACT_PINS.serverPackageUrl, applicability: applicability('provisioned_not_installed', 'required', 'not_used')}), + Object.freeze({artifact: 'helm-chart', label: 'Helm chart', role: 'optional_kubernetes_deployment', identity: ARTIFACT_PINS.helmChartInstallIdentity, packageUrl: ARTIFACT_PINS.helmChartSourceUrl, applicability: applicability('not_used', 'optional', 'not_used')}), Object.freeze({artifact: 'cli', label: 'CLI', role: 'service_operator_tool', identity: ARTIFACT_PINS.cliInstallerEnv, packageUrl: ARTIFACT_PINS.cliPackageUrl, applicability: applicability('not_in_first_success', 'optional', 'not_used')}), Object.freeze({artifact: 'workflow', label: 'Workflow', role: 'embedded_laravel_engine', identity: ARTIFACT_PINS.workflowComposerPackage, packageUrl: ARTIFACT_PINS.workflowPackageUrl, applicability: applicability('not_used', 'not_used', 'required')}), Object.freeze({artifact: 'waterline', label: 'Waterline Composer package', role: 'embedded_laravel_operator_ui', identity: ARTIFACT_PINS.waterlineComposerPackage, packageUrl: ARTIFACT_PINS.waterlinePackageUrl, applicability: applicability('managed_not_installed', 'separate_service_identity', 'optional')}), @@ -225,6 +255,9 @@ function buildArtifactDistributionSurfaces(versions = ARTIFACT_VERSIONS) { Object.freeze({surface: 'docker_hub_container_image', registry: 'docker_hub', image: 'durableworkflow/server', tag: versions.server, reference: `durableworkflow/server:${versions.server}`}), Object.freeze({surface: 'ghcr_container_image', registry: 'ghcr', image: 'ghcr.io/durable-workflow/server', tag: versions.server, reference: `ghcr.io/durable-workflow/server:${versions.server}`}), ]), + 'helm-chart': Object.freeze([ + Object.freeze({surface: 'oci_helm_chart', repository: HELM_CHART.repository, version: versions['helm-chart'], app_version: HELM_CHART.app_version, manifest_digest: HELM_CHART.oci_manifest_digest, package_digest: HELM_CHART.package_digest, source_commit: HELM_CHART.source_commit, qualification_url: HELM_CHART.qualification_url}), + ]), 'sdk-python': Object.freeze([ Object.freeze({surface: 'pypi_exact_release', package: python.package, version: python.version, registry_version: python.registryVersion, url: python.exactReleaseUrl, json_url: python.exactReleaseJsonUrl}), Object.freeze({surface: 'pypi_canonical_project_identity', package: python.package, url: python.canonicalProjectUrl, authority_role: 'project_identity_only'}), diff --git a/static/stable-releases.json b/static/stable-releases.json index 15b8507195c..5981f94cd80 100644 --- a/static/stable-releases.json +++ b/static/stable-releases.json @@ -1,14 +1,23 @@ { "schema": "durable-workflow.docs.stable-releases", "schema_version": 1, - "updated_at": "2026-10-22", + "updated_at": "2026-10-23", "artifacts": { "cli": "2.3.0", + "helm-chart": "0.2.3", "sdk-php": "3.2.0", "sdk-python": "2.8.0", "sdk-rust": "4.2.0", "server": "2.10.1", "waterline": "2.12.1", "workflow": "2.11.0" + }, + "helm_chart": { + "app_version": "2.10.1", + "repository": "oci://ghcr.io/durable-workflow/charts/durable-workflow", + "oci_manifest_digest": "sha256:ffdb9b8699fae5ffbc9a6723771b38f41dede2940340965605641948eb5e073e", + "package_digest": "sha256:8392a082c368c02ce2120f86ba08c42c2082cbfa8a3ef9b4dbb1e918df9dd45d", + "source_commit": "d055dc55dcd15c59a64dfc6bc728d154a3197368", + "qualification_url": "https://github.com/durable-workflow/durable-workflow.github.io/issues/346#issuecomment-6361914751" } }