Auto: npm 插件不会修改 package.json 中的版本

创建于 2020-10-21  ·  14评论  ·  资料来源: intuit/auto

描述错误

在预发布分支上运行(yarn/npx) auto shipit时, package.json不会更新。
在这种情况下, (yarn/npx) auto shipit --dry-run --quiet没有报告正确的版本号。
这会导致下游问题,因为版本号用于标记 docker 图像和其他工件。

再现

  1. 承诺next
  2. auto shipit在 Github Action 中运行
  3. auto正确发布到github
  4. 包 json 没有更新

预期行为

package.json 更新或auto shipit --dry-run根据预发布标签计算。

环境信息:
“当前版本”在这里已经是错误的,当前标签是 v0.2.0-next.11

yarn run v1.22.10
$ /home/rwa/Project/####/node_modules/.bin/auto info

Environment Information:

"auto" version: v9.59.1
"git"  version: v2.29.0
"node" version: v14.14.0

Project Information:

✔ Repository:      #####
✔ Author Name:     Robert Wawrzyniak
✔ Author Email:    robert.wawrzyniak@###.de
✔ Current Version: v0.2.0-next.10
✔ Latest Release:  v0.1.0 (​https://github.com/####/releases/tag/v0.1.0​)

✔ Labels configured on GitHub project

GitHub Token Information:

✔ Token:            [Token starting with 62de]
✔ Repo Permission:  admin
✔ User:             thuringia
✔ API:              undefined (​undefined​)
✔ Enabled Scopes:   repo
✔ Rate Limit:       4772/5000

Done in 3.39s.
Time: 0h:00m:04s

附加上下文
这可能与#1490有关?

这似乎是设计使然:
https://github.com/intuit/auto/blob/2f03089f43cc098ac2687c7ab3ca5fd8d2502a1c/plugins/npm/src/index.ts#L869
此处仅针对基本分支运行凹凸,但没有配置标志来更改此设置。

bug released

最有用的评论

啊,又一次投票给我尽快修复空运行行为。 下周末将考虑修复所有问题。 感谢您的反馈和使用auto

所有14条评论

这是设计使然。 如果版本已提交,则在合并到 master 时可能会导致合并冲突。 虽然创建了一个 git 标签

这个问题也在影响我。

这是设计使然。 如果版本已提交,则在合并到 master 时可能会导致合并冲突。 虽然创建了一个 git 标签

使用auto shipit确保package.json版本与 CI 部署保持同步的推荐方法是什么?

我不确定我是否完全理解用例@smithki。 @thuringia的用例是有道理的,他需要版本来更新其他东西,但我很犹豫要改变行为。 你能详细说明你想要完成什么吗?

对不起,我可能有误会。 从问题的措辞来看,我推测next分支不会收到更新的package.json版本,但是main分支会auto -这里的初学者) . 我的用例与原始问题相同,但具体来说:

我需要在 _build_ 时读取 NPM 库的package.json版本,以便可以将当前的package.json版本作为环境变量注入。 这意味着我需要在构建运行之前对package.json文件进行版本控制。 简单地导入package.json与我当前的 TypeScript 设置并不兼容,这取决于rootDirs中的tsconfig.json (并且package.json不包含在rootDirs ,因此是编译器错误,因此需要环境变量)。

我会看看我是否可以解决它,而不是我打算破坏这个问题的原始主题。

你能做自动做的事吗? https://github.com/intuit/auto/blob/master/packages/core/src/auto.ts#L306 -L310

不幸的是不是,因为代码旨在在客户端运行(如果我找不到解决方法,我将打开一个新问题)。

啊,又一次投票给我尽快修复空运行行为。 下周末将考虑修复所有问题。 感谢您的反馈和使用auto

@hipstersmoothie感谢您的快速回复:) 你总是让我感到惊讶

我现在找到了非常可靠的解决方法, auto shipit --dry-run --plugins git-tag 。 无论如何,以这种方式为预发布检查下一个版本实际上很有意义。
感谢您这么快就试运行改进。 如果您想尝试金丝雀版本,请告诉我。 我很乐意提供帮助。

无论如何,非常感谢auto ! 它让我的生活变得更轻松

@thuringia @smithki你能测试一下 v10 是否能解决你的问题吗?

@hipstersmoothie这在 v10 中运行良好👍
虽然它明显变慢了,或者说它需要运行shipit而没有--dry-run

谢谢你这么快把它弄出来!

不确定这是否是错误:
当我使用yarn add -D auto@next升级包时,对package.jsonyarn.lock的更改在运行auto shipit --dry-run后消失了。 v10 仍在我的node_modules因此看起来工作目录已重置。

不过,它明显更慢,或者更确切地说,它需要在没有 --dry-run 的情况下运行 Shipit。

我看看能不能改进但由于我们现在正在调用插件,它做了更多的工作来打印真正的下一个版本。

运行 auto shipit --dry-run 后,对 package.json 和 yarn.lock 的更改消失了

啊这是一个错误。 对于空运行,我跳过了干净检查但没有跳过 git reset

@thuringia你要发布什么类型的项目?

@hipstersmoothie我完全没问题,现在干运行速度变慢了。 没有那么大的区别。 我主要是说你觉得有变化,也许我应该在那里添加一个表情符号😄
不过,任何性能提升总是受欢迎的。

在这种情况下,它是一个混合项目,主要由一个 Java 应用程序和一些 lambda 表达式组成。 要创建一个版本,我必须:

  • 运行 gradle 以构建带有版本号的 jar
  • 将该 jar 打包到 docker 映像中,标记它并发布它
  • 使用无服务器框架部署 lambda,该框架使用版本号进行标记和配置容器

并不是auto的默认用例😂
通常,我将它用于具有更简化设置的 Node 或 React 项目,但在实际发布版本之前,我从不需要获取版本号,就像我需要这个特定项目一样


:rocket: 问题已在v10.0.0 :rocket:

此页面是否有帮助?
0 / 5 - 0 等级