| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | 
							- const fs = require('fs');
 
- const _ = require('lodash');
 
- const github = require('@actions/github');
 
- const { Octokit } = require('@octokit/rest');
 
- const core = require('@actions/core');
 
- const { info, error } = core;
 
- const pathArr = process.env.CHANGELOG_PATH.replace(/ /g, '').split(',');
 
- const { owner, repo } = github.context.repo;
 
- const { ref: version } = github.context.payload;
 
- const versionNo = version.substr(1); // 'v1.0.0' -> '1.0.0'
 
- const genVersionChangeLog = (path, targetVersion) => {
 
-     const changelogRaw = fs.readFileSync(path, 'utf-8');
 
-     const lines = changelogRaw.split('\n');
 
-     let changeLogLines = [];
 
-     const stopPattern = /^#### /; // 前一个版本
 
-     let begin = false;
 
-     for (let i = 0; i < lines.length; i += 1) {
 
-         const line = lines[i];
 
-         if (begin && stopPattern.test(line)) {
 
-             break;
 
-         }
 
-         if (begin) {
 
-             changeLogLines.push(line);
 
-         }
 
-         if (!begin) {
 
-             if (line.startsWith('####')) {
 
-                 const versionReg = /.*((\d{1,2}\.){2}\d{1,2}(-\w+\.\d+)?)/;
 
-                 let result = versionReg.exec(line);
 
-                 begin = _.get(result, '1', '').trim().toLowerCase() === targetVersion;
 
-             }
 
-         }
 
-     }
 
-     return changeLogLines.join('\n');
 
- };
 
- async function main() {
 
-     try {
 
-         const versionChangelog = pathArr.map((path) => {
 
-             let changelog = genVersionChangeLog(path, versionNo);
 
-             return changelog;
 
-         }).join('\n---\n');
 
-         const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
 
-         await octokit.repos.createRelease({
 
-             owner,
 
-             repo,
 
-             tag_name: version,
 
-             name: version,
 
-             body: versionChangelog,
 
-             prerelease: version.includes('beta'),
 
-         });
 
-         info(`${version} released`);
 
-     } catch (err) {
 
-         error(err);
 
-     }
 
- }
 
- main();
 
 
  |