Skip to content

feat: add github action to cut release and preserve distribution cache#50112

Open
asymingt wants to merge 9 commits intoros:masterfrom
asymingt:asymingt/preserve-distribution-cache-alongside-release
Open

feat: add github action to cut release and preserve distribution cache#50112
asymingt wants to merge 9 commits intoros:masterfrom
asymingt:asymingt/preserve-distribution-cache-alongside-release

Conversation

@asymingt
Copy link
Copy Markdown
Contributor

@asymingt asymingt commented Mar 5, 2026

Duplicates: #42984

This adds a new release-cutting GitHub action, which automatically tags a release for us. Specifically, it regenerates the distribution cache tarball for the release, and then pushes an orphaned commit that updates the keys in index-v4.yamland index.yaml to point to the release artifact in GitHub. Finally it tags this commit, an bundles the updated yamls and distribution cache alongside it as artifacts. Example:

Screenshot 2026-04-08 at 10 52 08 AM

The action is triggered manually through the github Action tab, by clicking on Cut a new ROS release and then using the drop-down manual menu item to select the distribution and date stamp.

Screenshot 2026-04-08 at 9 57 49 AM

One Lyrical merges I will submit a follow-on PR to automatically manage sync holds for us. Including this as part of this PR is too complicated and hard to review.

@asymingt asymingt requested review from ahcorde and cottsay March 5, 2026 00:31
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Thanks for sending a pull request to ROS distro!

This is an automated tool that helps check your pull request for correctness.
This tool checks a number of attributes associated with your ROS package and generates a report that helps our reviewers merge your pull request in a timely fashion. Here are a few things to consider when sending adding or updating a package to ROS Distro.
ROS Distro includes a very helpful CONTRIBUTING.md file that we recommend reading if it is your first time submitting a package.
Please also read the ROS Distro review guidelines which summarizes this release process.

ROS Distro Considerations

Package Considerations

Having your package included in a ROS Distro is a badge of quality, and we recommend that package developers strive to create packages of the highest quality. We recommend package developers review the following resources before submitting their package.

Need Help?

Please post your questions to Robotics Stack Exchange or refer to the Infrastructure General channel on our Zulip server.


For changes related to yamllint:

  • ❌ One or more linter violations were added to YAML files

Comment thread .github/workflows/preserve_cache.yaml Outdated
Comment thread .github/workflows/preserve_cache.yaml Outdated
Comment thread .github/workflows/preserve_cache.yaml Outdated
Comment thread .github/workflows/preserve_cache.yaml Outdated
Comment thread .github/workflows/preserve_cache.yaml Outdated
Comment thread .github/workflows/preserve_cache.yaml Outdated
Comment thread .github/workflows/preserve_cache.yaml Outdated
Comment thread .github/workflows/preserve_cache.yaml Outdated
@asymingt asymingt changed the title Add github action to preserve the distribution cache feat: add github action to preserve the distribution cache Mar 5, 2026
github-actions[bot]

This comment was marked as outdated.

@asymingt asymingt force-pushed the asymingt/preserve-distribution-cache-alongside-release branch from fff9206 to 1446a8e Compare March 6, 2026 00:15
github-actions[bot]

This comment was marked as outdated.

github-actions[bot]

This comment was marked as outdated.

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

For changes related to yamllint:

  • ✅ All new lines of YAML pass linter checks

@asymingt asymingt changed the title feat: add github action to preserve the distribution cache feat: add github action to cut releases and mark sync labels Mar 6, 2026
@asymingt asymingt changed the title feat: add github action to cut releases and mark sync labels feat: add github actions to cut releases and mark sync labels Mar 6, 2026
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

For changes related to yamllint:

  • ✅ All new lines of YAML pass linter checks

Comment thread .github/workflows/apply_sync_hold.yaml Outdated
@emersonknapp emersonknapp added the persistent Issue/PR won't be marked as stale if inactive for a while. label Mar 6, 2026
@asymingt asymingt self-assigned this Mar 10, 2026
@ros-discourse
Copy link
Copy Markdown

This pull request has been mentioned on Open Robotics Discourse. There might be relevant details there:

https://discourse.openrobotics.org/t/ros-pmc-minutes-for-march-17-2026/53310/1

@tfoote
Copy link
Copy Markdown
Member

