Skip to content

Commit 5c15ffc

Browse files
committed
Publish semver stable image channel
1 parent 6277155 commit 5c15ffc

3 files changed

Lines changed: 11 additions & 5 deletions

File tree

.github/workflows/devsh-foss-image.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,20 @@ jobs:
4040
id: image
4141
run: |
4242
set -euo pipefail
43+
base_version=$(python3 -c 'import json; print(json.load(open("package.json"))["version"])')
44+
stable_tag="${base_version}-devsh"
4345
requested='${{ inputs.image_tag }}'
4446
if [ -n "${requested}" ]; then
4547
image_tag="${requested}"
4648
else
47-
base_version=$(python3 -c 'import json; print(json.load(open("package.json"))["version"])')
4849
image_tag="${base_version}-devsh.$(date -u +%Y%m%d%H%M%S).${GITHUB_SHA:0:12}"
4950
fi
5051
echo "image-tag=${image_tag}" >> "${GITHUB_OUTPUT}"
52+
echo "stable-tag=${stable_tag}" >> "${GITHUB_OUTPUT}"
5153
echo "IMAGE_TAG=${image_tag}" >> "${GITHUB_ENV}"
54+
echo "STABLE_TAG=${stable_tag}" >> "${GITHUB_ENV}"
5255
echo "Publishing ${IMAGE}:${image_tag}"
56+
echo "Publishing ${IMAGE}:${stable_tag}"
5357
5458
- name: Validate image tag
5559
run: |
@@ -211,6 +215,7 @@ jobs:
211215
--label "org.opencontainers.image.source=https://github.com/Devsh-Graphics-Programming/Rocket.Chat" \
212216
--label "org.opencontainers.image.revision=${GITHUB_SHA}" \
213217
--tag "${IMAGE}:${IMAGE_TAG}" \
218+
--tag "${IMAGE}:${STABLE_TAG}" \
214219
--tag "${IMAGE}:devsh" \
215220
--file "${GITHUB_WORKSPACE}/apps/meteor/.docker/Dockerfile.alpine" \
216221
/tmp/dist
@@ -226,4 +231,5 @@ jobs:
226231
run: |
227232
set -euo pipefail
228233
docker push "${IMAGE}:${IMAGE_TAG}"
234+
docker push "${IMAGE}:${STABLE_TAG}"
229235
docker push "${IMAGE}:devsh"

DEVSH.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ Runtime validation happens after deployment through the TerraInfra Rocket.Chat E
2929
Pushes to `devsh` publish:
3030

3131
- `<rocket-version>-devsh.YYYYMMDDHHMMSS.<sha>` as the immutable audit and rollback tag.
32-
- `devsh` as the stable production channel tag.
32+
- `<rocket-version>-devsh` as the stable production channel tag.
3333

34-
TerraInfra points the Rocket.Chat HelmRelease at the stable `devsh` tag with `imagePullPolicy=Always`. Immutable tags remain available for audit, debugging, and explicit rollback.
34+
TerraInfra points the Rocket.Chat HelmRelease at the stable semver-compatible channel tag with `imagePullPolicy=Always`. Immutable tags remain available for audit, debugging, and explicit rollback. The channel tag must stay semver-compatible because the upstream Helm chart evaluates `.Values.image.tag` with `semverCompare`.
3535

3636
## TerraInfra Integration
3737

@@ -42,7 +42,7 @@ TerraInfra uses the standard DevSH image rollout model:
4242
- Digest rollout hook for immediate deployment restarts when the `devsh` digest changes
4343
- Digest rollout CronJob as fallback
4444

45-
Do not add TerraInfra tag bump workflows to this fork. Publishing a new `devsh` package is enough; the cluster observes the digest change and rolls itself forward.
45+
Do not add TerraInfra tag bump workflows to this fork. Publishing a new package that updates the stable channel tag is enough; the cluster observes the digest change and rolls itself forward.
4646

4747
## Operational Rule
4848

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
> [!IMPORTANT]
2-
> This is the DevSH operational fork of Rocket.Chat. The `devsh` branch is used to build a FOSS-only image for the isolated DevSH production workspace. The image workflow runs `yarn fossify`, publishes immutable semver-compatible `<rocket-version>-devsh.YYYYMMDDHHMMSS.<sha>` tags plus the stable `devsh` channel tag to `ghcr.io/devsh-graphics-programming/rocketchat-foss`, and TerraInfra rolls `prod-rocket-01` from the stable channel digest.
2+
> This is the DevSH operational fork of Rocket.Chat. The `devsh` branch is used to build a FOSS-only image for the isolated DevSH production workspace. The image workflow runs `yarn fossify`, publishes immutable semver-compatible `<rocket-version>-devsh.YYYYMMDDHHMMSS.<sha>` tags plus the stable semver-compatible `<rocket-version>-devsh` channel tag to `ghcr.io/devsh-graphics-programming/rocketchat-foss`, and TerraInfra rolls `prod-rocket-01` from the stable channel digest.
33
>
44
> Keep runtime infrastructure changes in TerraInfra. Keep this fork close to upstream Rocket.Chat and use `DEVSH.md` for the DevSH branch/build model.
55

0 commit comments

Comments
 (0)