diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 060d9d146..8f52268f2 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -6,10 +6,10 @@ on: branches: - main tags: - - 'world-id-indexer-v*' - - 'world-id-gateway-v*' - - 'world-id-oprf-node-v*' - - 'world-id-relay-v*' + - "world-id-indexer-v*" + - "world-id-gateway-v*" + - "world-id-oprf-node-v*" + - "world-id-relay-v*" workflow_dispatch: permissions: @@ -29,7 +29,7 @@ jobs: REF_NAME: ${{ github.ref_name }} run: | if [[ "$REF_TYPE" == "branch" ]]; then - echo 'services=["indexer","gateway","oprf-node","relay"]' >> "$GITHUB_OUTPUT" + echo 'services=["indexer","gateway","relay"]' >> "$GITHUB_OUTPUT" elif [[ "$REF_NAME" == world-id-indexer-v* ]]; then echo 'services=["indexer"]' >> "$GITHUB_OUTPUT" elif [[ "$REF_NAME" == world-id-gateway-v* ]]; then diff --git a/.github/workflows/prepare-oprf-node-release.yml b/.github/workflows/prepare-oprf-node-release.yml new file mode 100644 index 000000000..37277b11d --- /dev/null +++ b/.github/workflows/prepare-oprf-node-release.yml @@ -0,0 +1,32 @@ +name: Prepare OPRF Node Release + +on: + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + prepare-oprf-node-release: + name: Prepare OPRF Node Release + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v6 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9 + with: + toolchain: stable + + - name: Run release-plz release-pr + uses: release-plz/action@1528104d2ca23787631a1c1f022abb64b34c1e11 # v0.5.128 (https://github.com/release-plz/action/releases/tag/v0.5.128) + with: + command: release-pr + config: services/oprf-node/release-plz.toml + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/Cargo.lock b/Cargo.lock index e3e1e9d3d..d28ac7e12 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12559,7 +12559,7 @@ dependencies = [ [[package]] name = "world-id-oprf-node" -version = "0.1.0" +version = "0.2.0" dependencies = [ "alloy", "ark-bn254 0.5.0", diff --git a/Cargo.toml b/Cargo.toml index 78e117a96..a7d752c61 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -155,7 +155,7 @@ world-id-proof = { version = "0.11.0", path = "crates/proof" } world-id-registries = { version = "0.11.0", path = "crates/registries" } world-id-authenticator = { version = "0.11.0", path = "crates/authenticator" } world-id-primitives = { version = "0.11.0", path = "crates/primitives", default-features = false } -world-id-oprf-node = { version = "0.1.0", path = "services/oprf-node" } +world-id-oprf-node = { version = "0.2.0", path = "services/oprf-node" } world-id-test-utils = { path = "crates/test-utils" } world-id-services-common = { path = "services/common", version = "0.1.0" } world-id-relay = { path = "services/relay" } diff --git a/services/oprf-node/CHANGELOG.md b/services/oprf-node/CHANGELOG.md new file mode 100644 index 000000000..55172db1c --- /dev/null +++ b/services/oprf-node/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog + +All notable changes to `world-id-oprf-node` will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] diff --git a/services/oprf-node/Cargo.toml b/services/oprf-node/Cargo.toml index 9a1a857a0..78ad78322 100644 --- a/services/oprf-node/Cargo.toml +++ b/services/oprf-node/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "world-id-oprf-node" -version = "0.1.0" +version = "0.2.0" edition.workspace = true rust-version.workspace = true homepage.workspace = true repository.workspace = true license.workspace = true +publish = false [dependencies] alloy = { workspace = true, features = ["full", "rpc", "rpc-client-ws"] } diff --git a/services/oprf-node/README.md b/services/oprf-node/README.md new file mode 100644 index 000000000..497ceef4a --- /dev/null +++ b/services/oprf-node/README.md @@ -0,0 +1,16 @@ +# World ID OPRF Node + +The World ID OPRF Node is the protocol's OPRF service implementation. The +workspace package for the service is `world-id-oprf-node`. + +## Releases + +`world-id-oprf-node` is released independently from the published Rust crates: + +1. Trigger the `Prepare OPRF Node Release` GitHub Actions workflow manually. +2. Review and merge the generated release PR, which updates the package version + and [`CHANGELOG.md`](./CHANGELOG.md). +3. After the release PR lands on `main`, the `Publish OPRF Node Release` + workflow detects the version bump in `Cargo.toml`, creates the + `world-id-oprf-node-vX.Y.Z` tag and GitHub release, and publishes the + versioned container image while updating the `latest` tag. diff --git a/services/oprf-node/release-plz.toml b/services/oprf-node/release-plz.toml new file mode 100644 index 000000000..77293198f --- /dev/null +++ b/services/oprf-node/release-plz.toml @@ -0,0 +1,18 @@ +[workspace] +git_release_enable = true +git_release_latest = false +git_release_type = "auto" +pr_branch_prefix = "release-plz-oprf-node-" +pr_labels = ["release"] +release = false +release_always = false +publish = false +changelog_update = false + +[[package]] +name = "world-id-oprf-node" +release = true +publish = false +git_only = true +changelog_update = true +changelog_path = "services/oprf-node/CHANGELOG.md"