diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 19fbc842..5c4c315b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -76,7 +76,13 @@ jobs: name: Semantic Release runs-on: ubuntu-latest needs: pre-release-tests - if: "!startsWith(github.event.head_commit.message, 'chore(release):')" + # Prevent duplicate execution when semantic-release creates chore(release) commit + # IMPORTANT: If .releaserc.cjs message format changes, update this condition + if: | + !( + github.event.head_commit.author.name == 'github-actions[bot]' && + startsWith(github.event.head_commit.message, 'chore(release):') + ) outputs: new_release_published: ${{ steps.semantic.outputs.new_release_published }} @@ -142,10 +148,18 @@ jobs: name: Merge to main needs: semantic-release runs-on: ubuntu-latest + # Execute merge when: + # 1. semantic-release created a new release, OR + # 2. This is a re-triggered run from semantic-release's chore(release) commit if: | always() && - (needs.semantic-release.outputs.new_release_published == 'true' || - startsWith(github.event.head_commit.message, 'chore(release):')) + ( + needs.semantic-release.outputs.new_release_published == 'true' || + ( + github.event.head_commit.author.name == 'github-actions[bot]' && + startsWith(github.event.head_commit.message, 'chore(release):') + ) + ) steps: - name: Checkout diff --git a/.releaserc.cjs b/.releaserc.cjs index c040cbd4..ce8af698 100644 --- a/.releaserc.cjs +++ b/.releaserc.cjs @@ -54,6 +54,10 @@ module.exports = { 'CHANGELOG.md', 'UnityMCPServer/Packages/unity-mcp-server/package.json' ], + // IMPORTANT: Changing this message format requires updating .github/workflows/release.yml + // The workflow uses this format to detect and skip duplicate executions: + // - semantic-release job: skips when message starts with 'chore(release):' + // - merge-to-main job: executes when message starts with 'chore(release):' message: 'chore(release): ${nextRelease.version}\n\n${nextRelease.notes}' } ], diff --git a/CHANGELOG.md b/CHANGELOG.md index f69bed88..6835c3bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [2.40.1](https://github.com/akiojin/unity-mcp-server/compare/v2.40.0...v2.40.1) (2025-11-18) + + +### Bug Fixes + +* **ci:** improve release workflow duplicate execution prevention ([241cf79](https://github.com/akiojin/unity-mcp-server/commit/241cf797c4bb8b2e88a034d09c6ab2b5eca012c1)) + ## [2.40.0](https://github.com/akiojin/unity-mcp-server/compare/v2.39.2...v2.40.0) (2025-11-18) diff --git a/UnityMCPServer/Packages/unity-mcp-server/package.json b/UnityMCPServer/Packages/unity-mcp-server/package.json index 6e488af1..0afa0335 100644 --- a/UnityMCPServer/Packages/unity-mcp-server/package.json +++ b/UnityMCPServer/Packages/unity-mcp-server/package.json @@ -1,7 +1,7 @@ { "name": "com.akiojin.unity-mcp-server", "displayName": "Unity MCP Server", - "version": "2.40.0", + "version": "2.40.1", "unity": "6000.0", "description": "Unity MCP Server bridge and tooling for AI-assisted development (screenshots, video capture, scene analysis, input automation).", "keywords": [ diff --git a/mcp-server/package.json b/mcp-server/package.json index 7c65a976..598b086f 100644 --- a/mcp-server/package.json +++ b/mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "@akiojin/unity-mcp-server", - "version": "2.40.0", + "version": "2.40.1", "description": "MCP server and Unity Editor bridge — enables AI assistants to control Unity for AI-assisted workflows", "type": "module", "main": "src/core/server.js",