Skip to content

cloud: add Docker release deployment workflow - #167

Merged
gaelic-ghost merged 5 commits into
mainfrom
cloud/docker-release-deployment-template
Jul 29, 2026
Merged

cloud: add Docker release deployment workflow#167
gaelic-ghost merged 5 commits into
mainfrom
cloud/docker-release-deployment-template

Conversation

@gaelic-ghost

@gaelic-ghost gaelic-ghost commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Summary

  • add reusable Dockerized-service release and exact-digest deployment templates
  • publish stable tags as normal releases and recognized prerelease tags as GitHub prereleases
  • prepare Socket v9.27.0

Validation

  • uv run scripts/validate_socket_metadata.py
  • uv run scripts/validate_hermes_compatibility.py
  • uv run pytest tests/test_validate_socket_metadata.py tests/test_validate_hermes_compatibility.py
  • substituted template YAML and shell syntax checks

Summary by CodeRabbit

  • New Features

    • Added guidance and templates for releasing Dockerized services with immutable image digests, release manifests, approval gates, health checks, and exact-digest rollback.
    • Added release and deployment workflow templates, including provenance/SBOM metadata and provider integration placeholders.
    • Added a new cloud deployment workflow skill and expanded the available skill catalog.
  • Documentation

    • Clarified cloud deployment capabilities and Hermes portability limitations.
  • Chores

    • Updated plugin and package metadata to version 9.27.0.

@gaelic-ghost gaelic-ghost added the enhancement New feature or request label Jul 29, 2026
@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@gaelic-ghost, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 47 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 7014c68a-90cc-4c07-afc7-b72567184592

📥 Commits

Reviewing files that changed from the base of the PR and between 93eafcc and 0662961.

📒 Files selected for processing (10)
  • plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/SKILL.md
  • plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/deploy-production-image.sh.tmpl
  • plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/deploy-production.yml.tmpl
  • plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/release-container.yml.tmpl
  • plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/verify-production-health.sh.tmpl
  • skills/dockerized-service-release-deployment-workflow/SKILL.md
  • skills/dockerized-service-release-deployment-workflow/assets/deploy-production-image.sh.tmpl
  • skills/dockerized-service-release-deployment-workflow/assets/deploy-production.yml.tmpl
  • skills/dockerized-service-release-deployment-workflow/assets/release-container.yml.tmpl
  • skills/dockerized-service-release-deployment-workflow/assets/verify-production-health.sh.tmpl
📝 Walkthrough

Walkthrough

Adds a provider-neutral Dockerized-service release/deployment skill, GitHub Actions workflow templates, immutable digest manifests, deployment and health-check seams, catalog/export wiring, compatibility documentation, and repository-wide version updates.

Changes

Cloud deployment workflow

