-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Options for representing release tags without bloom? #92
Comments
I took the freedom to edit your post and changed the unordered list into an ordered one. That makes it easier to refer to the proposed options. I have a few question to clarify the goals. Some options can maybe be ruled out based on the answers:
In general I am not in favor of requiring heuristic / crawling of any kind (as described in option 3). Simply because of the complexity as well as the non-deterministic result. Also just to mention it: the approach of referring to a release using a tag in the source repo doesn't work for packages which rely on additional information being augmented in the release repo. |
Some combination of manual commits or a new lightweight tool. We (Clearpath) already are unable to take advantage of bloom's automatic PR generator since our rosdistro is on an internal GitLab instance, and prior to that on Bitbucket (see ros-infrastructure/bloom#257), so having to manually mutate the
Not a url-less tag, as proposed in option 2. The first three states are valid today; in a world where option 2 has been implemented, the fourth state becomes valid, but it would never be valid to specify a release version without having either a release bloom URL specified or a source URL specified:
Of course the interesting/tricky thing here is ensuring that this is still a valid release cache state, since if the release tag and source branch repo states have substantially diverged, it may not be enough to just look up That being the case, maybe it's silly to try to repurpose the
I'm not totally sure what the scenario is here; could you supply an example?
Yes, packages which have those requirements would have to be bloomed as usual. And indeed, interoperability is important here— on the far side of the changes proposed, I would expect our |
A combination of option 1 and option 3 (call it 5) would be to add a new attribute to the
In a world where this is a valid
This has the big advantage of requiring very little modification to the existing tooling— indeed, it would even be possible for us to just have an out-of-band I guess the main question would be what follow-on changes would be possible/desirable to take better advantage of a new
|
E.g. I have released a repo using bloom but used crazy tag names somehow. If the distribution file would still let me mention that release tag name in the upstream repo that could be helpful. Then the user can decide where to get the code from (gbp, source-tag, source-branch). |
Adding an additional |
Yes, a perfect example of this is
The cost of caching the My only concern about trying to do that right off the bat is that we'd be pretty much adding a new, third code path to the |
Once
You are right that the decision about caching or not is not tight to actually storing the tag name somehow. I would just expect the information to be useful for the same reasons why you added source caching in the first place. Could the operations be done without a cache? Sure, but it would likely be painfully slow and resource intensive 😉 This would be the rought outline for adding
Anything I am missing? |
Plan sounds good. Keeping the existing
That diverges the Python API from the yaml structure, perhaps to an unacceptable degree, but it does also maintain the present contract that (Another, less intense workaround might be to simply return the value of |
To provide an update here: We've had some more discussions internally, and things are still a bit in flux, but I'm not sure we'll be able to make the (not insignificant) investment in tooling proposed above. The reality is, option 3 gets us where we need to go, and although it is inefficient to do it in the general git case (a local clone is required), all three of Github, Gitlab, and Bitbucket have simple API calls to grab a list of commit hashes on a branch, so the actual cost of looking up the most recent tag is pretty low. https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository https://docs.gitlab.com/ce/api/commits.html#list-repository-commits |
Following the discussion in #65 and with the additional context of my ROSCon talk, I'm hoping to reopen a discussion about how to represent release tags in a
distribution.yaml
file without requiring bloom or a second dedicated GBP repo. My overall goals are:rosinstall_generator
-based bundle workspaces, eliminate thebloom-release
step, while retaining thecatkin_prepare_release
step (and the overall notion of per-package versioning).It was rightly pointed out in #65 that simply putting source repo URLs into the release stanza URL doesn't work for multi-package repos. So that's out, leaving a handful of other potential options:
source
stanza for "tag of current release". This would also address --upstream option broken for custom upstream tags rosinstall_generator#33, which is the issue thatrosinstall_generator
(and nowrosdistro_freeze_source
) currently can only guess at the upstream tag which corresponds to a given release.release
stanza to exist with version string only and no URL (such a stanza would be used as it currently is byrosdistro_freeze_source
androsinstall_generator
, but ignored when the URL is required, for example byrosdistro_build_cache
).source
stanza. Setversion
to the branch name as it is today, and makerosdistro_freeze_source
able to do something like "latest tag", which would need to examine recent commits on each version branch, looking for the most recent commit which is a tagged version (unsure if this can be done efficiently).source/version
to the tag you want to lock to. Losing the idea of a separate development and release version probably doesn't matter in this instance since holding back a version would probably apply to an upstream repo that you're not actively developing on anyway.tracks.yaml
to eliminate allgit-bloom-generate
steps other than the firstrosrelease
one (example).Sorry for the big brain dump, but I'd hoping for some guidance here on how to best move this forward in a way that will work to benefit Clearpath's internal tooling, other users doing similar things, and the upstream repos that make up public ROS.
The text was updated successfully, but these errors were encountered: