mirror of
https://git.bjxgj.com/xgj/xgj-actions.git
synced 2025-10-14 08:33:37 +08:00
feat: 添加 Web 项目发布构建的 GitHub Action,包括版本发布、Docker 镜像构建和推送,支持灵活的输入参数和环境变量配置,优化 CI/CD 流程。
This commit is contained in:
129
release-web/.release-it.js
Normal file
129
release-web/.release-it.js
Normal file
@@ -0,0 +1,129 @@
|
||||
const version = '${version}';
|
||||
|
||||
const isRelease = process.argv.includes('--release');
|
||||
const preRelease = process.argv.find(arg => arg.startsWith('--preRelease='));
|
||||
const preReleaseName = preRelease ? (preRelease.split('=')[1]) : '';
|
||||
// const tagMatchOpts = isRelease ? {} : { tagMatch: `v[0-9]*.[0-9]*.[0-9]*-${preReleaseName}.[0-9]*` };
|
||||
const tagMatchOpts = isRelease ? { tagExclude: `*[-]*` } : {};
|
||||
|
||||
console.log(`Release(${isRelease ? true : preReleaseName}): `, process.argv.join(' '));
|
||||
console.log(`TagMatch: ${tagMatchOpts}`);
|
||||
|
||||
module.exports = {
|
||||
plugins: {
|
||||
'@release-it/conventional-changelog': {
|
||||
infile: `CHANGELOG${isRelease ? '' : '-' + preReleaseName.toUpperCase()}.md`,
|
||||
preset: {
|
||||
name: "conventionalcommits",
|
||||
types: [
|
||||
{
|
||||
type: "feat",
|
||||
section: "新特性",
|
||||
},
|
||||
{
|
||||
type: "fix",
|
||||
section: "修复BUG",
|
||||
},
|
||||
{
|
||||
type: "perf",
|
||||
section: "性能优化",
|
||||
},
|
||||
{
|
||||
type: "revert",
|
||||
section: "回滚",
|
||||
},
|
||||
{
|
||||
type: "docs",
|
||||
section: "文档",
|
||||
},
|
||||
{
|
||||
type: "style",
|
||||
section: "代码格式",
|
||||
},
|
||||
{
|
||||
type: "refactor",
|
||||
section: "重构",
|
||||
},
|
||||
{
|
||||
type: "test",
|
||||
section: "测试",
|
||||
},
|
||||
{
|
||||
type: "build",
|
||||
section: "构建",
|
||||
},
|
||||
{
|
||||
type: "ci",
|
||||
section: "CI",
|
||||
},
|
||||
{
|
||||
type: "chore",
|
||||
section: "其他",
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
'release-it-gitea': {
|
||||
releaseTitle: "🎉 v${version}",
|
||||
releaseNotes: (t) => {
|
||||
const lines = t.changelog.split('\n');
|
||||
|
||||
const cateLines = lines.filter(line => line.startsWith('###') || line.startsWith('* '));
|
||||
|
||||
const cateMap = {};
|
||||
let currentCate = '';
|
||||
|
||||
cateLines.forEach(line => {
|
||||
if (line.startsWith('###')) {
|
||||
currentCate = line;
|
||||
cateMap[currentCate] = cateMap[currentCate] || [];
|
||||
} else {
|
||||
cateMap[currentCate].push(line);
|
||||
}
|
||||
});
|
||||
|
||||
return Object.entries(cateMap).map(([cate, lines]) => {
|
||||
return `${cate}\n\n${lines.map(line => `${line}`).join('\n')}\n`;
|
||||
}).join('\n');
|
||||
},
|
||||
assets: [
|
||||
{
|
||||
"path": "dist/**/*.map",
|
||||
"name": "sourcemap.zip",
|
||||
"type": "zip"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
git: {
|
||||
push: true,
|
||||
tagName: `v${version}`,
|
||||
commitsPath: '.',
|
||||
commitMessage: `chore: released version v${version} [no ci]`,
|
||||
requireCommits: false,
|
||||
requireCommitsFail: false,
|
||||
getLatestTagFromAllRefs: true,
|
||||
requireBranch: ['main', 'dev'],
|
||||
...tagMatchOpts,
|
||||
},
|
||||
npm: {
|
||||
publish: false,
|
||||
ignoreVersion: true,
|
||||
tag: preReleaseName ? preReleaseName : 'latest',
|
||||
versionArgs: ['--workspaces false'],
|
||||
},
|
||||
github: {
|
||||
release: false,
|
||||
releaseName: `Release v${version}`,
|
||||
autoGenerate: true,
|
||||
skipChecks: true,
|
||||
host: 'git.bjxgj.com'
|
||||
},
|
||||
hooks: {
|
||||
'before:release': [
|
||||
`echo '\${version}' > /tmp/last-version`,
|
||||
'git add --all',
|
||||
'npm run build'
|
||||
],
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user