Layer / File(s) Summary
Release contract and skill guidance
plugins/cloud-deployment-skills/..., skills/dockerized-service-release-deployment-workflow/...
Defines release, deployment, security, validation, rollback, and provider-boundary requirements.
Container release pipeline
*/assets/release-container.yml.tmpl, */assets/release-manifest.json.tmpl
Adds tag validation, main anchoring, OCI image publishing, digest smoke tests, manifest generation, and GitHub Release publication.
Published-release deployment pipeline
*/assets/deploy-production.yml.tmpl, */assets/*-production*.sh.tmpl
Adds release-manifest validation, prerelease/production routing, OIDC authentication, exact-digest deployment, and health verification seams.
Catalog and portability integration
README.md, ROADMAP.md, docs/maintainers/hermes-compatibility.md, scripts/export_hermes_skills.py, skills.sh.json, plugins/server-side-swift/skills/docker-workflow/SKILL.md
Registers the new skill and documents its portability and routing boundaries.
Plugin and package version alignment
plugins/*/.codex-plugin/plugin.json, plugins/*/pyproject.toml, pyproject.toml
Updates affected versions from 9.26.1 to 9.27.0.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant GitHubTag
  participant ReleaseWorkflow
  participant OCIRegistry
  participant GitHubRelease
  participant DeploymentWorkflow
  participant ProviderAdapter
  GitHubTag->>ReleaseWorkflow: trigger tagged release build
  ReleaseWorkflow->>OCIRegistry: build and push container
  OCIRegistry-->>ReleaseWorkflow: return immutable digest
  ReleaseWorkflow->>GitHubRelease: publish manifest and release
  GitHubRelease->>DeploymentWorkflow: emit published release event
  DeploymentWorkflow->>ProviderAdapter: deploy validated exact digest
Loading

Possibly related PRs

Suggested labels: documentation

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: adding a Docker release deployment workflow under cloud.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cloud/docker-release-deployment-template

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 93eafcc7d7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 6

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/deploy-production.yml.tmpl`:
- Around line 19-66: Bind deployment adapters to the immutable commit recorded
in the release manifest: in
plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/deploy-production.yml.tmpl
lines 19-66 and
skills/dockerized-service-release-deployment-workflow/assets/deploy-production.yml.tmpl
lines 19-66, extract the manifest commit in the Validate the release manifest
and extract the exact image digest step, compare it with git rev-parse HEAD, and
fail on mismatch before OIDC authentication or adapter execution. Preserve
main-anchored tags and exact-digest deployment.
- Around line 62-64: Update the image validators to require a fully qualified
name/repository component before the `@sha256` digest, rejecting short references
such as service@sha256:.... Apply the same complete-reference pattern
consistently in
plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/deploy-production.yml.tmpl
lines 62-64, deploy-production-image.sh.tmpl lines 7-10, and
verify-production-health.sh.tmpl lines 7-10, then mirror it in
skills/dockerized-service-release-deployment-workflow/assets/deploy-production.yml.tmpl
lines 62-64, deploy-production-image.sh.tmpl lines 7-10, and
verify-production-health.sh.tmpl lines 7-10.

In
`@plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/release-container.yml.tmpl`:
- Around line 8-10: Remove the contents: write permission from the permissions
block in
plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/release-container.yml.tmpl:8-10
and
skills/dockerized-service-release-deployment-workflow/assets/release-container.yml.tmpl:8-10,
retaining packages: write and the existing checkout read access so release
publication continues using RELEASE_PUBLISH_TOKEN.
- Around line 50-55: Update the “Log in to the OCI registry” step in both
release-container.yml.tmpl copies to use registry-appropriate credential
placeholders instead of hard-coded github.actor and GITHUB_TOKEN, or explicitly
constrain OCI_REGISTRY to GHCR/ghcr.io. Apply the same authentication contract
consistently in
plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/release-container.yml.tmpl
(lines 50-55) and
skills/dockerized-service-release-deployment-workflow/assets/release-container.yml.tmpl
(lines 50-55).

In
`@plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/SKILL.md`:
- Around line 1-10: Document the Hermes compatibility decision in both
plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/SKILL.md
lines 1-10 and skills/dockerized-service-release-deployment-workflow/SKILL.md
lines 1-10 by either declaring Hermes support and adding the required
export/index artifacts, or explicitly marking the skill Codex-only; keep both
SKILL.md copies consistent.
- Line 62: Document RELEASE_PUBLISH_TOKEN as fine-grained PAT-only in both
SKILL.md copies at the listed line 62 sites, and update the release workflow
guidance at both line 90-92 sites to use a minted GitHub App installation token
when applicable. In both release-container.yml.tmpl copies at lines 108-120,
create the installation token during the job and pass the corresponding
create-token step output to gh instead of using RELEASE_PUBLISH_TOKEN directly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8c68ecfa-eac1-42da-83c9-3046f9736c74

📥 Commits

Reviewing files that changed from the base of the PR and between e461426 and 93eafcc.

⛔ Files ignored due to path filters (8)
  • plugins/agent-portability-skills/uv.lock is excluded by !**/*.lock
  • plugins/apple-dev-skills/uv.lock is excluded by !**/*.lock
  • plugins/cardhop-app/mcp/uv.lock is excluded by !**/*.lock
  • plugins/productivity-skills/uv.lock is excluded by !**/*.lock
  • plugins/python-skills/uv.lock is excluded by !**/*.lock
  • plugins/things-app/mcp/uv.lock is excluded by !**/*.lock
  • plugins/things-app/uv.lock is excluded by !**/*.lock
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (52)
  • README.md
  • ROADMAP.md
  • docs/maintainers/hermes-compatibility.md
  • plugins/agent-portability-skills/.codex-plugin/plugin.json
  • plugins/agent-portability-skills/pyproject.toml
  • plugins/agentdeck/.codex-plugin/plugin.json
  • plugins/android-dev-skills/.codex-plugin/plugin.json
  • plugins/apple-creator-studio-skills/.codex-plugin/plugin.json
  • plugins/apple-dev-skills/.codex-plugin/plugin.json
  • plugins/apple-dev-skills/pyproject.toml
  • plugins/cardhop-app/.codex-plugin/plugin.json
  • plugins/cardhop-app/mcp/pyproject.toml
  • plugins/cloud-deployment-skills/.codex-plugin/plugin.json
  • plugins/cloud-deployment-skills/AGENTS.md
  • plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/SKILL.md
  • plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/deploy-production-image.sh.tmpl
  • plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/deploy-production.yml.tmpl
  • plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/release-container.yml.tmpl
  • plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/release-manifest.json.tmpl
  • plugins/cloud-deployment-skills/skills/dockerized-service-release-deployment-workflow/assets/verify-production-health.sh.tmpl
  • plugins/cloud-inference-skills/.codex-plugin/plugin.json
  • plugins/cybersecurity-skills/.codex-plugin/plugin.json
  • plugins/dotnet-skills/.codex-plugin/plugin.json
  • plugins/game-dev-skills/.codex-plugin/plugin.json
  • plugins/messaging-collaboration-skills/.codex-plugin/plugin.json
  • plugins/model-lab-skills/.codex-plugin/plugin.json
  • plugins/network-protocol-skills/.codex-plugin/plugin.json
  • plugins/productivity-skills/.codex-plugin/plugin.json
  • plugins/productivity-skills/pyproject.toml
  • plugins/python-skills/.codex-plugin/plugin.json
  • plugins/python-skills/pyproject.toml
  • plugins/reverse-engineering-skills/.codex-plugin/plugin.json
  • plugins/rust-skills/.codex-plugin/plugin.json
  • plugins/server-side-jvm/.codex-plugin/plugin.json
  • plugins/server-side-swift/.codex-plugin/plugin.json
  • plugins/server-side-swift/skills/docker-workflow/SKILL.md
  • plugins/spotify/.codex-plugin/plugin.json
  • plugins/swift-lang/.codex-plugin/plugin.json
  • plugins/swiftasb-skills/.codex-plugin/plugin.json
  • plugins/things-app/.codex-plugin/plugin.json
  • plugins/things-app/mcp/pyproject.toml
  • plugins/things-app/pyproject.toml
  • plugins/web-dev-skills/.codex-plugin/plugin.json
  • pyproject.toml
  • scripts/export_hermes_skills.py
  • skills.sh.json
  • skills/dockerized-service-release-deployment-workflow/SKILL.md
  • skills/dockerized-service-release-deployment-workflow/assets/deploy-production-image.sh.tmpl
  • skills/dockerized-service-release-deployment-workflow/assets/deploy-production.yml.tmpl
  • skills/dockerized-service-release-deployment-workflow/assets/release-container.yml.tmpl
  • skills/dockerized-service-release-deployment-workflow/assets/release-manifest.json.tmpl
  • skills/dockerized-service-release-deployment-workflow/assets/verify-production-health.sh.tmpl

