Skip to content

Create deployments in component repos to visualize integration#2375

Open
francoisferrand wants to merge 7 commits intodevelopment/2.14from
improvement/ZENKO-5132
Open

Create deployments in component repos to visualize integration#2375
francoisferrand wants to merge 7 commits intodevelopment/2.14from
improvement/ZENKO-5132

Conversation

@francoisferrand
Copy link
Copy Markdown
Contributor

@francoisferrand francoisferrand commented Apr 14, 2026

Create deployment in other repos

In order to show integration status, create deployments (in each
component!) when they are integrated.

  • PR builds create transient deployments
  • A new post-merge step creates a deployment when a dependency changes
  • A deployment is also created for each release

This will allow visualizing directly in components where/when they are integrated in Zenko.

Exemple on a ZKOP PR:
Screenshot 2026-04-21 at 16 23 27

Exemple on repo:
image

Issue: ZENKO-5132

@francoisferrand francoisferrand requested review from a team, DarkIsDude and maeldonn April 14, 2026 15:30
@francoisferrand francoisferrand force-pushed the improvement/ZENKO-5250 branch from 14840db to cc68501 Compare April 15, 2026 18:48
Base automatically changed from improvement/ZENKO-5250 to development/2.14 April 15, 2026 21:30
@bert-e
Copy link
Copy Markdown
Contributor

bert-e commented Apr 15, 2026

Hello francoisferrand,

My role is to assist you with the merge of this
pull request. Please type @bert-e help to get information
on this process, or consult the user documentation.

Available options
name description privileged authored
/after_pull_request Wait for the given pull request id to be merged before continuing with the current one.
/bypass_author_approval Bypass the pull request author's approval
/bypass_build_status Bypass the build and test status
/bypass_commit_size Bypass the check on the size of the changeset TBA
/bypass_incompatible_branch Bypass the check on the source branch prefix
/bypass_jira_check Bypass the Jira issue check
/bypass_peer_approval Bypass the pull request peers' approval
/bypass_leader_approval Bypass the pull request leaders' approval
/approve Instruct Bert-E that the author has approved the pull request. ✍️
/create_pull_requests Allow the creation of integration pull requests.
/create_integration_branches Allow the creation of integration branches.
/no_octopus Prevent Wall-E from doing any octopus merge and use multiple consecutive merge instead
/unanimity Change review acceptance criteria from one reviewer at least to all reviewers
/wait Instruct Bert-E not to run until further notice.
Available commands
name description privileged
/help Print Bert-E's manual in the pull request.
/status Print Bert-E's current status in the pull request TBA
/clear Remove all comments from Bert-E from the history TBA
/retry Re-start a fresh build TBA
/build Re-start a fresh build TBA
/force_reset Delete integration branches & pull requests, and restart merge process from the beginning.
/reset Try to remove integration branches unless there are commits on them which do not appear on the source branch.

Status report is not available.

Copy link
Copy Markdown
Contributor

@DarkIsDude DarkIsDude left a comment

Choose a reason for hiding this comment

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

Do you have some screenshot about the result to add in the PR ?

Comment thread .github/scripts/end2end/deploy-metadata.sh
Comment thread tests/zenko_tests/node_tests/.mocharc.js
Comment thread .gitignore
Comment thread .github/actions/create-component-deployments/create-deployments.js
Comment thread .github/actions/create-component-deployments/parse-deps.js
Comment thread .github/workflows/end2end.yaml
Comment thread .github/workflows/end2end.yaml Outdated
Copy link
Copy Markdown
Contributor

@DarkIsDude DarkIsDude left a comment

Choose a reason for hiding this comment

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

Are you sure we need all this complexity ? Can we just create a simple deployment when the CI is green without transient / not success state ?

@francoisferrand francoisferrand force-pushed the improvement/ZENKO-5132 branch from 7272c7e to 40306ae Compare April 16, 2026 12:19
@francoisferrand
Copy link
Copy Markdown
Contributor Author

francoisferrand commented Apr 16, 2026

Are you sure we need all this complexity ? Can we just create a simple deployment when the CI is green without transient / not success state ?

Transient is for reporting status on PRs : i.e. when we open zenko PR (with bumps), it would create deployments in other repos immediately (before PR is merged!) and this is "show" in the component (head or even PR) that integration succeeded OR failed.

Once merged on development branches or released, indeed should only post successful deployments.

So yes, we need something. And AFAIK it the complexity should be pretty limited, should not have much impact on dev... Worse case it is a useless experiment, and we will remove it.

Comment thread .github/actions/create-component-deployments/parse-deps.js Outdated
@francoisferrand francoisferrand marked this pull request as draft April 16, 2026 15:00
@francoisferrand francoisferrand force-pushed the improvement/ZENKO-5132 branch 2 times, most recently from e8876d6 to ba80646 Compare April 16, 2026 16:24
@francoisferrand francoisferrand marked this pull request as ready for review April 16, 2026 19:27
@scality scality deleted a comment from bert-e Apr 16, 2026
@bert-e
Copy link
Copy Markdown
Contributor

