tooling: Add Github release manager#17741
Conversation
|
coverage is here https://storage.googleapis.com/envoy-pr/17741/tooling/index.html |
24e33aa to
7c14fbd
Compare
|
briefly reWIPping while i add paging for addittional release versions |
7c14fbd to
9ba761e
Compare
Signed-off-by: Ryan Northey <ryan@synca.io>
9ba761e to
d5c70e2
Compare
|
|
||
| from tools.github.release.abstract import AGithubRelease, AGithubReleaseManager | ||
| from tools.github.release.exceptions import GithubReleaseError | ||
| # from tools.github.release.release import GithubRelease |
There was a problem hiding this comment.
in order to land them separately i commented out the interdependent bits in the tests and class
| return pathlib.Path(self._path) | ||
|
|
||
| @async_property | ||
| async def latest(self) -> Dict[str, packaging.version.Version]: |
There was a problem hiding this comment.
Is this entire class and manager just a very elaborate way to get at latest version? The contrast is some of what we do in https://github.com/envoyproxy/envoy/blob/main/tools/dependency/release_dates.py. That's also not very concise.
I thought based on the comments in the abstract interface, this would actually be doing some artifact fetch/push.
There was a problem hiding this comment.
This class does quite a lot
Overall the tool is structured broadly into 3 classes
GithubRelease - CRUD operations
GithubReleaseAssets - upload/download of assets
and this one GithubReleaseManager - which:
- provides logging and warn/error handling
- holds the github connection and http client session
- iterates releases and creates a dictionary of latest major/minor versions
- version formatting/parsing (ie
v0.0.1->packaging.Version("0.0.1")) - provides a factory for
GithubReleaseobjects
its my intention to rewrite the release dates util at some point to make use of a Runner, improve logging/error handling, add tests etc. In that event the release dates util can almost certainly make use of this lib
I thought based on the comments in the abstract interface, this would actually be doing some artifact fetch/push.
if you look through the interfaces again, i think you will see that this is an implementation of the manager class specified there
artifact fetch/push comes after
Signed-off-by: Ryan Northey <ryan@synca.io>
ba1ec0c to
c85d0f2
Compare
* main: config: fix dfp config validation (envoyproxy#17835) docs: updating where meetings are uploaded (envoyproxy#17832) h2: moving a comment (envoyproxy#17846) quiche: early fail listener config with both quic and connection_balencer (envoyproxy#17834) dns: configuring a basic key value store to persist to disk (envoyproxy#17745) quic: fix receiving STOP_SENDING (envoyproxy#17815) tooling: Add Github release manager (envoyproxy#17741) tooling: Use upstream pytest-patches (envoyproxy#17809) Remove `hidden_envoy_deprecated_use_http2` (envoyproxy#17805) kafka: produce request for mesh-filter (envoyproxy#17818) Signed-off-by: Michael Puncel <mpuncel@squareup.com>
Commit Message: tooling: Add Github release manager
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Deprecated:]
[Optional API Considerations:]