@gaelic-ghost
gaelic-ghost merged commit 3207997 into main Jul 29, 2026
2 checks passed
@gaelic-ghost
gaelic-ghost deleted the cloud/docker-release-deployment-template branch July 29, 2026 15:30

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 066296173d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

echo "Release manifest commit '$commit' is not reachable from origin/main; refusing to grant deployment credentials to an unreviewed tag." >&2
exit 1
fi
if [[ ! "$image" =~ ^([^/@[:space:]]+\.[^/@[:space:]]+|localhost|[^/@[:space:]]+:[0-9]+)/[^@[:space:]]+@sha256:[0-9a-f]{64}$ ]]; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Bind the deployed image to the trusted build

When someone with release-writing access but no protected-main or registry access publishes a stable release for an existing main tag, they can attach a manifest with the matching tag, kind, and commit but any syntactically valid attacker-controlled image; this check accepts it and the job proceeds to production OIDC after approval. Fresh evidence in the current version is that the new tag, commit, and ancestry validations are present, but none binds the image to the configured registry/repository or a trusted build attestation. Verify the expected image repository and trusted build provenance before granting deployment credentials.

AGENTS.md reference: plugins/cloud-deployment-skills/AGENTS.md:L11-L11

Useful? React with 👍 / 👎.

shell: bash
run: |
set -euo pipefail
git fetch --no-tags origin main

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Parameterize the protected integration branch

In adopting repositories whose protected integration branch is not named main, this fetch fails before validation or publication even though the skill's required-decisions section explicitly allows selecting that branch and only describes main as the normal choice. Introduce a branch placeholder and use it consistently in both the release and deployment ancestry checks so the templates honor the documented contract.

AGENTS.md reference: AGENTS.md:L60-L61

Useful? React with 👍 / 👎.

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

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant