const config = { branches: [ "release/+([0-9])?(.{+([0-9]),x}).x", "main", "next", "next-major", { name: "prerelease", prerelease: "pre", }, ], tagFormat: "${version}", ci: true, debug: true, plugins: [ [ "@semantic-release/commit-analyzer", { preset: "conventionalcommits", releaseRules: [ {type: "breaking", release: "major"}, {type: "feat", release: "minor"}, {type: "fix", release: "patch"}, {type: "refactor", release: "patch"}, {type: "security", release: "patch"}, {type: "style", release: "patch"}, {type: "test", release: false}, {type: "docs", release: false}, {type: "ci", release: false}, {type: "chore", release: false}, ], }, ], [ "@semantic-release/exec", { verifyReleaseCmd: 'echo "VERIFY_RELEASE_VERSION=${nextRelease.version}" >> $GITHUB_OUTPUT', publishCmd: 'echo "NEXT_RELEASE_VERSION=${nextRelease.version}" >> $GITHUB_OUTPUT', prepareCmd: [ "toml set --toml-path Cargo.toml package.version ${nextRelease.version}", "cargo update -p tycho-execution", ].join(" && "), }, ], [ "@semantic-release/release-notes-generator", { preset: "conventionalcommits", }, ], [ "@semantic-release/github", { successComment: "This ${issue.pull_request ? 'PR is included' : 'issue has been resolved'} in version ${nextRelease.version} :tada:", labels: true, releasedLabels: true, }, ], ], }; const ref = process.env.GITHUB_REF; const branch = ref.split("/").pop(); if ( config.branches.some( (it) => it === branch || (it.name === branch && !it.prerelease), ) ) { config.plugins.push("@semantic-release/changelog", [ "@semantic-release/git", { assets: [ "CHANGELOG.md", "Cargo.toml", "Cargo.lock", ], message: "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}", }, ]); } module.exports = config;