Skip to content
Open
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
8 changes: 8 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"changelog": ["@changesets/changelog-github", { "repo": "serverlessworkflow/editor" }],
"commit": false,
"fixed": [["@serverlessworkflow/*"]],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch"
}
6 changes: 6 additions & 0 deletions .changeset/setup-changeset.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@serverlessworkflow/i18n": minor
"@serverlessworkflow/diagram-editor": minor
---

Setup changeset for first minor release
32 changes: 32 additions & 0 deletions .github/actions/setup-ci/action.yml
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I created this composite action to avoid repetition between actions and make it easier to maintain

Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#
# Copyright 2021-Present The Serverless Workflow Specification Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: "Setup CI"
description: "Setup Node.js and pnpm for CI workflows"

runs:
using: "composite"
steps:
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
Comment thread
fantonangeli marked this conversation as resolved.
with:
node-version: 24

- name: Setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
with:
version: 10.31.0
cache: true
Comment thread
fantonangeli marked this conversation as resolved.
Comment thread
fantonangeli marked this conversation as resolved.
19 changes: 3 additions & 16 deletions .github/workflows/ci_build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,29 +45,16 @@ jobs:
- name: Checkout code
uses: actions/checkout@v6
Comment thread
fantonangeli marked this conversation as resolved.

- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: 24

- name: Setup pnpm
uses: pnpm/action-setup@v6
with:
version: 10.31.0
cache: true

- name: Check package versions
shell: bash
run: |
pnpm -r exec node -e "process.exit(require('./package.json').version === '0.0.0' ? 0 : 1)"
- name: Setup CI
uses: ./.github/actions/setup-ci

- name: Install dependencies
run: pnpm install ${{ github.event_name == 'pull_request' && github.event.pull_request.user.login == 'dependabot[bot]' && '--no-frozen-lockfile' || '' }}

- name: Install Playwright browsers
run: pnpm playwright:install:ci

- name: Check for dependency mismatches
- name: Check dependency and package version consistency
run: pnpm dependencies:check

- name: Build and test
Expand Down
12 changes: 2 additions & 10 deletions .github/workflows/ci_check_license_headers.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,8 @@ jobs:
- name: Checkout code
uses: actions/checkout@v6

- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: 24

- name: Setup pnpm
uses: pnpm/action-setup@v6
with:
version: 10.31.0
cache: false # without pnpm install there is no need for cache
- name: Setup CI
uses: ./.github/actions/setup-ci

- name: "Setup JDK 17"
uses: actions/setup-java@v5
Expand Down
49 changes: 49 additions & 0 deletions .github/workflows/prepare-release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#
# Copyright 2021-Present The Serverless Workflow Specification Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: "Release :: Prepare"

on:
workflow_dispatch:

permissions:
contents: write
pull-requests: write

jobs:
prepare-release:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Setup CI
uses: ./.github/actions/setup-ci

- name: Install dependencies
run: pnpm install

- name: Create Release Pull Request
uses: changesets/action@63a615b9cd06ba9a3e6d13796c7fbcb080a60a0b # v1.8.0
with:
version: pnpm changeset version
title: "chore: version packages"
commit: |
chore: version packages

Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
commitMode: github-api
createGithubReleases: false
Comment thread
fantonangeli marked this conversation as resolved.
61 changes: 61 additions & 0 deletions .github/workflows/publish-release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#
# Copyright 2021-Present The Serverless Workflow Specification Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

name: "Release :: Publish"

on:
pull_request:
types: [closed]
branches:
- main
- "*.x"

permissions:
contents: write
pull-requests: read
id-token: write

jobs:
publish:
if: |
github.repository == 'serverlessworkflow/editor' &&
github.event.pull_request.merged == true &&
github.event.pull_request.user.login == 'github-actions[bot]' &&
github.event.pull_request.title == 'chore: version packages' &&
startsWith(github.event.pull_request.head.ref, 'changeset-release/')
runs-on: ubuntu-latest
steps:
- name: Checkout release branch
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Comment thread
fantonangeli marked this conversation as resolved.
with:
Comment thread
fantonangeli marked this conversation as resolved.
fetch-depth: 0

- name: Setup CI
uses: ./.github/actions/setup-ci

- name: Install dependencies
run: pnpm install

- name: Install Playwright browsers
run: pnpm playwright:install:ci

- name: Build packages
run: pnpm build:prod

- name: Publish to npm
uses: changesets/action@63a615b9cd06ba9a3e6d13796c7fbcb080a60a0b # v1.8.0
with:
publish: pnpm changeset publish
Comment thread
fantonangeli marked this conversation as resolved.
20 changes: 19 additions & 1 deletion .syncpackrc.json
Copy link
Copy Markdown
Member Author

@fantonangeli fantonangeli May 21, 2026

Choose a reason for hiding this comment

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

