diff --git a/README.md b/README.md index 60c1952..14e7998 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ then make sure that you configure this in your `package.json` file: | extra_plugins | false | Extra plugins for pre-install. [[Details](#extra_plugins)] | | dry_run | false | Whether to run semantic release in `dry-run` mode. [[Details](#dry_run)] | | ci | false | Whether to run semantic release with CI support. [[Details](#ci)]
Support for **semantic-release above v16**. | +| unset_gha_env | false | Whether to unset the GITHUB_ACTIONS environment variable. | | extends | false | Use a sharable configuration [[Details](#extends)] | | working_directory | false | Use another working directory for semantic release [[Details](#working_directory)] | | tag_format | false | Specify format of tag (useful for monorepos) | @@ -264,6 +265,29 @@ steps: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} ``` +#### unset_gha_env +Setting this to true will unset the `GITHUB_ACTIONS` environment variable. This can be useful when wanting to validate things such as merging of a PR would create a valid release. + +```yaml +steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Temporarily merge PR branch + if: ${{ github.event_name == 'pull_request' }} + run: | + git config --global user.name github-actions + git config --global user.email github-actions@github.com + git merge --no-ff origin/${{ github.event.pull_request.head.ref }} --message "${{ github.event.pull_request.title }}" + - name: Semantic Release + uses: cycjimmy/semantic-release-action@v4 + with: + unset_gha_env: ${{ github.event_name == 'pull_request' }} + ci: ${{ github.event_name == 'pull_request' && false || '' }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} +``` + ### Outputs | Output Parameter | Description | |:-------------------------:|-----------------------------------------------------------------------------------------------------------------------------------| diff --git a/action.yml b/action.yml index 45a53a8..d513c7d 100644 --- a/action.yml +++ b/action.yml @@ -23,6 +23,9 @@ inputs: ci: required: false description: 'Whether to run semantic release with CI support (default: true). It will override the ci attribute in your configuration file' + unset_gha_env: + required: false + description: 'Whether to unset the GITHUB_ACTIONS environment variable. This can be useful when trying to run semantic-release as part of PR checks.' extends: required: false description: 'One or several sharable configurations, https://semantic-release.gitbook.io/semantic-release/usage/configuration#extends' diff --git a/src/handleOptions.js b/src/handleOptions.js index 829667f..7a42a49 100644 --- a/src/handleOptions.js +++ b/src/handleOptions.js @@ -126,8 +126,8 @@ exports.handleRepositoryUrlOption = () => { core.debug(`repository_url input: ${repositoryUrl}`); if (repositoryUrl) { - return { r: repositoryUrl }; + return { r: repositoryUrl }; } else { return {}; } -}; \ No newline at end of file +}; diff --git a/src/index.js b/src/index.js index a8c64c8..1b783b7 100644 --- a/src/index.js +++ b/src/index.js @@ -27,6 +27,11 @@ const release = async () => { await preInstall(core.getInput(inputs.extra_plugins)); await preInstall(core.getInput(inputs.extends)); + if (core.getInput(inputs.unset_gha_env) === 'true') { + core.debug('Unset GITHUB_ACTIONS environment variable'); + delete process.env.GITHUB_ACTIONS; + } + const semanticRelease = await import('semantic-release'); const result = await semanticRelease.default({ ...handleBranchesOption(), diff --git a/src/inputs.json b/src/inputs.json index 244af82..8cc96e9 100644 --- a/src/inputs.json +++ b/src/inputs.json @@ -5,6 +5,7 @@ "extra_plugins": "extra_plugins", "dry_run": "dry_run", "ci": "ci", + "unset_gha_env": "unset_gha_env", "extends": "extends", "working_directory": "working_directory", "tag_format": "tag_format",