Skip to content
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

Moar release docs #9153

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions docs/RELEASE_GIT_GRAPH.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Expected git graph

![Release git graph](https://ipfs.io/ipfs/bafkreidcmmgmfjoasjimw66mgbl7vnyvjf4ag4y67urj7ejnkkhm7nxx5m)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few concerns about this:

  1. Is the diagram itself clear for folks? I didn't take too long to stare at it, but I expect others who have done releases can give comments.
  2. I don't like having rendered artifacts without also linking to the raw material. Basically, if someone want to make a change here they have to regenerate it from scratch. The tips in https://filecoinproject.slack.com/archives/C03FFEVK30F/p1658375403567479 are relevant.

Copy link
Contributor

@guseggert guseggert Aug 15, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I stared at it for a bit and it made sense as I worked through it, seems okay as supplemental material.

Also agree re: diagram source. We need to maintain these over time, they should be easy to change/update. GitHub supports rendering Mermaid diagrams natively now, would be nice to use that for diagramming: https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-diagrams . There's even git graph support https://mermaid-js.github.io/mermaid/#/gitgraph


## Continued branches

- *master* this is development branch
- *release* this branch list all the release commits
It's important that `git show release~$X` shows version releases first.

## Creating this graph:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the relationship of this document to docs/RELEASE_ISSUE_TEMPLATE.md ? I don't see any crosslinking.

Why isn't this info inlined into the release issue template?

I think it would be helpful to state what the purpose of this document is with a "Purpose" section.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't compared in detail but at least some of the steps here are also in #9024


1. Making the RC. From the ref you want to make release do:
1. `git checkout -b release-vX.Y.Z` (create the branch this release is gonna be worked on)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Look at the doc in rendered form. It isn't indented. I assume you need to add an extra space.

1. Make changelogs if you havn't done so yet.
Changelogs are free flowing and can be done earlier on master if you want.
It is smart to add changelogs when you create a new big feature while or just after merging this feature instead of 2 weeks later when doing the release.
1. Update the `version.go` file (must be it's own commit with nothing else).
1. `git tag -s vX.Y.Z-rcAAA` create signed tags
1. `git push origin vX.Y.Z-rcAAA` push the tag (never use `git push --tags`)
1. Making the final release (/ an other RC)
1. Doing Back-Ports.
- If you want to pull anything from `$(git merge-base release-vX.Y.Z $REF)..$REF` do a merge commit from `$REF` into `release-vX.Y.Z`.
It's important to use merge for the merge algorithm to not see this as conflicts later.
If you don't understand that sentence just skip this step and go to the next one.
- For other commits do `git cherry-pick -x $COMMIT`.
Using `-x` will add `(cherry picked from commit ...)`, this make the merge algorithm to not see this as conflicts later.
1. Finalize changelogs.
1. Update the `version.go` file (must be it's own commit with nothing else).
1. Merge `release-vX.Y.Z` into `release` branch (USE A MERGE COMMIT).
1. `git tag -s vX.Y.Z` create a signed tag on that merge commit
1. On a new temporary branch update `version.go` for the next release `-dev`.
1. Using a merge commit (to avoid conflicts one last time) merge back that temporary thing into `master`.
35 changes: 20 additions & 15 deletions docs/RELEASE_ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ For each RC published in each stage:

- version string in `version.go` has been updated (in the `release-vX.Y.Z` branch).
- tag commit with `vX.Y.Z-rcN`
- add artifacts to https://dist.ipfs.tech
- add artifacts to https://dist.ipfs.tech/kubo
1. Make a PR against [ipfs/distributions](https://github.com/ipfs/distributions) with local changes produced by `add-version` (see [usage](https://github.com/ipfs/distributions#usage))
2. Wait for PR to build artifacts and generate diff
3. Inspect results, merge if CI is green and the diff looks ok
Expand All @@ -49,9 +49,10 @@ For each RC published in each stage:
- Announce the RC:
- [ ]
- This will automatically post to IPFS Discord #ipfs-chatter
- Examples from the past: [0.14.0](https://discuss.ipfs.io/t/kubo-formerly-go-ipfs-v0-14-0-release-is-out/14794)
- Examples from the past: [0.14.0](https://discuss.ipfs.tech/t/kubo-formerly-go-ipfs-v0-14-0-release-is-out/14794)
- [ ] Pin the topic
- [ ] To the _early testers_ listed in [docs/EARLY_TESTERS.md](https://github.com/ipfs/go-ipfs/tree/master/docs/EARLY_TESTERS.md). Do this by copy/pasting their GitHub usernames and checkboxes as a comment so they get a GitHub notification. ([example](https://github.com/ipfs/go-ipfs/issues/8176#issuecomment-909356394))
- [ ] Notify the gateway team on Slack.

Checklist:

Expand Down Expand Up @@ -90,30 +91,34 @@ Checklist:
- [ ] Ensure that [README.md](https://github.com/ipfs/go-ipfs/tree/master/README.md) is up to date
- [ ] Update docs by merging the auto-created PR in https://github.com/ipfs/ipfs-docs/pulls (they are auto-created every 12 hours)
- [ ] Invite the wider community through (link to the release issue):
- [ ] [discuss.ipfs.io](https://discuss.ipfs.io/c/announcements)
- [ ] [discuss.ipfs.tech](https://discuss.ipfs.tech/c/announcements)
- [ ] Matrix
- [ ] **Stage 3 - Release**
- [ ] Final preparation
- [ ] Verify that version string in [`version.go`](https://github.com/ipfs/go-ipfs/tree/master/version.go) has been updated.
- [ ] Merge `release-vX.Y.Z` into the `release` branch.
- [ ] Tag this merge commit (on the `release` branch) with `vX.Y.Z`.
- [ ] Release published
- [ ] to [dist.ipfs.tech](https://dist.ipfs.tech)
- [ ] Publish to `dist.ipfs.tech` (mostly automated stuff, you just have to push two slocs changes for dist's CI to do magic)
- [ ] Open a PR with `./dist.sh add-version kubo vX.Y.Z` update on [ipfs/distributions](https://github.com/ipfs/distributions).
- [ ] Merge that PR (ONCE CI IS GREEN).
- [ ] Wait for CI to be green on master.
- [ ] **Important release to do**
- [ ] to [dist.ipfs.tech](https://dist.ipfs.tech) *cross check CI*
- [ ] to [github](https://github.com/ipfs/go-ipfs/releases) ***manual action to do***
- [ ] Publish a new github release, target the tag made previously. Include changelog highlights, just lookup previous major releases for inspiration.
- [ ] Run the [synchronisation workflow](https://github.com/ipfs/kubo/actions/workflows/sync-release-assets.yml) (it also runs once a day on a cron job)
- [ ] Send a message to notify the gateway team.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [ ] Send a message to notify the gateway team.
- [ ] Send a message to notify #bifrost

- [ ] Send a message to notify the GUI team (need to do a new IPFS-desktop release).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [ ] Send a message to notify the GUI team (need to do a new IPFS-desktop release).
- [ ] Send a message to notify #ipfs-gui-dev (since they need to do a new IPFS-desktop release).

- [ ] Less important releases *check async*
- [ ] to [npm-go-ipfs](https://www.npmjs.com/package/go-ipfs) (done by CI at [ipfs/npm-go-ipfs](https://github.com/ipfs/npm-go-ipfs), but ok to dispatch [this job](https://github.com/ipfs/npm-go-ipfs/actions/workflows/main.yml) manually)
- [ ] to [chocolatey](https://chocolatey.org/packages/go-ipfs) (done by CI at [ipfs/choco-go-ipfs](https://github.com/ipfs/choco-go-ipfs/), but ok to dispatch [this job](https://github.com/ipfs/choco-go-ipfs/actions/workflows/main.yml) manually)
- [ ] to [snap](https://snapcraft.io/ipfs) (done CI at [snap/snapcraft.yaml](https://github.com/ipfs/kubo/blob/master/snap/snapcraft.yaml))
- [ ] to [github](https://github.com/ipfs/go-ipfs/releases)
- [ ] reuse signed artifacts from https://dist.ipfs.tech/kubo (run [sync-release-assets.yml workflow](https://github.com/ipfs/kubo/actions/workflows/sync-release-assets.yml))
- [ ] to [arch](https://www.archlinux.org/packages/community/x86_64/go-ipfs/) (flag it out of date)
- [ ] Cut a new ipfs-desktop release
- [ ] Get a blog post created
- [Submit a request using this form](https://airtable.com/shrNH8YWole1xc70I).
- Notify marketing in #shared-pl-marketing-requests about the blog entry request (since the form gets spam).
- Don't makre this as done until the blog entry is live.
- [ ] Submit [this form](https://airtable.com/shrNH8YWole1xc70I) to publish a blog post, linking to the GitHub release notes
- [ ] Broadcasting (link to blog post)
- [ ] Twitter (request in Filecoin Slack channel #shared-pl-marketing-requests)
- [ ] [Reddit](https://reddit.com/r/ipfs)
- [ ] [discuss.ipfs.io](https://discuss.ipfs.io/c/announcements)
- [ ] [discuss.ipfs.tech](https://discuss.ipfs.tech/c/announcements)
- [ ] **Post-Release**
- [ ] Merge the `release` branch back into `master`, ignoring the changes to `version.go` (keep the `-dev` version from master).
- [ ] Create an issue using this release issue template for the _next_ release.
Expand All @@ -123,7 +128,7 @@ Checklist:

## ⁉️ Do you have questions?

The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).
The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.tech](http://discuss.ipfs.tech). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org).

## Release improvements for next time

Expand All @@ -146,5 +151,5 @@ Would you like to contribute to the IPFS project and don't know how? Well, there
- Check the issues with the `help wanted` label in the [ipfs/kubo repo](https://github.com/ipfs/kubo/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
- Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at [discuss.ipfs.io](https://discuss.ipfs.io/) and help users finding their answers.
- Join the discussion at [discuss.ipfs.tech](https://discuss.ipfs.tech/) and help users finding their answers.
- Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action!