I changed the rules to verify all the packages are with the same version and not just 0.0.0 like before.
This has been introduced this week in the last syncpack version (see JamieMason/syncpack#325 (comment)), many thanks @JamieMason for the update.

Original file line number Diff line number Diff line change
@@ -1,6 +1,24 @@
{
"$schema": "https://unpkg.com/syncpack@14.2.0/dist/schema.json",
"$schema": "./node_modules/syncpack/schema.json",
Comment thread
fantonangeli marked this conversation as resolved.
"customTypes": {
"packageVersion": {
"strategy": "version",
"path": "version"
}
},
"versionGroups": [
{
"label": "Ignore root package version",
"packages": ["serverless-workflow-editor"],
"dependencyTypes": ["local"],
Comment thread
fantonangeli marked this conversation as resolved.
Comment thread
fantonangeli marked this conversation as resolved.
"isIgnored": true
},
{
"label": "Package versions must be consistent across packages",
"packages": ["@serverlessworkflow/*"],
"dependencyTypes": ["packageVersion"],
"policy": "sameRange"
},
Comment thread
fantonangeli marked this conversation as resolved.
{
"label": "Use workspace protocol for local packages",
"dependencies": ["$LOCAL"],
Expand Down
19 changes: 16 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,22 @@ If you're unsure whether your use of agents/LLMs is acceptable — ask! We're ha
1. **Fork** the repository and create your branch from `main`.
2. **Commit** your changes with clear, descriptive messages.
3. **Verify** your changes by running the appropriate build and/or test commands for the packages you modified.
4. **Submit** a Pull Request (PR).
5. **DCO Sign-off**: As a CNCF project, all commits must be signed off (`git commit -s`) to certify the Developer Certificate of Origin.
6. **Review**: At least one maintainer must review and approve your PR before it is merged.
4. If your PR changes a package, run `pnpm changeset` and commit the generated `.changeset/*.md` file.
As an alternative you may prefer to compare against upstream explicitly:

```bash
pnpm changeset --since upstream/main
Comment thread
fantonangeli marked this conversation as resolved.
Comment thread
fantonangeli marked this conversation as resolved.
```

**Note:** If you don't have the `upstream` remote configured:

```bash
git remote add upstream https://github.com/serverlessworkflow/editor.git
```

5. **Submit** a Pull Request (PR).
6. **DCO Sign-off**: As a CNCF project, all commits must be signed off (`git commit -s`) to certify the Developer Certificate of Origin.
7. **Review**: At least one maintainer must review and approve your PR before it is merged.

---

Expand Down
58 changes: 58 additions & 0 deletions RELEASE_PROCESS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<!--
Copyright 2021-Present The Serverless Workflow Specification Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

# Release Process

## 1. Prepare Release

1. Go to: https://github.com/serverlessworkflow/editor/actions/workflows/prepare-release.yaml
2. Click **"Run workflow"**
3. Select the branch to release from:
- **`main`** - for normal releases (1.0.0, 1.1.0, 2.0.0)
- **`1.0.x`** - for patch releases on a previous release 1.x
4. Click **"Run workflow"**
5. A release PR with title "chore: version packages" with a version bump will be created by the CI

## 2. Review and Merge

1. Review the "chore: version packages" PR
2. Check version bumps and CHANGELOGs are correct
3. Merge the PR to start publishing the new release

## 3. Publish (no action needed)

On merge, the publish workflow automatically (no manual action needed):
Comment thread
fantonangeli marked this conversation as resolved.

- Builds and tests packages
- Publishes to npm
- Creates git tags and GitHub releases

Check CI run at: [https://github.com/serverlessworkflow/editor/actions/workflows/publish-release.yaml](https://github.com/serverlessworkflow/editor/actions/workflows/publish-release.yaml)
GH Releases: [https://github.com/serverlessworkflow/editor/releases](https://github.com/serverlessworkflow/editor/releases)
NPM publishing at: [https://www.npmjs.com/package/@serverlessworkflow/diagram-editor?activeTab=versions](https://www.npmjs.com/package/@serverlessworkflow/diagram-editor?activeTab=versions)

---

# Branching Model

## Normal Development (main branch):

- Development happens on `main`
- Run "Prepare Release" workflow from main branch

## Maintenance Releases (X.Y.x branches):

Created only when you need to patch an old version while `main` has moved forward.
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"name": "serverless-workflow-editor",
"version": "0.0.0",
"private": true,
"description": "CNCF Serverless Workflow Specification Visual Editor",
"homepage": "https://github.com/serverlessworkflow/editor",
Expand All @@ -14,6 +13,7 @@
},
"type": "module",
"scripts": {
"changeset": "changeset",
"dependencies:check": "syncpack lint",
"dependencies:fix": "syncpack fix",
"format": "oxfmt --config .oxfmtrc.json",
Expand All @@ -24,6 +24,8 @@
"playwright:install:ci": "playwright install --with-deps"
},
"devDependencies": {
"@changesets/changelog-github": "catalog:",
"@changesets/cli": "catalog:",
"@playwright/test": "catalog:",
"husky": "catalog:",
"lint-staged": "catalog:",
Expand Down
Loading
Loading