Skip to content

Release rotation (auto)#760

Open
openemr-release-bot[bot] wants to merge 1 commit into
masterfrom
release-rotation/auto
Open

Release rotation (auto)#760
openemr-release-bot[bot] wants to merge 1 commit into
masterfrom
release-rotation/auto

Conversation

@openemr-release-bot

@openemr-release-bot openemr-release-bot Bot commented May 30, 2026

Copy link
Copy Markdown

Automated rotation triggered by workflow_dispatch.

Run: https://github.com/openemr/openemr-devops/actions/runs/27280145169

Slot assignments applied:

  • current=8.1

@kojiromike kojiromike force-pushed the release-rotation/auto branch from 33e6c77 to e6e4ae7 Compare June 1, 2026 17:10
@openemr-release-bot openemr-release-bot Bot force-pushed the release-rotation/auto branch from e6e4ae7 to c839d56 Compare June 1, 2026 17:19
kojiromike added a commit that referenced this pull request Jun 1, 2026
…ck paths (#770)

## Summary

Fixes #769. The `env.stub` shellcheck directive in the 8.0.0 init
scripts was written as a repo-relative path carrying a version token (`#
shellcheck source=docker/openemr/8.0.0/env.stub`). Because the scripts
were registered as `current`-slot pins, advancing `current` 8.0.0 →
8.1.0 rewrote that directive to point at a sibling dir that never
exists, breaking shellcheck CI on the auto rotation PR (#760).

A `# shellcheck source=` comment is a path to the script's own sibling
file, not a version pin — it should never carry a rotating token.

## Changes

- `docker/openemr/8.0.0/openemr.sh`, `ssl.sh`: use the version-agnostic
`SCRIPTDIR/env.stub` form (matching the existing convention already used
for `devtoolsLibrary.source`). `SCRIPTDIR` resolves to the script's own
dir at lint time and contains no token for the rotator to match.
- `tools/release/versions.yml`: drop the two `shellcheck_source`
entries. After the change above the files hold no version pin, so the
linter no longer flags them — no `excludes:` entry needed.
- `tools/release/tests/SlotRotatorTest.php`: regression test seeding a
`*.sh` with a `SCRIPTDIR` directive plus a genuine rotating token,
asserting the directive survives rotation byte-for-byte.

## Test plan

- [x] `php bin/lint-versions.php` — `openemr.sh`/`ssl.sh` no longer
flagged (the two remaining `rel_branch_ref` findings pre-exist on
`master`, unrelated)
- [x] `vendor/bin/phpunit` — 175 tests green, including the new
regression
- [x] Dry-run rotation reproducing #760 (`--current=8.1 --dry-run`) no
longer touches the `# shellcheck source=` line in either script
- [x] `shellcheck docker/openemr/8.0.0/openemr.sh ssl.sh` — clean
@openemr-release-bot openemr-release-bot Bot force-pushed the release-rotation/auto branch from c839d56 to 23b66da Compare June 1, 2026 19:01
@kojiromike kojiromike marked this pull request as ready for review June 3, 2026 17:21
Copilot AI review requested due to automatic review settings June 3, 2026 17:21
@kojiromike kojiromike marked this pull request as draft June 3, 2026 17:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Automated release-rotation update intended to promote the current slot to OpenEMR 8.1.0 (and update the production build workflow + Dependabot config accordingly).

Changes:

  • Bump tools/release/versions.yml slots.current from 8.0.0 → 8.1.0 (including removing the legacy 4-part patch pin).
  • Update the “current” production Docker build workflow to build from docker/openemr/8.1.0 and publish 8.1.0 tags.
  • Rotate Docker/Dependabot references from the 8.0.0 directory to 8.1.0.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.

File Description
tools/release/versions.yml Promotes current slot to 8.1.0 and drops the legacy patch field.
docker/openemr/8.0.0/Dockerfile Changes the cloned upstream OpenEMR release branch.
.github/workflows/build-800.yml Retargets the “current” production build to the 8.1.0 Docker context and tags.
.github/dependabot.yml Updates a Dependabot Docker directory entry for rotation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docker/openemr/8.0.0/Dockerfile Outdated
Comment thread .github/workflows/build-800.yml Outdated
Comment thread .github/dependabot.yml
Comment on lines +15 to 19
# Docker - docker/openemr/8.1.0
- package-ecosystem: "docker"
directory: "/docker/openemr/8.0.0"
directory: "/docker/openemr/8.1.0"
schedule:
interval: "daily"
kojiromike added a commit to kojiromike/openemr-devops that referenced this pull request Jun 8, 2026
…-derived tags

Collapse build-800/810/811.yml into a single build-openemr.yml whose
matrix is the stable slot names [current, next, dev] x platform, never
rotated. Each job resolves its version at runtime from the
docker/openemr/{current,next,dev} symlinks, so the workflow holds zero
version strings and SlotRotator only re-points the symlink.

Publish each slot's true version.php-derived tag instead of the bare
symlink dir name: current -> 8.0.0.3, next -> 8.1.0, dev -> 8.1.1-dev.
This fixes current (really the 8.0.0.3 patch release) and prevents dev
from publishing a bare :8.1.1 that would collide with the eventual real
8.1.1 release.

Supporting changes: standardize 8.0.0/Dockerfile to
ARG OPENEMR_VERSION=rel-800; update versions.yml (current.full ->
8.0.0.3, dev.full -> 8.1.1-dev); update Docker Hub overview template +
renderer test; document the derivation in release-automation-plan.md.

This is the build-workflow half of step #5 (workflow consolidation,
openemr#638 follow-on) and unblocks the release-rotation PR (openemr#760).

Assisted-by: Claude Code
kojiromike added a commit to kojiromike/openemr-devops that referenced this pull request Jun 8, 2026
…-derived tags

Collapse build-800/810/811.yml into a single build-openemr.yml whose
matrix is the stable slot names [current, next, dev] x platform, never
rotated. Each job resolves its version at runtime from the
docker/openemr/{current,next,dev} symlinks, so the workflow holds zero
version strings and SlotRotator only re-points the symlink.

Publish each slot's true version.php-derived tag instead of the bare
symlink dir name: current -> 8.0.0.3, next -> 8.1.0, dev -> 8.1.1-dev.
This fixes current (really the 8.0.0.3 patch release) and prevents dev
from publishing a bare :8.1.1 that would collide with the eventual real
8.1.1 release.

Supporting changes: standardize 8.0.0/Dockerfile to
ARG OPENEMR_VERSION=rel-800; update versions.yml (current.full ->
8.0.0.3, dev.full -> 8.1.1-dev); update Docker Hub overview template +
renderer test; document the derivation in release-automation-plan.md.

This is the build-workflow half of step #5 (workflow consolidation,
openemr#638 follow-on) and unblocks the release-rotation PR (openemr#760).

Assisted-by: Claude Code
kojiromike added a commit that referenced this pull request Jun 9, 2026
…-derived tags (#777)

## Summary

Collapse the three version-named rotating build workflows into one
slot-named matrix workflow, then make that workflow publish each slot's
**true** OpenEMR version (derived from `version.php`) instead of the
bare symlink directory name.

### 1. Consolidate to a single slot-matrix workflow

`build-800.yml` / `build-810.yml` / `build-811.yml` become a single
`build-openemr.yml` whose matrix is the **stable slot names** `[current,
next, dev]` × platform — never rotated. Each job resolves the slot's
version at runtime from the `docker/openemr/{current,next,dev}`
symlinks, so the workflow holds zero version strings and rotation never
rewrites it (`SlotRotator` just re-points the symlink).

Docker dirs (`docker/openemr/{8.0.0,8.1.0,8.1.1}`) stay version-named —
they hold real per-version Dockerfiles and are honest targets.

### 2. Publish version.php-derived tags per slot

The merge job derives each slot's published version from the OpenEMR
`version.php` at the slot Dockerfile's `OPENEMR_VERSION` ref, composing
`major.minor.patch[.realpatch][tag]`:

| Slot | ref | Published `:ver` | Was (bare dir) |
|---|---|---|---|
| current | `rel-800` | **8.0.0.3** | 8.0.0 |
| next | `rel-810` | 8.1.0 | 8.1.0 |
| dev | `master` | **8.1.1-dev** | 8.1.1 |

This fixes two bugs: `current` is really 8.0.0.3 (a genuine patch
release), and `dev` would otherwise publish a bare `:8.1.1` that
collides with the eventual real 8.1.1 release.

**Tag set per slot:** `:<float>` (latest/next/dev) + `:<ver>` +
`:<ver>-<date>`, plus the bare-dir tag (`8.0.0` / `8.1.0`) for
**current/next only** (never dev) when it differs from `:<ver>`.

### Supporting changes

- Standardize `docker/openemr/8.0.0/Dockerfile` to `ARG
OPENEMR_VERSION=rel-800` so the merge-job grep is uniform across all
three slots.
- Registry `tools/release/versions.yml`: `current.full` → `8.0.0.3`
(drop vestigial `patch`), `dev.full` → `8.1.1-dev`, 8.0.0 Dockerfile
`kinds` → `docker_arg_branch`.
- Docker Hub overview template + renderer test updated to the
`docker_dir` + `full` model.
- `docs/release-automation-plan.md` documents the version.php derivation
and per-slot tag set.

This is the build-workflow half of step #5 (workflow consolidation, #638
follow-on) in `docs/release-automation-plan.md`, and unblocks the
release-rotation PR (#760).

## Test plan

- [x] `composer test` — 179 tests pass
- [x] `composer phpcs` — clean
- [x] `composer phpstan` — no errors
- [x] `actionlint` on `build-openemr.yml` — clean (shellcheck SC2016
suppressed for the PHP one-liner, matching `build-release.yml`)
- [x] `yq` lint on the registry
- [x] Version-composition dry-run against all three refs → 8.0.0.3 /
8.1.0 / 8.1.1-dev
- [ ] CI green on this PR
@openemr-release-bot openemr-release-bot Bot force-pushed the release-rotation/auto branch from 25f477b to 718587f Compare June 10, 2026 13:36
@kojiromike kojiromike marked this pull request as ready for review June 10, 2026 18:28

@kojiromike kojiromike Jun 10, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shouldn't change 8.0.0 to release 8.1.0, and 8.1.0 already exists.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants