Conversation
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
…built one in one workflow Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
ozgb
left a comment
There was a problem hiding this comment.
Great addition - a couple of suggestions
|
Ok if it saves unnecessary extra CI time. On the other hand, not being able to pin an image to a specific commit can be troublesome for debugging and auditability. As @ozgb suggested this could be addressed with Docker annotations or embedding the commit hash as an env var in the image. The tree hash granularity could also be improved by hashing only the directories that affect the binary (node, runtime, pallets, etc.) rather than the entire repo tree, to avoid unnecessary rebuilds from docs-only or CI-only changes. |
|
I don't want to put a particular commit into the image as that would be inappropriate, but images are now tagged with the git commit(s) that the image was as well as the one content hash. |
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>








Overview
Replace 8-char git commit hashes with 12-char tree content hashes (
git rev-parse HEAD^{tree}) in Docker image tags. Identical source trees now produce the same tag regardless of commit metadata, allowing CI to skip redundant builds entirely.Key changes:
{VERSION}-{12-char-tree-hash}-{ARCH}format instead of{VERSION}-{8-char-commit-hash}-{ARCH}force_rebuildworkflow_dispatch input provides an escape hatchci:arm64labelCONTENT_HASHLET instead ofEARTHLY_GIT_SHORT_HASH+prep-no-copyinstead of rebuilding from+node-ci-image-single-platformGenerateGenesisoutput downgraded fromprintln!tolog::debug!🗹 TODO before merging
📌 Submission Checklist
🧪 Testing Evidence
CI runs on this PR demonstrate the content hash tagging and skip logic in action.
🔱 Fork Strategy
Links
docs/decisions/0004-tree-content-hash-image-tags.md