You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: RELEASE.md
+46-17Lines changed: 46 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ The FVM is a workspace of crates which have different release schedules:
14
14
> When releasing a new version of the FVM, make sure to check if any backports are needed and do them in separate PRs targeting the appropriate branches. Afterwards, make sure to create a new release for the backported changes.
15
15
> Note that the v2 and v3 tracks no longer contain the `fvm_integration_tests` crate so there is no need to backport and release it.
16
16
17
-
The primary crates are `fvm`, `fvm_shared`, `fvm_sdk`, and the integration testing framework `fvm_integration_tests`. These are the crates that have [`version.workspace = true`](https://github.com/search?q=repo%3Afilecoin-project%2Fref-fvm%20version.workspace%20%3D%20true&type=code).
17
+
The primary crates are `fvm`, `fvm_shared`, `fvm_sdk`, and the integration testing framework `fvm_integration_tests`. These are the crates that have [`version.workspace = true`](https://github.com/search?q=repo%3Afilecoin-project%2Fref-fvm%20version.workspace%20%3D%20true&type=code).
18
18
19
19
## Versioning
20
20
Versioning of the [primary crates](#primary-crates) is not strictly semver compatible:
@@ -33,6 +33,9 @@ To propose a new release, open a pull request with the following changes:
33
33
2. Update the version of the coupled workspace dependencies in `Cargo.toml` to match the new version
@@ -44,11 +47,6 @@ To propose a new release, open a pull request with the following changes:
44
47
45
48
See [PR #2002](https://github.com/filecoin-project/ref-fvm/pull/2002) for an example.
46
49
47
-
When a release PR is opened or updated, the **Release Checker** GitHub Action will:
48
-
* Verify that the version bump is correct.
49
-
* Perform a workspace-wide dry-run publish (`cargo publish --workspace --dry-run`) to ensure all crates are in a valid state for release.
50
-
* Create a draft GitHub Release and comment on the PR with a summary.
51
-
52
50
## Preparing Other/Non-Primary Crates
53
51
54
52
To propose a release of a crate other than `fvm`, `fvm_shared`, `fvm_sdk`, or
@@ -60,28 +58,59 @@ To propose a release of a crate other than `fvm`, `fvm_shared`, `fvm_sdk`, or
60
58
3. Make sure the `CHANGELOG.md` files are all up-to-date (look through `git log -- path/to/crate`),
61
59
set the release date & version, and add a new "Unreleased" section.
62
60
63
-
The **Release Checker** will also handle these crates independently based on the paths modified in the PR.
64
-
65
61
## Review and Release
66
62
67
63
Once the release is prepared, it'll go through a review:
68
64
69
65
1. Make sure that we're _ready_ to release. E.g., make sure downstream can consume the release.
70
66
2. Make sure that we're correctly following semver.
71
67
3. Make sure that we're not missing anything in the changelogs.
72
-
4. Verify that the **Release Checker** action has passed, including the "Dry-run publish" step.
73
68
74
69
Finally, an [FVM "owner"](https://github.com/orgs/filecoin-project/teams/fvm-crate-owners/members) will:
75
70
76
71
1. Merge the release PR to master.
77
-
2. The **Releaser** GitHub Action will automatically:
78
-
* Create git tags for each released crate (`crate_name@vX.Y.Z`).
79
-
* Publish the draft GitHub Release(s).
80
-
* Publish the crates to [crates.io](https://crates.io) using `cargo publish --workspace --no-default-features`.
81
-
- Note: This repository uses **trusted publishing** via OIDC. No `CARGO_REGISTRY_TOKEN` secret is required, but the repository must be configured as a trusted publisher on crates.io.
82
-
83
-
3. Verify the releases on crates.io:
72
+
2. For each released crate, create a git tag: `crate_name@crate_version`.
73
+
3. Run `cargo publish` for each released crate (in dependency order).
74
+
75
+
Example steps for an FVM "owner" to release `MINOR` and `PATCH` crates:
76
+
77
+
1. Merge the `PATCH` release PR to master (e.g., [PR #2030](https://github.com/filecoin-project/ref-fvm/pull/2030)).
78
+
2. Publish all [primary crates](#primary-crates) . For each crate (fvm, fvm_shared, fvm_sdk, fvm_integration_tests):
79
+
80
+
```bash
81
+
# Declare an associative array for crate_name → crate_directory
0 commit comments