TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

How to fuck up software releases (2019)

119 点作者 WayToDoor大约 4 年前

13 条评论

nickcw大约 4 年前
I loved this article - it is so my life.<p>&gt; I manage releases for a bunch of free &amp; open-source software. Just about every time I ship a release, I find a novel way to fuck it up.<p>With rclone I have got nearly everything scripted now after 84 releases over 8 years, but I regularly mess up on other repos.<p>Releasing a feature branch is something I&#x27;ve done more than once, then merging the feature branch (with rebase) and wondering where on earth the previous version tag is - that is a particular favourite.<p>The main thing I&#x27;ve learnt from all these mistakes is to write a RELEASE.md in every repo with instructions on how to do the release.<p>You might only do a release every 6 months and you will have forgotten how to do it the next time.<p>Update the RELEASE.md and the release tools every time you mess up and at least you&#x27;ll be learning from your mistakes!
评论 #26902959 未加载
评论 #26911815 未加载
评论 #26903823 未加载
评论 #26904149 未加载
zild3d大约 4 年前
I&#x27;d think making it a CI step is more reliable than a manual script with all the mentioned footguns.<p>e.g. a Github action can be configured to only run on the desired branch, with specific tags, etc. Doesn&#x27;t matter if the commit was from Bob or Billy&#x27;s computer
评论 #26903692 未加载
bocklund大约 4 年前
A project I work on has a `RELEASING.rst` in the repo, which I include in the docs [1]. It contains a checklist of steps with the code. The actual deployment is automated with a GitHub Action to deploy to PyPI.<p>The checklist makes sure I hit all the things I need to do. There&#x27;s still places to screw up the manual steps, replacing the right versions, etc. It&#x27;s not perfect and there&#x27;s a bunch of things I want to improve still. I try to write it clearly enough so that someone who&#x27;s never released a project ever just needs to follow the steps.<p>[1] <a href="https:&#x2F;&#x2F;espei.org&#x2F;en&#x2F;latest&#x2F;releasing.html" rel="nofollow">https:&#x2F;&#x2F;espei.org&#x2F;en&#x2F;latest&#x2F;releasing.html</a>
ncmncm大约 4 年前
I am forced to wonder if releasing code while on vacation is not itself an overwhelmingly more serious fuckup than anything that happened in it.<p>Then, doing it again.
评论 #26908603 未加载
gjjvdburg大约 4 年前
I&#x27;ve been using a &quot;do-nothing script&quot; [1] to semi-automate the release process for some open source projects (e.g. [2]). Might be interesting for someone here.<p>[1]: <a href="https:&#x2F;&#x2F;blog.danslimmon.com&#x2F;2019&#x2F;07&#x2F;15&#x2F;do-nothing-scripting-the-key-to-gradual-automation&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blog.danslimmon.com&#x2F;2019&#x2F;07&#x2F;15&#x2F;do-nothing-scripting-...</a><p>[2]: <a href="https:&#x2F;&#x2F;github.com&#x2F;alan-turing-institute&#x2F;CleverCSV&#x2F;blob&#x2F;master&#x2F;make_release.py" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;alan-turing-institute&#x2F;CleverCSV&#x2F;blob&#x2F;mast...</a>
Mathnerd314大约 4 年前
&gt; To address these issues, I added a custom .git&#x2F;_incr_version script which can add additional logic on a per-repo basis, and updated semver to call this script if present.<p>The article mentions several problems caused by this. An alternative method would be to check the semver script into each project repository. This is the way things tend to be done with CMake modules. It does make updating all usages of the script harder, but these sorts of scripts change once every few years if that.
评论 #26903881 未加载
taleodor大约 4 年前
Part of the functionality we built in Reliza Hub is to generate automatic version increments that are guaranteed to be unique on each request and have special rules for versioning on feature and release branches.<p>My usual versioning convention for a feature branch is BRANCH_NAME.PATCH<p>Generally, I believe getting versioning right requires an external versioning service that ensures uniqueness and routing between branches. Otherwise there will always be &quot;gotchas&quot;.
client4大约 4 年前
I highly value articles like this one -- open and honest; it peels back the beautiful veneer to show great work has obstacles and perfection is always a struggle.
meristem大约 4 年前
General comment: for everyone who tracks and attempts to not repeat whatever just botched up your release: at least the new errors are not the same as the old errors!
Xunjin大约 4 年前
Ty for this, helps me at my &quot;Impostor&quot; to actually see that people which &quot;are in whole other level&quot;, do the same mistakes that I&#x27;ve done :P
aequitas大约 4 年前
It&#x27;s too bad this video is in German and a little outdated, but it does a great job at introducing the virtues of CI&#x2F;CD using a movie (Indiana Jones) which not many people would associate with software deployment: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=eF-RJBEdMOQ&amp;t=93s" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=eF-RJBEdMOQ&amp;t=93s</a>
ChrisArchitect大约 4 年前
More previous discussion: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21244352" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21244352</a>
devoutsalsa大约 4 年前
TIL I forgot to create&#x2F;update the CHANGELOG on a couple projects version I pushed not too long ago :)