在 Gitlab CI 中运行语义发布时缺少插件

Chr*_*lus 5 continuous-integration gitlab gitlab-ci semantic-release

我很想使用语义发布来管理我们的语义版本控制。为此,我尝试将其集成到我们的 Gitlab CI 中。我遵循了一些示例并提供了将代码推送到存储库所需的环境变量。当语义释放开始运行时,它会抛出以下错误:

\n
$ yarn semantic-release\nyarn run v1.22.10\nwarning package.json: No license field\n$ /Users/vision-ci/builds/dFCxNLEA/0/Christoph.Griehl/semantic-versioning/node_modules/.bin/semantic-release\n[11:28:47 AM] [semantic-release] \xe2\x80\xba \xe2\x84\xb9  Running semantic-release version 17.4.3\n[11:28:47 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "verifyConditions" from "@semantic-release/changelog"\n[11:28:47 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "verifyConditions" from "@semantic-release/git"\n[11:28:48 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "verifyConditions" from "@semantic-release/gitlab"\n[11:28:48 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "analyzeCommits" from "@semantic-release/commit-analyzer"\n[11:28:48 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "generateNotes" from "@semantic-release/release-notes-generator"\n[11:28:48 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "prepare" from "@semantic-release/changelog"\n[11:28:48 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "prepare" from "@semantic-release/git"\n[11:28:48 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "publish" from "@semantic-release/gitlab"\n[11:28:48 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "addChannel" from "@semantic-release/npm"\n[11:28:48 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "addChannel" from "@semantic-release/github"\n[11:28:48 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "success" from "@semantic-release/github"\n[11:28:48 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Loaded plugin "fail" from "@semantic-release/github"\n[11:28:50 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Run automated release from branch somebranch on repository https://gitlab-ci-token:[secure]@gitlab.wabo.run/Christoph.Griehl/semantic-versioning.git\n[11:28:50 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Allowed to push to the Git repository\n[11:28:50 AM] [semantic-release] \xe2\x80\xba \xe2\x84\xb9  Start step "verifyConditions" of plugin "@semantic-release/changelog"\n[11:28:50 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Completed step "verifyConditions" of plugin "@semantic-release/changelog"\n[11:28:50 AM] [semantic-release] \xe2\x80\xba \xe2\x84\xb9  Start step "verifyConditions" of plugin "@semantic-release/git"\n[11:28:50 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Completed step "verifyConditions" of plugin "@semantic-release/git"\n[11:28:50 AM] [semantic-release] \xe2\x80\xba \xe2\x84\xb9  Start step "verifyConditions" of plugin "@semantic-release/gitlab"\n[11:28:50 AM] [semantic-release] [@semantic-release/gitlab] \xe2\x80\xba \xe2\x84\xb9  Verify GitLab authentication (https://gitlab.wabo.run/api/v4)\n[11:28:51 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x94  Completed step "verifyConditions" of plugin "@semantic-release/gitlab"\n[11:28:51 AM] [semantic-release] \xe2\x80\xba \xe2\x84\xb9  No git tag version found on branch somebranch\n[11:28:51 AM] [semantic-release] \xe2\x80\xba \xe2\x84\xb9  No previous release found, retrieving all commits\n[11:28:51 AM] [semantic-release] \xe2\x80\xba \xe2\x84\xb9  Found 59 commits since last release\n[11:28:51 AM] [semantic-release] \xe2\x80\xba \xe2\x84\xb9  Start step "analyzeCommits" of plugin "@semantic-release/commit-analyzer"\n[11:28:51 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x96  Failed step "analyzeCommits" of plugin "@semantic-release/commit-analyzer"\n[11:28:51 AM] [semantic-release] \xe2\x80\xba \xe2\x9c\x96  An error occurred while running semantic-release: Error: Cannot find module 'conventional-changelog-conventionalcommits'\nRequire stack:\n- /Users/vision-ci/builds/[secure]/0/Christoph.Griehl/semantic-versioning/noop.js\n    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:941:15)\n    at resolveFileName (/Users/vision-ci/builds/[secure]/0/Christoph.Griehl/semantic-versioning/node_modules/resolve-from/index.js:29:39)\n    at resolveFrom (/Users/vision-ci/builds/[secure]/0/Christoph.Griehl/semantic-versioning/node_modules/resolve-from/index.js:43:9)\n    at module.exports (/Users/vision-ci/builds/[secure]/0/Christoph.Griehl/semantic-versioning/node_modules/resolve-from/index.js:46:47)\n    at module.exports (/Users/vision-ci/builds/[secure]/0/Christoph.Griehl/semantic-versioning/node_modules/import-from/index.js:4:55)\n    at module.exports (/Users/vision-ci/builds/[secure]/0/Christoph.Griehl/semantic-versioning/node_modules/@semantic-release/commit-analyzer/lib/load-parser-config.js:22:67)\n    at analyzeCommits (/Users/vision-ci/builds/[secure]/0/Christoph.Griehl/semantic-versioning/node_modules/@semantic-release/commit-analyzer/index.js:29:24)\n    at validator (/Users/vision-ci/builds/[secure]/0/Christoph.Griehl/semantic-versioning/node_modules/semantic-release/lib/plugins/normalize.js:34:30)\n    at /Users/vision-ci/builds/[secure]/0/Christoph.Griehl/semantic-versioning/node_modules/semantic-release/lib/plugins/pipeline.js:37:40\n    at next (/Users/vision-ci/builds/[secure]/0/Christoph.Griehl/semantic-versioning/node_modules/p-reduce/index.js:17:9) {\n  code: 'MODULE_NOT_FOUND',\n  requireStack: [\n    '/Users/vision-ci/builds/[secure]/0/Christoph.Griehl/semantic-versioning/noop.js'\n  ],\n  pluginName: '@semantic-release/commit-analyzer'\n}\nError: Cannot find module 'conventional-changelog-conventionalcommits'\n
Run Code Online (Sandbox Code Playgroud)\n

正如您所看到的,它似乎加载了一些插件,但在这一步总是失败。\n我的 ci.yaml 如下所示:

\n
release:\n  stage: release\n  tags:\n    - wandelbots-web\n  script:\n    - yarn\n    - env\n    - yarn semantic-release\n  except:\n    refs:\n      - tags\n    variables:\n      - $CI_COMMIT_TITLE =~ /^RELEASE:.+$/\n
Run Code Online (Sandbox Code Playgroud)\n

我的 package.json:

\n
  "devDependencies": {\n    "@semantic-release/changelog": "^5.0.1",\n    "@semantic-release/commit-analyzer": "^8.0.1",\n    "@semantic-release/git": "^9.0.0",\n    "@semantic-release/gitlab": "^6.1.0",\n    "@semantic-release/npm": "^7.1.3",\n    "@semantic-release/release-notes-generator": "^9.0.2",\n    "semantic-release": "^17.4.3",\n    "semantic-release-slack-bot": "^2.1.1"\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

和我的语义发布配置:

\n
branches: ['master', 'somebranch']\nci: true\ndebug: true\ndryRun: false\ntagFormat: '${version}'\n\n# Global plugin options (will be passed to all plugins)\npreset: 'conventionalcommits'\ngitlabUrl: 'https://gitlab.OURREPOURL/' # your gitlab url\nslackWebhook: 'MYSLACKURL' # if you need slack notifies\n\n# Responsible for verifying conditions necessary to proceed with the release:\n# configuration is correct, authentication token are valid, etc...\nverifyConditions:\n  - '@semantic-release/changelog'\n  - '@semantic-release/git'\n  - '@semantic-release/gitlab'\n  # - 'semantic-release-slack-bot'\n\n# Responsible for determining the type of the next release (major, minor or patch).\n# If multiple plugins with a analyzeCommits step are defined, the release type will be\n# the highest one among plugins output.\n# Look details at: https://github.com/semantic-release/commit-analyzer#configuration\nanalyzeCommits:\n  - path: '@semantic-release/commit-analyzer'\n\n\n# Responsible for generating the content of the release note.\n# If multiple plugins with a generateNotes step are defined,\n# the release notes will be the result of the concatenation of each plugin output.\ngenerateNotes:\n  - path: '@semantic-release/release-notes-generator'\n    writerOpts:\n      groupBy: 'type'\n      commitGroupsSort: 'title'\n      commitsSort: 'header'\n    linkCompare: true\n    linkReferences: true\n\n# Responsible for preparing the release, for example creating or updating files\n# such as package.json, CHANGELOG.md, documentation or compiled assets\n# and pushing a commit.\nprepare:\n  - path: '@semantic-release/changelog'\n  - path: '@semantic-release/git'\n    message: 'RELEASE: ${nextRelease.version}'\n    assets: ['CHANGELOG.md']\n\n# Responsible for publishing the release.\npublish:\n  - path: '@semantic-release/gitlab'\n\nsuccess:\n  # - path: 'semantic-release-slack-bot'\n  #   notifyOnSuccess: true\n  #   markdownReleaseNotes: false\n\nfail:\n  # - path: 'semantic-release-slack-bot'\n  #   notifyOnFail: true\n\n
Run Code Online (Sandbox Code Playgroud)\n

如果有人能将我推向正确的方向,我将非常感激。我现在已经尝试了 2 个不同的物理 gitlab-runner,MAC 和错误都是相同的。

\n

L. *_*enz 3

您将“conventionalcommits”定义为提交消息分析器的预设。为了使用此预设,您必须将其包含到您的(开发)依赖项中。这至少是根据 npm 错误消息的错误:“找不到模块‘conventional-changelog-conventionalcommits’。

只需将其添加到您的(开发)依赖项中即可:

yarn add -D conventional-changelog-conventionalcommits
Run Code Online (Sandbox Code Playgroud)

或者

npm i --save-dev conventional-changelog-conventionalcommits
Run Code Online (Sandbox Code Playgroud)

应该可以解决你的问题。

这是该包的存储库链接。

https://github.com/conventional-changelog/conventional-changelog

我希望这将有助于解决您的问题!