Skip to content

fix(ci): restore native mise oci image uploads - #442

Merged
Charles Chiu (charliie-dev) merged 1 commit into
devfrom
feature/mise-oci-native-push
Oct 7, 2026
Merged

Charles Chiu (charliie-dev) merged 1 commit into
devfrom
feature/mise-oci-native-push

Conversation

@charliie-dev

Copy link
Copy Markdown
Contributor

Summary

  • Use mise oci push --image-dir to upload the built OCI layout.
  • Update the synchronized mise pins to 2026.10.4.
  • Use Docker Buildx to check the remote manifest digest against the local layout before writing outputs.
  • Keep job-local registry credentials, cleanup, atom selection, and the separate provenance attestation job.
  • Add push-step regression tests and update the workflow header and README.

The release includes jdx/mise#14017 (merge commit bc5cf7797df3492d4b2ff29221fa86be088cc0fc). GitHub compare confirms that this commit is an ancestor of v2026.10.4. The fix streams large blobs in one PATCH without Content-Range.

This completes the native-upload path for the problem tracked in #431, whose workaround shipped in #432.

Closes #431

Validation

  • mise run all passes with both the installed mise and the new 2026.10.4 binary. Trivy reports no supported config targets; OpenGrep retains its existing partial-scan warnings.
  • Focused actionlint passes.
  • python3 .github/tests/test_mise_tools_image.py passes: native command arguments, isolated credential paths, digest agreement, digest mismatch, push failure, inspect failure, and invalid local digest.
  • Ruff lint and format checks pass for the new test.
  • A credential-free local registry fixture exercises the actual workflow push step with the official macOS ARM64 mise binary and real Docker Buildx. It starts with no stored blobs and receives a 68,167,680-byte tar layer.
  • The 2026.10.3 control sends two ranged PATCH requests and reproduces HTTP 416. The 2026.10.4 binary sends one range-free PATCH, completes the push, and passes the Buildx remote digest check.

Verification limit

The manual GHCR image workflow and provenance attestation have not been dispatched for this branch. A live publishing run needs separate approval. The local fixture verifies the upload protocol and digest gate; it does not verify GHCR authentication or a GitHub-hosted Linux runner.

Use the released single-PATCH upload fix for large GHCR layers. Keep the shared mise pins
in sync so the image builder and its consumers use the same release.

Use Docker Buildx to check the remote manifest digest before publishing the job output.
Keep registry credentials in job-local state and attest the verified digest in a separate job.

Add push-step tests for successful uploads and failures before digest output.

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.

🔵 Needs a closer look

實際 GHCR 認證、GitHub-hosted Linux runner 與 provenance 發布流程尚未完成端到端驗證。

0 open findings

What changed in this PR

此 PR 恢復使用 mise 原生 OCI 上傳,並以 Buildx 驗證遠端 digest。

Changes:

  • mise pin 同步升級至 2026.10.4。
  • 改用 mise oci push --image-dir,保留 digest 驗證。
  • 新增推送流程回歸測試並更新文件。
File Description
README.md 更新映像推送與驗證說明
.github/​workflows/​self-release.yml 同步 mise pin
.github/​workflows/​mise-tools-image.yml 恢復原生推送並改用 Buildx 驗證
.github/​workflows/​mise-task.yml 同步 mise pin
.github/​workflows/​auto-release.yml 同步預設 mise pin
.github/​tests/​test_mise_tools_image.py 覆蓋推送、檢查及失敗路徑

🧠 Review effort: Balanced

@charliie-dev
Charles Chiu (charliie-dev) merged commit d6822c6 into dev Oct 7, 2026
16 checks passed
@charliie-dev
Charles Chiu (charliie-dev) deleted the feature/mise-oci-native-push branch October 7, 2026 17:31
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.

fix(ci): mise-tools-image push fails with 416 on the large go layer

2 participants