go-control-plane icon indicating copy to clipboard operation
go-control-plane copied to clipboard

Support multi-module releases in go-control-plane

Open alecholmez opened this issue 2 years ago • 6 comments

This PR introduces support for multi-module releases in go-control-plane following the plan of action outlined in issue #391.

A few things have happened:

  • Bumped modules to Go 1.20 (to inherit support for workspaces)
  • Introduced a go workspace that orchestrates all the subcomponents of this repo
  • Initialized new modules for ./envoy and ./contrib containing the generated go stubs
  • Renamed build/ to scripts/ so we have a bucket for more general repo automation

When this PR is merged, a tag will be cut at v0.11.2 but a new tag will be introduced with envoy/v1.26.2. closes #391

alecholmez avatar Jun 05 '23 15:06 alecholmez

  • Initialized new modules for ./envoy and ./contrib containing the generated go stubs

We probably want to do the same for ./ratelimit too?

jpeach avatar Jun 06 '23 04:06 jpeach

This pull request has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in 7 days if no further activity occurs. Please feel free to give a status update now, ping for review, or re-open when it's ready. Thank you for your contributions!

github-actions[bot] avatar Jul 10 '23 04:07 github-actions[bot]

This pull request has been automatically closed because it has not had activity in the last 37 days. Please feel free to give a status update now, ping for review, or re-open when it's ready. Thank you for your contributions!

github-actions[bot] avatar Jul 17 '23 04:07 github-actions[bot]

Hey all, been away for quite a while. Starting to catch back up on this project. Did we ever come to a consensus on the way forward here? I have some cycles I can spend to push this across so we can get onto a more regular release cycle.

alecholmez avatar Dec 20 '23 03:12 alecholmez

Hi @alecholmez , You might want to rebase your work. The go version has changed. Have you considered defining a module per extension in contrib instead of a contrib module ?

mmorel-35 avatar Jul 24 '24 10:07 mmorel-35

I merged head, but my understanding is that we need to create the tags for the sub-modules first in order to allow proper importing. Trying to import in a project with the current setup, I get

 % go mod tidy
go: downloading github.com/envoyproxy/go-control-plane v0.12.1-0.20240804223412-e9538224ae87
go: github.com/envoyproxy/[email protected] requires
	github.com/envoyproxy/go-control-plane/[email protected]: invalid version: unknown revision 000000000000

In this case this PR would need:

  • first create the changes within the submodules, and tag them
  • this would require to follow some specific order, to add the different steps (envoy, then contrib and ratelimit, then the rest)
  • update tooling to allow consistency. I'm still unclear how we can maintain consistency in tagging with a multi-module repository. We can auto-tag envoy and contrib when syncing from envoy, but we'd need to still manually update all the other modules

valerian-roche avatar Aug 04 '24 22:08 valerian-roche

Concerning the multimodule publishing mecanism, has anyone considered using opentelemetry/multimod

This seems to fit this use case

mmorel-35 avatar Dec 12 '24 07:12 mmorel-35

There is one last part to be added which is the prepare-release See https://github.com/open-telemetry/opentelemetry-collector/blob/main/Makefile#L355-L393

Or https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/Makefile#L413-L426 For examples , if you'd like to take it from here as that's the crucial part that releasers will need to manipulate

mmorel-35 avatar Dec 17 '24 05:12 mmorel-35

There is one last part to be added which is the prepare-release See https://github.com/open-telemetry/opentelemetry-collector/blob/main/Makefile#L355-L393

Or https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/Makefile#L413-L426 For examples , if you'd like to take it from here as that's the crucial part that releasers will need to manipulate

I pushed a few changes, and raised a separate PR to actually create the first releases. I'd then go and update the envoy sync jobs to tag when possible

valerian-roche avatar Dec 23 '24 03:12 valerian-roche