tfoote commented Mar 17, 2026

As we discussed in the ROS PMC meeting the use of a visible variable in the distro index itself seems to make the most sense to make sure things are visible.

To that end it was suggested sync_status to mirror distribution_status

distribution_status: active

However I would suggest that we think of it more holsitically as it's more about what's the syncs status is. Potentially:

merge_policy: [open, regression_fix_only, closed]

  • Open means merges accepted, please submit
  • Regression fix only is our sync freeze but not using our jargon.
  • Where closed is when you're at EOL or otherwise in a code freeze.

In the future we could add some new merge policies. We can define these in the contributor guide and it will be clear what it means to users, versus using the name of the process that we think about.

@asymingt asymingt marked this pull request as draft March 18, 2026 16:38
asymingt added 7 commits April 8, 2026 16:44
…sset.

Signed-off-by: Andrew Symington <simmers@intrinsic.ai>
Signed-off-by: Andrew Symington <simmers@intrinsic.ai>
Signed-off-by: Andrew Symington <simmers@intrinsic.ai>
Signed-off-by: Andrew Symington <simmers@intrinsic.ai>
Signed-off-by: Andrew Symington <simmers@intrinsic.ai>
Signed-off-by: Andrew Symington <simmers@intrinsic.ai>
Signed-off-by: Andrew Symington <simmers@intrinsic.ai>
@asymingt asymingt force-pushed the asymingt/preserve-distribution-cache-alongside-release branch from dbedb7d to af27376 Compare April 8, 2026 16:44
Signed-off-by: Andrew Symington <simmers@intrinsic.ai>
@asymingt
Copy link
Copy Markdown
Contributor Author

asymingt commented Apr 8, 2026

As we discussed in the ROS PMC meeting the use of a visible variable in the distro index itself seems to make the most sense to make sure things are visible.

To that end it was suggested sync_status to mirror distribution_status

distribution_status: active

However I would suggest that we think of it more holsitically as it's more about what's the syncs status is. Potentially:

merge_policy: [open, regression_fix_only, closed]

  • Open means merges accepted, please submit
  • Regression fix only is our sync freeze but not using our jargon.
  • Where closed is when you're at EOL or otherwise in a code freeze.

In the future we could add some new merge policies. We can define these in the contributor guide and it will be clear what it means to users, versus using the name of the process that we think about.

Will do this in a follow on, and keep the focus of this PR on release-cutting with distribution cache preservation.

@asymingt asymingt marked this pull request as ready for review April 8, 2026 17:05
@asymingt asymingt requested a review from mjcarroll April 8, 2026 17:05
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

For changes related to yamllint:

  • ✅ All new lines of YAML pass linter checks

@asymingt asymingt changed the title feat: add github actions to cut releases and mark sync labels feat: add github action to cut release with distribution cache preservation Apr 8, 2026
@asymingt asymingt changed the title feat: add github action to cut release with distribution cache preservation feat: add github action to cut release and preserve distribution cache Apr 8, 2026
Signed-off-by: Andrew Symington <simmers@intrinsic.ai>
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

For changes related to yamllint:

  • ✅ All new lines of YAML pass linter checks

- name: Rebuild cache
run: |
cd ${{ env.RELEASE_DISTRIBUTION }}
sed -i "s|https://github.com/ros-gbp|https://github.com/ros2-gbp|g" distribution.yaml
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This workaround can't make it into production. If there's a bug in the index, it should be fixed.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Great point. I forgot about this step in the workflow. It won't be needed going forward as the GBP repos are correct on master. I needed this workaround when trying to rebuild a distribution cache for an older release in 2025. Fixing the error in the way you suggest would be rewriting git history, which I assume can't happen. Is it ok if I just remove this step completely?

git tag -f ${{ env.RELEASE_TAG }}
git push -f origin tags/${{ env.RELEASE_TAG }}

# Force-push the release.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Why are we force-pushing to rosdistro?

Copy link
Copy Markdown
Contributor Author

@asymingt asymingt Apr 9, 2026

Choose a reason for hiding this comment

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

To overwrite an existing tag from the past if we choose to update it to include the distribution cache artifacts. If we plan to use this action strictly for future releases then it should be fine to remove the force in this command. Would that work for you?

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

Labels

persistent Issue/PR won't be marked as stale if inactive for a while.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants