场景:
我们的产品有 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
问题:如何让更新后的版本号保持不变?
我尝试将更新后的代码推送回gitlab服务器。但它不起作用,我被告知这不是最佳实践。
我正在考虑使用 gitlab 变量并使用 rest api 来更新它?但是我应该跳过
npm version
并编写自己的自定义脚本以从 gitlab 获取变量,更改它,运行 npm version MY_VERSION
并使用此 api 来更新存储的版本?
这里有一个选项:我会完全删除任何硬编码版本,并使用 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