Skip to content

Commit

Permalink
feat: add a new output - "new-release-published"
Browse files Browse the repository at this point in the history
  • Loading branch information
cycjimmy committed Oct 17, 2019
1 parent ddd286b commit be8f403
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 3 deletions.
34 changes: 34 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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: |
Expand All @@ -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}}

26 changes: 24 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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: ...
```

3 changes: 3 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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'
11 changes: 10 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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);
}
Expand All @@ -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);
};

0 comments on commit be8f403

Please sign in to comment.