在 gitlab CICD 中自动化 sdk 版本控制和发布

问题描述 投票:0回答:1

场景:
我们的产品有 3 个主要部分,后端、sdk 和前端。
sdk 是作为 monorepo 环境中的一个包与后端一起开发的。
sdk供前端使用。
sdk 由后端人员构建并发布到我们私人 gitlab 服务器中的私人 npm 存储库。

我们有 3 个环境:调试、阶段、生产
sdk的不同功能是在不同的功能分支中开发的。

每个分支需要移动抛出一个周期才能完成。首先我们将分支合并到debug分支,这里我们需要自动化sdk的构建和发布过程。
这是我当前的 docker 文件

RUN cd packages/sdk && npm version patch && npm run build && npm publish --tag debug --verbose

这有效并且没问题,sdk 已正确发布,但版本未存储在任何地方,下次我们运行此脚本时,它会尝试创建相同的版本。我必须在本地手动更新版本并推送以备下次使用。

问题:如何让更新后的版本号保持不变?

我尝试将更新后的代码推送回gitlab服务器。但它不起作用,我被告知这不是最佳实践。

我正在考虑使用 gitlab 变量并使用 rest api 来更新它?但是我应该跳过

npm version
并编写自己的自定义脚本以从 gitlab 获取变量,更改它,运行
npm version MY_VERSION
并使用此 api 来更新存储的版本?

docker npm gitlab version cicd
1个回答
0
投票

这里有一个选项:我会完全删除任何硬编码版本,并使用 Git 标签将版本与软件提交联系起来。之后,您可以在构建过程中使用 CI 中的 git 命令来设置变量。

例如,您可以手动分配版本:

git tag -a -m "更新版本" git push -o ci.skip --跟随标签

在 CI 中获取版本:

VERSION=$(git tag --points-at $CI_COMMIT_SHORT_SHA)

在 CI (React) 中设置构建版本:

npm 运行构建 REACT_APP_VERSION=$VERSION

您还可以在任何部分设置此版本。

在此处查找自动版本控制示例的代码和文档:

https://gitlab.com/base58-public/ci/templates/-/blob/main/Jobs/Auto-Versioning.yml https://base58.hr/en/stories/automated-software-release-versioning

© www.soinside.com 2019 - 2024. All rights reserved.