问题标签 [semantic-release]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gitlab - 在 Gitlab CI 中运行语义发布时缺少插件
我很想使用语义发布来管理我们的语义版本控制。为此,我尝试将其集成到我们的 Gitlab CI 中。我遵循了一些示例并提供了必要的环境变量来将代码推送到 repo。当语义释放开始运行时,它会引发以下错误:
如您所见,它似乎加载了一些插件,但在这一步总是失败。我的 ci.yaml 看起来像这样:
我的 package.json:
和我的语义发布配置:
如果有人能把我推向正确的方向,我将不胜感激。我现在尝试了 2 个不同的物理 gitlab-runners,MAC 和错误都是一样的。
c# - 如何在不需要 npm 的情况下设置语义发布?
我有一个 C# 项目,并想为其添加语义版本控制。因此,每当我推送到main
分支时,我都想创建一个新版本并根据提交类型自动生成一个新版本号。我认为语义释放可以很好地完成这项工作,因为我已经将commitlint与husky一起使用。
对于复制:
- 在 Github 上创建一个新的存储库
- 在 repo 中创建一个新的 C# 项目(你可以跳过这一步)
- 运行
npm init -y
以设置 npm - 按照https://commitlint.js.org/#/guides-local-setup设置 commitlint 和 husky
- 为您的帐户创建一个新的个人访问令牌
- 将新的 Github 密码添加到您的存储库,为其命名
SEMANTIC_RELEASE
并添加访问令牌作为它的值 - 基于https://semantic-release.gitbook.io/semantic-release/usage/getting-started创建一个新的 Github 工作流
.
- 推送后,工作流应失败并显示以下错误消息
[2:51:48 PM] [semantic-release] › ✔ 插件“@semantic-release/github”的完成步骤“失败”一个 npm 令牌(https://github.com/semantic-release/npm/blob/ master/README.md#npm-registry-authentication)必须在 CI 环境的 NPM_TOKEN 环境变量中创建和设置。
请确保创建一个 npm 令牌 ( https://docs.npmjs.com/getting-started/working_with_tokens#how-to-create-new-tokens ) 并将其设置在 CI 环境的 NPM_TOKEN 环境变量中。令牌必须允许发布到注册表 https://registry.npmjs.org/。
AggregateError:SemanticReleaseError:未指定 npm 令牌。在 module.exports 的 module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/node_modules/@semantic-release/npm/lib/get-error.js:6:10) (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/node_modules/@semantic-release/npm/lib/set-npmrc-auth.js:45:31) 在 module.exports (/ home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/node_modules/@semantic-release/npm/lib/verify-auth.js:17:9) 在 verifyConditions (/home/runner/.npm /_npx/1561/lib/node_modules/semantic-release/node_modules/@semantic-release/npm/index.js:36:13)在异步验证器(/home/runner/.npm/_npx/1561/lib/node_modules/语义发布/lib/plugins/normalize.js:34:24) 在异步 /home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/pipeline.js:37:34 在异步承诺。所有(索引 0)在异步下一个(/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/node_modules/p-reduce/index.js:16:18)在/home/runner/。 npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/pipeline.js:54:11 在异步 Object.pluginsConf。[as verifyConditions] (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/index.js:80:11) 在异步运行 (/home/runner/.npm/_npx /1561/lib/node_modules/semantic-release/index.js:95:3) 在 async module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/index.js:260 :22) 在 async module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/cli.js:55:5) 错误:进程完成,退出代码为 1。npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/pipeline.js:54:11 在异步 Object.pluginsConf。[as verifyConditions] (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/index.js:80:11) 在异步运行 (/home/runner/.npm/_npx /1561/lib/node_modules/semantic-release/index.js:95:3) 在 async module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/index.js:260 :22) 在 async module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/cli.js:55:5) 错误:进程完成,退出代码为 1。npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/pipeline.js:54:11 在异步 Object.pluginsConf。[as verifyConditions] (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/index.js:80:11) 在异步运行 (/home/runner/.npm/_npx /1561/lib/node_modules/semantic-release/index.js:95:3) 在 async module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/index.js:260 :22) 在 async module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/cli.js:55:5) 错误:进程完成,退出代码为 1。
我不想发布到 npm 注册表,它应该只是创建一个新的发布版本。
我是否遗漏了某些东西,或者为我的项目语义发布了错误的工具?
node.js - 在 GitHub Actions 工作流程中未使用语义发布-monorepo 找到存储库
我正在创建一个 GitHub Actions 工作流来构建 npm 包并将其发布到 GitHub 包。repo 是一个带有多个包的 monorepo,所以我使用了 semantic-release-monorepo 工具。但是,发布步骤失败了,我不知道为什么。
我的 GitHub Actions 工作流文件如下(略删)
yarn publish-packages
运行一个脚本,该脚本执行 lerna 命令以进行语义释放
lerna exec --concurrency 1 -- npx --no-install semantic-release -e semantic-release-monorepo
我已确保每个包的 repo package.json 和 package.json 都具有正确的存储库 url https://github.com/owner/repo.git
,. 我的个人访问令牌有权回购、写入和删除包。
无论我更改什么配置,该步骤都会失败并显示以下消息:
命令“git push --dry-run --no-verify https://[secure]@github.com/xxx/xxx.git HEAD:develop”失败并显示错误消息远程:找不到存储库。26 致命:未找到存储库“https://github.com/xxx/xxx.git/”。
第二条消息是
EGITNOPERMISSION: '语义发布无法将版本标签推送到
develop
带有 URL 的远程 Git 存储库上 的分支https://[secure]@github.com/xxx/xxx.git
我尝试过的其他事情:
- 在阅读GH 文档“GitHub Packages only support scoped npm packages”后,将 scope="@xxx" 添加到 setup-node 步骤
- 根据语义发布文档,我尝试将 GH_TOKEN、GITHUB_TOKEN 和 NPM_TOKEN 设置为我的 PAT 或秘密中的 GITHUB_TOKEN 的每个组合。我相信文档说只支持 PAT。此外,不应要求 NPM_TOKEN,因为将 registry-url 与 setup-node 操作一起使用会创建一个
NODE_AUTH_TOKEN
默认使用的 .npmrc 文件。 - 这里有一个几乎类似的问题,但添加
.git
到他的存储库 url 似乎已经为他解决了这个问题 - Github 文档说我应该能够使用 PAT 或 GITHUB_TOKEN 作为 .npmrc 文件中的身份验证令牌,所以这不应该是问题
我浏览了有关语义发布、语义发布-monorepo、GitHub Actions 和 GitHub Packages 的文档。如果我需要包含任何其他信息,请告诉我。
semantic-release - GitHub - 使用 PR 中所有提交的语义发布版本说明
我希望能够让语义发布将所有提交消息从一个单独的分支合并到一个发行说明条目中。我们的工作流程如下:
- 使用 Angular 提交消息约定,所有开发提交都针对单独的分支进行。
- 当分支准备好发布时,会打开一个带有多个提交的 PR。
- PR 审核通过
- PR 被 squash 合并到 master 分支。
有没有办法可以从 PR 中的每个提交中收集消息并将其添加到该版本的发行说明中?如果需要,可以更改上述工作流程,只要它使我们能够创建实际概述 PR 中引入的所有更改的发行说明。
我们目前拥有的:
1.17.0 (2021-06-29)
特征:
- 添加功能 1 (#255) (8d9f509),关闭 #252 #276
我们想要拥有的:
1.17.0 (2021-06-29)
特征:
- 添加功能 1,关闭 #252 #276
- 添加功能 2,关闭 #177
- 添加功能 3
Bug修复:
- 修复 #188
- 解决 #192
这是一个私有企业 git repo,默认使用语义发布工作流创建。
git - 语义发布未创建新版本和更改日志未推送到 GitLab
我有以下问题:一旦我的管道启动并且应该通过语义发布发布版本,什么都不会发生。仅创建正确的标签。
我的.releaserc
样子是这样的:
我的舞台gitlab-ci.yml
是这样的:
正如我所说,一切都按预期进行。管道成功,日志中没有警告。无论如何,唯一发生的事情是标签创建正确。我没有新版本。而且我没有新的CHANGELOG.md
。我是否可能错过了管道或配置中的某些内容?
npm - Gitlab语义发布不使用私有注册表
我正在尝试使用语义发布发布到 gitlab 上的范围私有注册表,但我不断收到错误,因为它试图针对公共注册表而不是私有注册表进行身份验证。
这是我的设置(有些东西被遮住了)
包.json
.npmrc(authTokens 是具有完全访问权限的个人令牌)
.releaserc.json
我尝试了多种从本地运行它的方法,这会多次提示我输入用户名和密码(对于密码,我使用 gitlab 个人访问令牌)和从 CI/CD 使用:
.gitlab-ci.yaml
值得注意的是,CI/CD 上的确切步骤发生了很大变化,因为我一直在测试多种事情,比如在调用中不传递 var 并确保它们都直接在 gitlab 上设置但没有任何效果。
对于环境变量,我有NPM_TOKEN
, GL_TOKEN
, GITLAB_TOKEN
.
这是本地运行时的实际错误:
通过 CI/CD 运行时我得到相同的结果
不确定它是否有帮助,但这里也是文件夹结构:
知道这是配置问题还是我使用了不兼容版本的语义包?
编辑: 所以我意识到如果在 package.json 上我将私有字段从 false 更改为 true,那么我不再收到错误,并且语义释放实际上完成了所有操作,但是实际上没有在注册表上发布包。注意到它说跳过了实际的 npm 发布步骤,因为它被标记为私有。
semantic-release - 如何在语义发布中获取分支名称?
我正在尝试使用包含分支名称的标记格式创建语义发布。该.releaserc
文件看起来像这样:
我想自动获取标签格式的分支名称(即替换${want_branch_name_here}
为具有分支名称值的所需变量),有没有办法实现这一点?
git - 隔离的“语义发布”docker 容器可以工作,但在 GitLab CI 中需要 40 分钟
我有一个独立的 Gitlab 服务器和 Gitlab 运行器,它们缺乏互联网连接。我正在尝试在 Docker 容器中运行“语义版本控制”(一个 node.js 应用程序),以便它可以处理我的 GitLab 存储库的自动版本控制。
我必须提前将所有依赖项构建到 Docker 容器中,因为它们在运行时无法访问 Internet,并且我必须手动将容器移动到 Gitlab Runner 以进行手动 Docker 加载。
我已经解决了所有的令牌问题并将所有部分连接在一起,我终于得到了一个肯定的结果(有一个小版本的碰撞),但是在一个几乎空的存储库上运行需要 1660 秒(这个 repo 只是为了测试) .
占用最多时间和进程挂起的步骤是执行“npx semantic-release”时。从那里完成最多可能需要 40 分钟。但是,一旦 npx 语义发布步骤完成,分析 repo 的实际“工作”只需几秒钟。这让我认为这与 Dockerfile 的准备方式有关,而不是语义发布本身的配置问题。
这是下面花费时间最长的步骤:
$ npx 语义释放
npx:在 1660.75s 内安装了 575
可能是我的 Dockerfile 需要进一步检查。但是我对此很陌生,并且需要关于花费这么长时间的建议(我可以不让 dockerfile 提前安装 575 依赖项以进行语义发布吗?)
这是我的 Dockerfile(我构建为“语义:1 ”)
这是我的 gitlab-ci.yml
和我的 .releaserc.yml
谢谢!