-
-
Notifications
You must be signed in to change notification settings - Fork 114
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
Improve published release artifact names #192
Comments
Hmm, I think of knowing the version as a feature actually. It's nice to know once you've downloaded an artifact what version you've got. As for Mac/Darwin, I am always torn on it, because nobody knows what Darwin is. Heck, even I don't really know to this day. I'm sure I could look up some history. Similarly I get confused with i686 arches, etc (I'm glad Go doesn't use i686 as an arch identifier). |
Changing this at this point would be a breaking change for the release processes of many platforms. We're not in contact with all of them and we can't really trust that we'll be able to communicate a change like this to them. I think using "latest" is almost always a foot-gun. You should pin to a specific version number, and you should regularly update it to the latest version number as necessary. You can sign up for release notifications on GitHub (click watch, custom, check releases only) and update it in response to those notifications. |
Agreed, but hard-coding a fallback version is almost as big a footgun. Using the GitHub API to figure out what latest resolves to is not always an option.
That's fair...when you download an archive manually. I don't know how often people actually do that. They either use a package manager or some other automation/script in my experience. Incidentally, if there was a container image published for xcaddy, there would be a
That's another fair point, although 1.0.0 hasn't been tagged yet which is what led me to open this issue: if there was a time to make a change like this, it's now. I understand if it's a no though. |
I just realized we're in the Anyway, I have less strong opinions about how we distribute |
We can probably add another |
What users source a Caddy build from GH releases in a way where the version in the asset name matters? At the time of retrieval it's either
As stated, it prevents a "feature" of being able to use Simple as: # URL:
# - Latest release: https://github.com/caddyserver/xcaddy/releases/latest/download/xcaddy_linux_amd64.tar.gz
# - By release tag: https://github.com/caddyserver/xcaddy/releases/download/v0.4.2/xcaddy_linux_amd64.tar.gz
# Instead of `curl -fsSL`, you may prefer `wget -qO-` (available by default on alpine, while curl is available by default on fedora)
# `--no-same-owner` avoids using the `1001:127` user/group assignment (Github runner defaults I think?)
# Extracts only the binary to `/usr/local/bin`
curl -fsSL https://github.com/caddyserver/xcaddy/releases/latest/download/xcaddy_linux_amd64.tar.gz | tar -xz -C /usr/local/bin --no-same-owner xcaddy A README example could be simpler (assuming most common asset for this demographic would be linux amd64): curl -fsSL https://github.com/caddyserver/xcaddy/releases/latest/download/xcaddy_linux_amd64.tar.gz | tar -xz xcaddy I've seen the version "benefit" sometimes encoded into the actual release binary. Either with the asset wrapped in a compressed archive (older releases of All of those arguably worse since that requires an additional
It would be nice for Caddy too, but I agree with the concern of it causing more friction to switch to than is probably worthwhile. Maybe if Caddy has a
Sounds like extra complexity than necessary? I think the general expectation is to improve naming convention of release assets.
Your proposal would be a stopgap approach and leaves |
What's the complexity? I'm proposing doing exactly what you're asking. Do you want the version in the asset name or not? |
I expect the following to be valid: curl -fsSL https://github.com/caddyserver/xcaddy/releases/latest/download/xcaddy_linux_amd64.tar.gz | tar -xz xcaddy
curl -fsSL https://github.com/caddyserver/xcaddy/releases/download/v0.4.2/xcaddy_linux_amd64.tar.gz | tar -xz xcaddy
Perhaps I misunderstood what you're suggesting here? There should be no need to produce a separate You simply do not include the version in the asset name and publish those assets with the tagged release. After which they can be reached via the usual tagged URL or the latest release published via the |
What I'm proposing will not include the |
Apologies, I misunderstood your description as something else. We're on the same page then, I'll summarize for clarity 👍 Proposed change only drops the version tag from the name of published assets:
Thus is just a one line change? Lines 72 to 83 in b72e330
{{ .ProjectName }}_
- {{- .Version }}_
{{- if eq .Os "darwin" }}mac{{ else }}{{ .Os }}{{ end }}_
This is not clear? It should only affect the naming of the archives that the CI publishes to GH releases?
This is also where I was confused vs the proposal above. Sounded like you were suggesting something different? EDIT: Oh I see, I think the concern was with how it affects the separate publishing of Tags was supported in the action at one point but then reverted. For now there it can be done via the |
This would be a breaking change for anyone who already has automation to pull the asset with the version in the filename (e.g. the Docker builder image, or anyone else). That's my concern with this. And also I don't want to do any change that would encourage not pinning to a specific version. It's really trivial to grab the correct file with a regexp or something. I don't see that much value in this change. |
This was covered already?
If anyone was automating a process that pulls multiple releases, then yes such a change will introduce some friction for that scenario. Feel free to delay until
This is akin to go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest Using the If you're against supporting such more so than the other examples where it's acceptable, then don't update the README to draw attention to it I guess? It's still a valid convenience like any of the others advised.
Could you provide an example? The latest release tag would need to be sourced from somewhere. If I want a package manager agnostic way to get the binary without building from source, why is better supporting the I have no interest in doing such in CI where I'll version pin, and I can grab the URL with a few more clicks and type out the command manually, but it'd be nicer to just not think about the version in those scenarios, especially when giving instructions to someone else. There is value, it's a clear improvement for that specific use-case. |
It's not very easy to build automation with the current naming scheme of release assets.
One issue is the version in the archive name: GitHub has this useful feature where you can go to a latest release by a special URL: https://github.com/caddyserver/xcaddy/releases/latest
Unfortunately, there is no way to download artifacts without knowing the version (since it's part of the name).
By removing the name, one can download artifacts for the latest version without actually knowing what it is.
Another mild annoyance is the OS name for macOS builds: all of the other targets use the "standard" Go OS (which would be darwin in this case). (This is easy to overcome; I just thought I'd mention it).
The text was updated successfully, but these errors were encountered: