Skip to content
Merged
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
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Tagging and Release Process

This release process applies to all contract release namespaces:
- `op-contracts/vX.Y.Z`: Core protocol contracts
- `op-safe-contracts/vX.Y.Z`: Safe multisig extensions

## Creating a tagged release

First select a tag string based on the guidance in [Monorepo Contracts Release Versioning](./versioning.md#monorepo-contracts-release-versioning)
Expand Down Expand Up @@ -44,10 +48,10 @@ efforts on the trunk branch.
The process is as follows:

1. Make the fixes on `develop`. Increment the contracts semver as normal.
1. Create a new release branch, named `proposal/op-contracts/vX.Y.Z` off of the rc tag (all subsequent `-rc` tags
will be made from this branch).
1. Create a new release branch, named `proposal/<namespace>/vX.Y.Z` off of the rc tag (all subsequent `-rc` tags
will be made from this branch). For example: `proposal/op-contracts/vX.Y.Z` or `proposal/op-safe-contracts/vX.Y.Z`.
1. Cherry pick the fixes from `develop` into the release branch, and increment the semver as normal. If this increment results in any of the modified contracts' semver being equal to or greater than it is on `develop`, then the semver should immediately be increased on `develop` to be greater than on the release branch. This avoids a situation where a given contract has two different implementations with the same version.
1. After merging the changes into the new release branch, tag the resulting commit on the proposal branch as `op-contracts/vX.Y.Z-rc.n`.
1. After merging the changes into the new release branch, tag the resulting commit on the proposal branch as `<namespace>/vX.Y.Z-rc.n` (e.g., `op-contracts/vX.Y.Z-rc.n` or `op-safe-contracts/vX.Y.Z-rc.n`).
Create a new release for this tag per the instructions above.

## Finalizing a release
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,10 @@ Individual contract versioning could be deprecated when the following conditions

Versioning for monorepo releases works as follows:

- Monorepo releases continue to follow the `op-contracts/vX.Y.Z` naming convention.
- Monorepo releases follow the `op-contracts/vX.Y.Z` naming convention for core protocol contracts.
- Additional release namespaces exist for specialized contract categories:
- `op-safe-contracts/vX.Y.Z`: Safe multisig extensions (SaferSafes, LivenessModule2, TimelockGuard, DeputyPauseModule, etc.)
- Each namespace maintains its own independent semver versioning.
- The version used for the next release is determined by the highest version bump of any individual contract in the release.
- Example 1: The monorepo is at `op-contracts/v1.5.0`. Clarifying comments are made in contracts, so all contracts only bump the patch version. The next monorepo release will be `op-contracts/v1.5.1`.
- Example 2: The monorepo is at `op-contracts/v1.5.1`. Various tech debt and code is cleaned up in contracts, but no features are added, so at most, contracts bumped the minor version. The next monorepo release will be `op-contracts/v1.6.0`.
Expand Down