Skip to content
This repository has been archived by the owner on Aug 1, 2023. It is now read-only.

docs: add breaking change interop release process #395

Merged
merged 1 commit into from
Mar 25, 2022
Merged
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
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,15 @@ npm publish
npm push origin && npm push origin v[N.N.N]
```

## Interop release process for when breaking changes are introduced

1. Get branches of go-ipfs and js-ipfs working together in interop locally using environment variables to point at the local versions
2. In this repo make a branch containing the interop changes as well as setting the go/js-ipfs commit hashes to be used by CI. Merge to master.
3. Update go-ipfs and js-ipfs branches to use interop/master instead of whatever is released
4. Release go and js-ipfs (not necessarily together) and after each is released (or RC'd) bump interop to use the release instead of the commit hash
5. Release interop
6. Bump go and js-ipfs to use released interop instead of master
Comment on lines +89 to +94
Copy link
Member

Choose a reason for hiding this comment

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

If we want to simplify and have go-ipfs and js-ipfs green, instead of this repo, then maybe:

Suggested change
1. Get branches of go-ipfs and js-ipfs working together in interop locally using environment variables to point at the local versions
2. In this repo make a branch containing the interop changes as well as setting the go/js-ipfs commit hashes to be used by CI. Merge to master.
3. Update go-ipfs and js-ipfs branches to use interop/master instead of whatever is released
4. Release go and js-ipfs (not necessarily together) and after each is released (or RC'd) bump interop to use the release instead of the commit hash
5. Release interop
6. Bump go and js-ipfs to use released interop instead of master
1. Get branches of go-ipfs and js-ipfs working together in interop locally using environment variables to point at the local versions
2. In this repo make a branch containing the interop changes. CI won't pass with release versions of go/js-ipfs, but it is ok, as long (1) passed locally. Merge to master.
3. Update go-ipfs and js-ipfs branches to use a commit from interop/master instead of whatever is released. The ipfs/interop test in their CI should be green now.
4. Release go and js-ipfs (not necessarily together) and after each is released (or RC'd) bump interop to use the release instead of the commit hash. This will fix CI in ipfs/interop repo.
5. Release ipfs/interop when its CI is green again.
6. Bump go and js-ipfs to use released interop instead of master

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Assuming no disastrous problems with the js monorepo I think making CI pass seems like the reasonable thing to do here and if it's as simple as changing a line from v0.X.Y -> abcd1234 then it's pretty simple as well.

In the go-ipfs v0.11.0 release alone there are 3 breaking changes that it's helpful to see fail and then fix individually (sharding, circuit-relay, pubsub). If we don't keep CI green here it puts a lot of pressure on reviewers to make sure when things work on their machines that it's not just on their machines due to some particular configuration or stray environment variable.

Copy link
Member

Choose a reason for hiding this comment

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

Ack. After thinking about it in context of go-ipfs 0.11 using interop/master in go-ipfs (rolling branch, instead of hardcoded revision) will make our merge fest easier.


## Contribute

Feel free to join in. All welcome. Open an [issue](https://github.com/ipfs/ipfs-interop/issues)!
Expand Down