Club Med Flow命令行工具为Git Flow,语义放出并发布Yarn工作空间包.
安装
全局安装 Git 流程命令 :
npm install --global @cmflow/cli
cm --help
当项目使用其发布插件或软件包艺术命令时, 将它安装为开发依赖:
npm install --save-dev @cmflow/cli
Git 流程命令
cm 提供启动、完成、推进、拉动、合并、重新定位和部署分支,以及释放和Jira助手的命令.
cm --help
cm start --help
cm finish --help
cm deploy --help
Jira的释放
jira-releases 列出一个Jira项目和组件的发布版本,生成交付说明,并可以将发布版本标记为发布.
cm jira-releases --project-id <PROJECT_KEY> --component <COMPONENT> --tag <VERSION> [--update] [--verbose]
这需要 JIRA_API, (中文(简体) ), JIRA_EMAIL 财务报告和审定财务报表 JIRA_TOKENDirectus 工作流程支持是可选的和使用 DIRECTUS_URL, (中文(简体) ), DIRECTUS_FLOW_ID 财务报告和审定财务报表 DIRECTUS_ACCESS_TOKEN。没有 --update 首先审查选定的版本.
Monorepo包裹文物
cm packages build 创建一个 Yarn-workspace 单列器的 npm- ready 文物。 它采取以下步骤:
- 清除已配置的输出目录.
- 运行已配置的构建脚本.
- 复制非私人工作空间包
dist/<package-name>。 。 。 . - 将软件包与发布版本一起写出,并重写内部依赖性.
cm packages build
cm packages build --version 3.4.0-alpha.3
默认输出为 dist私人工作空间从未被纳入文物或出版。 若为 --version ,当前根 package.json 保留版本.
cm packages build 由语义释放引用 prepare 步骤 cmflow 凸起法。 不要添加到发布命令中: 语义发布拥有出品生命周期.
使用专用脚本只用于校验本地或发布前的 CI 检查中生成的文物 :
{
"scripts": {
"artifacts:prepare": "yarn build && cm packages build"
}
}
flow 配置
在 root 中配置软件包构建和发布默认值 package.json数字 :
{
"workspaces": ["packages/*"],
"publishConfig": {
"registry": "https://registry.npmjs.org/"
},
"flow": {
"outputDir": "dist",
"buildCmd": "build",
"npmAccess": "public",
"npmDistTag": "next",
"npmFallbackDistTag": "latest",
"registries": [],
"skipNpmPublish": false,
"trustedPublishing": true
}
}
| 选项 | 默认 | 目的 |
|---|---|---|
outputDir | dist | 生成的软件包文物的目标目录 . |
buildCmd | build | 根包脚本运行于 cm packages build。 。 。 . |
npmAccess | public | npm 访问通过到 npm publish。 。 。 . |
npmDistTag | publishConfig.tag | 在生成的软件包列表中写入 Dist-tag . |
npmFallbackDistTag | latest | Npm 拒绝隐含时使用的标记 latest 标签. |
registries | [] | 需公布的其他登记册. |
skipNpmPublish | false | 构建释放文物但跳过 npm 发布. |
trustedPublishing | false | 启用 npm 信任的出版; 没有 npmjs 令牌被写入 .npmrc。 。 。 . |
工作空间软件包可能设置自己的 flow.registries 阵列来替换该软件包的根注册.
语义释放
使用 cmrelease 以运行语义发布 :
{
"scripts": {
"release": "cmrelease",
"release:dry_run": "cmrelease --dry-run"
}
}
对于工作空间发布,发布序列必须在 npm 发布前将发布分支和标记推出 :
import { defineConfig } from "@cmflow/cli";
export default defineConfig({
prepare: ["@cmflow/cli/semantic/core/prepare/bump-version", "@cmflow/cli/semantic/core/prepare/commit"],
publish: [
"@cmflow/cli/semantic/core/push-release",
"@cmflow/cli/semantic/core/publish-packages",
"@cmflow/cli/semantic/core/sync-repository"
],
npmPublish: false
});
push-release 推出分行并先放出标签. publish-packages 仅出版非私人产生的文物。 它支持npmjs、GitHub包和额外的登记册; trustedPublishing 使用 npm 基于 OIDC 的可信任的出版流程 。 在干燥运行期间,包被打包,但从未发布.
对于 CircleCI,在运行真实发行的每个任务中导出 OIDC 令牌 :
- run:
name: Cm Release
command: |
export NPM_ID_TOKEN=$(circleci run oidc get --claims '{"aud":"npm:registry.npmjs.org"}')
yarn release
每个 npm 软件包也必须配置一个 CircleCI 信任的出版商并允许 npm publish 行动。 Npm上配置的组织ID,项目ID,管道定义ID和VCS的出处必须完全匹配CircleCI项目. npm 的 CircleCI 信任的出版指南 详细列出所需数值.
Atlas
API 到后端目录工具单独发布 @cmflow/atlas。其项目配置为 atlas.config.ts;它不属于此寄存器或此 CLI 软件包.
发展
从单列波根:
yarn workspace @cmflow/cli build
yarn workspace @cmflow/cli test
yarn check
许可证
《麻省理工学院许可证》 版权 (c) 2016 - 今天 ClubMed
特此准许任何人免费获得本软件和相关文件文件("软件")的副本,不受限制地在软件中进行交易,包括不受限制地享有软件的使用、复制、修改、合并、出版、分发、分版和(或)销售的权利,并允许软件获得者这样做,但须符合下列条件: 1. 上述版权通知和许可通知应载入软件的所有副本或大部分。 软件是提供的"as is", 没有任何种类的恐惧, 释放或被卷入, 包括但不限制在 危机的保障, 证明一个特定的目的和无关. 任何索赔、索赔或其他负债,无论是合同、交易或其他行为,产生于、产生于或涉及软件或软件的使用或其他交易的行为,都不得作为担保.