Skip to content

ci: newflow prepare build release merge - #164

Open
vibhoraggarwal wants to merge 6 commits into
eclipse-score:mainfrom
etas-contrib:feature/AB-104062-newflow-prepare-build-release-merge
Open

vibhoraggarwal wants to merge 6 commits into
eclipse-score:mainfrom
etas-contrib:feature/AB-104062-newflow-prepare-build-release-merge

Conversation

@vibhoraggarwal

@vibhoraggarwal vibhoraggarwal commented Oct 1, 2026 •

Copy link
Copy Markdown
  • Provides to rebuild and image with a tag
  • New flow: prepare -> build -> release -> promote -> merge

resolves #162

@vibhoraggarwal vibhoraggarwal changed the title AB#104062: newflow prepare build release merge feat: newflow prepare build release merge Oct 1, 2026
@AlexanderLanin
AlexanderLanin requested a balanced review from Copilot October 1, 2026 12:43
@AlexanderLanin AlexanderLanin changed the title feat: newflow prepare build release merge ci: newflow prepare build release merge Oct 1, 2026
@vibhoraggarwal
vibhoraggarwal force-pushed the feature/AB-104062-newflow-prepare-build-release-merge branch from cdc8fd2 to e1a3856 Compare October 1, 2026 12:46

Copilot AI 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.

Copilot review overview

🟡 Changes recommended

Release preparation lacks required permissions, while rebuild inputs permit command injection and can incorrectly roll back latest.

Review effort: Balanced
Findings: 2 High severity · 1 Medium severity

Open (3)
What changed in this PR

Introduces a staged container release workflow and manual tag rebuilding.

Changes:

  • Adds prepare, build, release, promote, and merge stages.
  • Builds SHA-tagged images before publishing releases.
  • Adds manual rebuilding of existing release tags.
File Description
.github/​workflows/​release-and-publish.yaml Implements staged releases and tag rebuilds.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/release-and-publish.yaml Outdated
Comment thread .github/workflows/release-and-publish.yaml Outdated
Comment thread .github/workflows/release-and-publish.yaml

Copilot AI 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.

Copilot review overview

🔵 Needs a closer look

The workflow mutates published container tags and GitHub releases, requiring final human validation.

Review effort: Balanced
Findings: None

Resolved since last review (3)

Comment on lines -76 to -77
with:
ref: ${{ needs.release.outputs.tag_name }}

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.

Why did you remove this? Now this action checks it the latest revision from main instead of a fixed one. This workflow now might validate a revision and release a different one, if during building and testing the devcontainer a pull request got merged.

fi
# Create the GitHub release only after all validation builds succeed.
release:
needs: [build]

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.

I guess here is a misconception. Each and every pull request merged to main must build and pass the same tests as executed in this workflow. IMHO there are two reasons this workflow might fail:

Do we have a better solution to handle the network issues? At builds using bazel we now facilitate the Github Actions Cache to minimize issues caused by Githubs unstable internet connection. At pull requests of the devcontainer we also see a lot of time failed builds due to network issues. I prefer a solution, which makes the workflows for pull requests and releases more stable.

echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
./scripts/publish.sh --${{ matrix.os }} "$REBUILD_TAG"
# Merge the architecture images for an existing rebuilt release.
rebuild-merge:

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.

I am confused about the rebuild and rebuild-merge jobs. To me it looks like this PR tries to only create a new release, after build and test of the devcontainer have been successful. Thus if building the devcontainer fails, there is no tag which could be rebuild, because it was never created.

If needed, these steps could be easily moved into a separate workflow, because they do not depend on anything else and nothing depends on them. However then there is still the issue that they look duplicated to the build and merge steps.

Comment on lines +62 to +63
needs: [prepare]
if: needs.prepare.outputs.release_needed == 'true'

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.

Could you not avoid lots of the code, if you skip the release job, when inputs.rebuild_tag is not empty, but use then inputs.rebuild_tag as input for this job?

Thus the build job would get the tag either from release or from inputs.rebuild_tag.

@lurtz

lurtz commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

Another way to deal with this could be a command like gh run rerun 35547146350 --repo eclipse-score/devcontainer --failed

@vibhoraggarwal

Copy link
Copy Markdown
Author

@lurtz thanks for the comments. I will be on leave for the next two weeks. I will come back and solve the comments.

@lurtz

lurtz commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

FYI I deleted and recreated the 1.11.1 release. I thought it is an easy fix, but this caused a lot of problems. We should talk when you are back

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.

bug: github releases without devcontainer releases

4 participants