feat: come a new action

This commit is contained in:
cycjimmy 2019-10-17 19:27:21 +08:00
parent d9823e84f7
commit b9ad41da60
17 changed files with 5822 additions and 2 deletions

2
src/_exec.js Normal file
View file

@ -0,0 +1,2 @@
const util = require('util');
module.exports = util.promisify(require('child_process').exec);

49
src/index.js Normal file
View file

@ -0,0 +1,49 @@
const exec = require('./_exec');
const path = require('path');
const {WritableStreamBuffer} = require('stream-buffers');
const core = require('@actions/core');
const semanticRelease = require('semantic-release');
const release = async () => {
const branch = core.getInput('branch', {required: false}) || 'master';
const extraPlugins = core.getInput('extra_plugins', {required: false}) || '';
// pre-install plugins
if (extraPlugins) {
const _extraPlugins = extraPlugins
.replace(/['"]/g, '')
.replace(/[\n\r]/g, ' ');
const {stdout, stderr} = await exec(`npm install ${_extraPlugins}`, {
cwd: path.resolve(__dirname)
});
console.log(stdout);
if (stderr) {
return Promise.reject(stderr);
}
}
const result = await semanticRelease({branch});
if (!result) {
core.debug('No release published.');
return;
}
const {lastRelease, commits, nextRelease, releases} = result;
core.debug(`Published ${nextRelease.type} release version ${nextRelease.version} containing ${commits.length} commits.`);
if (lastRelease.version) {
core.debug(`The last release was "${lastRelease.version}".`);
}
for (const release of releases) {
core.debug(`The release was published with plugin "${release.pluginName}".`);
}
};
module.exports = () => {
release().catch(core.setFailed);
};