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 2 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`.
21 changes: 14 additions & 7 deletions docs/RELEASE_ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ For each RC published in each stage:
2. Wait for PR to build artifacts and generate diff
3. Inspect results, merge if CI is green and the diff looks ok
4. Wait for `master` branch to build and update DNSLink at https://dist.ipfs.io
- Announce the RC:
- [ ]
- [ ] 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)
- [ ] 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 @@ -96,15 +96,22 @@ Checklist:
- [ ] 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.io](https://dist.ipfs.io)
- [ ] Publish to `dist.ipfs.io` (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.io](https://dist.ipfs.io) *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](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)
- [ ] use the artifacts built in CI for dist.ipfs.io: `wget "https://ipfs.io/api/v0/get?arg=/ipns/dist.ipfs.io/kubo/$(curl -s https://dist.ipfs.io/kubo/versions | tail -n 1)"`
- [ ] to [arch](https://www.archlinux.org/packages/community/x86_64/go-ipfs/) (flag it out of date)
- [ ] Cut a new ipfs-desktop release
- [ ] 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 Slack channel #pl-marketing-requests)
Expand Down