bert-e commented Apr 16, 2026

Waiting for approval

The following approvals are needed before I can proceed with the merge:

  • the author

  • 2 peers

The following reviewers are expecting changes from the author, or must review again:

Comment thread .github/actions/create-component-deployments/action.yaml
Comment thread .github/actions/create-component-deployments/action.yaml
Comment thread .github/actions/create-component-deployments/action.yaml
Comment thread .github/actions/create-component-deployments/create-deployments.js
Comment thread .github/workflows/end2end.yaml Outdated
Comment thread .github/workflows/postmerge.yaml
Comment thread .github/actions/create-component-deployments/create-deployments.js
@francoisferrand
Copy link
Copy Markdown
Contributor Author

francoisferrand commented Apr 17, 2026

⚠️ Claude Code Review: attention required

  • Shell injection in action.yaml:62-68${{ inputs.target-branch }} and ${{ inputs.deps-file }} expanded before bash runs; use env vars
  • Shell injection in action.yaml:71 — Same issue in the JSON conversion step
  • Script injection in action.yaml:77 — step outputs interpolated into JS; use process.env via env: block
  • Script injection in action.yaml:117-121 — multiple inputs interpolated into JS template literals; use process.env
  • Infinite recursion in create-deployments.js:152 — 409/422 retry calls itself without depth guard, can recurse infinitely
  • Shell injection in end2end.yaml:699${{ github.ref_name }} expanded before bash; use env var
  • Shell injection in end2end.yaml:739${{ toJSON(needs) }} inside single-quoted echo; branch-derived outputs with single quotes break the shell
  • Missing permissions in postmerge.yaml — no permissions: block; best practice is least-privilege
  • promote blocked by deployments in release.yaml:148create-deployments failure blocks release promotion; deployments are non-critical

Comment thread .github/workflows/release.yaml
@scality scality deleted a comment from bert-e Apr 17, 2026
Comment thread .github/actions/create-component-deployments/action.yaml
Comment thread .github/workflows/end2end.yaml Outdated
@DarkIsDude
Copy link
Copy Markdown
Contributor

Are you sure we need all this complexity ? Can we just create a simple deployment when the CI is green without transient / not success state ?

Transient is for reporting status on PRs : i.e. when we open zenko PR (with bumps), it would create deployments in other repos immediately (before PR is merged!) and this is "show" in the component (head or even PR) that integration succeeded OR failed.

Once merged on development branches or released, indeed should only post successful deployments.

So yes, we need something. And AFAIK it the complexity should be pretty limited, should not have much impact on dev... Worse case it is a useless experiment, and we will remove it.

@maeldonn as you are the second reviewer, pay attention to this comment. You'll tell us your opinion and if you prefer to keep transient one, I'll follow you 🙏

@francoisferrand francoisferrand force-pushed the improvement/ZENKO-5132 branch 3 times, most recently from 3c776b2 to 5214a0f Compare April 21, 2026 22:15
@francoisferrand
Copy link
Copy Markdown
Contributor Author

Transient is for reporting status on PRs : i.e. when we open zenko PR (with bumps), it would create deployments in other repos immediately (before PR is merged!) and this is "show" in the component (head or even PR) that integration succeeded OR failed.
Once merged on development branches or released, indeed should only post successful deployments.
So yes, we need something. And AFAIK it the complexity should be pretty limited, should not have much impact on dev... Worse case it is a useless experiment, and we will remove it.

@maeldonn as you are the second reviewer, pay attention to this comment. You'll tell us your opinion and if you prefer to keep transient one, I'll follow you 🙏

exemple on this one : https://github.com/scality/zenko-operator/pull/602

trying to randomly bump a real PR for testing... and somehow the build can't seem to pass :)
anyway we can see how it helps to view (preview) integration status, and navigate back to the zenko build if needed (next step would be to have "some" way of triggering such integration build easily)

In order to show integration status, create deployments (in each
component!) when they are integrated.

PR builds create transient deployments, while a new post-merge step

Issue: ZENKO-5132
To reduce noise, publish (transient) deployments only for components
which are updated by the PR.

In post-merge, we always publish deployments though: as it really
indicates the componet is used (and we keep updating the same deployment
so not much noise).

Issue: ZENKO-5132
It is not available in github runners, so use yq to convert to JSON
instead.

Issue: ZENKO-5132
Name of deployment is now <branch name>@<target branch number>, to know
precisely what the transient build is, but also where it would land.

Issue: ZENKO-5132
@francoisferrand francoisferrand force-pushed the improvement/ZENKO-5132 branch from 5214a0f to c4cbbe0 Compare April 22, 2026 06:06
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.

3 participants