Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 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
91 changes: 91 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Release Package

on:
workflow_dispatch:
inputs:
package:
description: "Which package to release"
required: true
type: choice
options:
- compact-tools-cli
- compact-tools-simulator
version_bump:
description: "Version bump type"
required: true
type: choice
options:
- patch
- minor
- major

permissions:
contents: write # Required to push commits and tags

env:
TURBO_TELEMETRY_DISABLED: 1

jobs:
release:
name: Release ${{ inputs.package }}
runs-on: ubuntu-24.04
environment: compact-npm-prod # Requires approval

env:
COMPACT_INSTALLER_URL: ${{ vars.COMPACT_INSTALLER_URL }}

steps:
- name: Check out code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
fetch-depth: 0

- name: Set package directory
id: pkg
run: |
case "${{ inputs.package }}" in
"compact-tools-cli")
echo "dir=cli" >> $GITHUB_OUTPUT
;;
"compact-tools-simulator")
echo "dir=simulator" >> $GITHUB_OUTPUT
;;
esac
- name: Setup Environment
uses: ./.github/actions/setup

- name: Run tests for package
run: yarn test --filter=@openzeppelin/${{ inputs.package }}

- name: Build package
run: yarn build --filter=@openzeppelin/${{ inputs.package }}

- name: Bump version
id: version
run: |
cd packages/${{ steps.pkg.outputs.dir }}
yarn version ${{ inputs.version_bump }}
NEW_VERSION=$(node -p "require('./package.json').version")
echo "new=$NEW_VERSION" >> $GITHUB_OUTPUT
echo "### Release Summary" >> $GITHUB_STEP_SUMMARY
echo "- Package: ${{ inputs.package }}" >> $GITHUB_STEP_SUMMARY
echo "- New version: $NEW_VERSION" >> $GITHUB_STEP_SUMMARY
echo "- Bump type: ${{ inputs.version_bump }}" >> $GITHUB_STEP_SUMMARY
- name: Verify package contents
run: |
cd packages/${{ steps.pkg.outputs.dir }}
yarn pack --dry-run
- name: Commit and tag version bump
uses: stefanzweifel/git-auto-commit-action@28e16e81777b558cc906c8750092100bbb34c5e3 # v7.0.0
with:
commit_message: "chore: release ${{ inputs.package }} v${{ steps.version.outputs.new }}"
file_pattern: "packages/${{ steps.pkg.outputs.dir }}/package.json"
tagging_message: "${{ inputs.package }}/v${{ steps.version.outputs.new }}"

- name: Publish to npm
run: |
yarn config set npmAuthToken "$NPM_TOKEN"
cd packages/${{ steps.pkg.outputs.dir }}
yarn npm publish --access public --provenance
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
17 changes: 17 additions & 0 deletions RELEASING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Releasing

1. Go to "Release Package" in Actions.
2. Click on the "Run workflow" dropdown menu.
3. Choose the package to release and the version bump type.
Following [SemVer](https://semver.org/):
- **Patch** - Backward compatible bug fixes.
- **Minor** - New functionality in a backward compatible way.
- **Major** - Breaking API changes.

4. A maintainer must approve the release before it proceeds.
5. Once approved, the CI will automatically:
- Run tests.
- Bump the version.
- Create a git tag.
- Publish the package to npm.
6. Once published, go to "Releases" and create a GitHub release using the generated tag.
1 change: 0 additions & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"name": "@openzeppelin/compact-tools-cli",
"private": true,
Copy link
Member

Choose a reason for hiding this comment

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

Not sure if we should still remove this. Because I think the name of the package will be a bit misleading, I was thinking to to leave this private and if we are we follow the proposal I had regarding copmact-tools, wdyt?

Copy link
Contributor

@emnul emnul Dec 16, 2025

Choose a reason for hiding this comment

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

Let's discuss this in a separate PR / Issue to avoid blocking it.

"description": "CLI for compiling and building Compact smart contracts",
"version": "0.0.1",
"keywords": [
Expand Down
1 change: 0 additions & 1 deletion packages/simulator/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"name": "@openzeppelin/compact-tools-simulator",
"private": true,
Copy link
Member

Choose a reason for hiding this comment

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

The same here, but more specifically for those packages I think its better to remove the -tools- word from the name to be @openzeppelin/compact-simulator wdyt?

"description": "Simulator for testing Compact smart contracts",
"version": "0.0.1",
"keywords": [
Expand Down