5
0
Fork 0
mirror of https://github.com/cycjimmy/semantic-release-action.git synced 2025-11-07 10:46:56 +00:00

feat: add a new output - "new-release-published"

This commit is contained in:
cycjimmy 2019-10-17 20:33:41 +08:00
parent ddd286be06
commit be8f403201
4 changed files with 71 additions and 3 deletions

View file

@ -16,8 +16,35 @@ jobs:
- name: Checkout
uses: actions/checkout@v1
- name: Setup Node.js with GitHub Package Registry
uses: actions/setup-node@v1
with:
node-version: 12
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
registry-url: 'https://npm.pkg.github.com'
scope: 'cycjimmy'
always-auth: true
- name: Setup Node.js with Npm Package Registry
uses: actions/setup-node@v1
with:
node-version: 12
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
registry-url: 'https://registry.npmjs.org'
always-auth: true
- name: Set .npmrc
env:
CI: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
echo "//npm.pkg.github.com/:_authToken=$GITHUB_TOKEN" > /home/runner/work/_temp/.npmrc
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> /home/runner/work/_temp/.npmrc
- name: Semantic Release
uses: cycjimmy/semantic-release-action@master
id: semantic
with:
branch: master
extra_plugins: |
@ -26,3 +53,10 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Publish To GitHub Package Registry
if: steps.semantic.outputs.new-release-published == 'true'
run: npm publish --@cycjimmy:registry='https://npm.pkg.github.com'
env:
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}

View file

@ -2,17 +2,39 @@
GitHub Action for [Semantic Release](https://github.com/semantic-release/semantic-release).
## Usage
* `branch`: [Optional] The branch for release. Default `"master"`.
* `extra_plugins`: [Optional] Extra plugins for pre-install. Default `""`.
* inputs:
* `branch`: [Optional] The branch for release. Default `"master"`.
* `extra_plugins`: [Optional] Extra plugins for pre-install. Default `""`.
* outputs:
* `new-release-published`: Whether a new release was published. `true` or `false`
A simple example
```yaml
steps:
- name: Semantic Release
uses: cycjimmy/semantic-release-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
```
An advanced example
```yaml
steps:
- name: Semantic Release
uses: cycjimmy/semantic-release-action@master
id: semantic
with:
branch: master
extra_plugins: |
@semantic-release/git
@semantic-release/changelog
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Do something when a new release published
if: steps.semantic.outputs.new-release-published == 'true'
run: ...
```

View file

@ -11,6 +11,9 @@ inputs:
extra_plugins:
description: 'Extra plugins for pre-install'
default: ''
outputs:
new-release-published:
description: "Whether a new release was published"
runs:
using: 'node12'
main: 'index.js'

View file

@ -3,10 +3,15 @@ const path = require('path');
const core = require('@actions/core');
const semanticRelease = require('semantic-release');
const OutputKey_NewReleasePublished = 'new-release-published';
const release = async () => {
const branch = core.getInput('branch', {required: false}) || 'master';
const extraPlugins = core.getInput('extra_plugins', {required: false}) || '';
// set outputs default
core.setOutput(OutputKey_NewReleasePublished, 'false');
// pre-install plugins
if (extraPlugins) {
const _extraPlugins = extraPlugins
@ -15,7 +20,7 @@ const release = async () => {
const {stdout, stderr} = await exec(`npm install ${_extraPlugins}`, {
cwd: path.resolve(__dirname)
});
console.log(stdout);
core.debug(stdout);
if (stderr) {
return Promise.reject(stderr);
}
@ -39,9 +44,13 @@ const release = async () => {
for (const release of releases) {
core.debug(`The release was published with plugin "${release.pluginName}".`);
}
// set outputs default
core.setOutput(OutputKey_NewReleasePublished, 'true');
};
module.exports = () => {
core.debug('Initialization successful');
release().catch(core.setFailed);
};