我有一个具有固定依赖项的python 项目。由于第三方依赖项中的错误,在我的包中发现了错误。该依赖项已发布修复该错误的补丁。然而,根据语义版本控制,是否有协议为固定依赖项的每个补丁版本发布并发布一个版本?
我开始在我的工作场所使用 Jenkins。我们在 Teamcity 中使用语义版本控制,我想在 Jenkins 上实现相同的功能。当我将工件存储在构建文件夹 ($JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_NUMBER) 中时,我的问题出现了,因为 Jenkins 仅使用 build_number 来创建构建文件夹,因此当我必须重置 de Build_number 时,未来的工件将是存储在以前版本的文件夹中。
例如:
我存储了 build 1.3.1_develop.1,当我重置 Build_Number 时,下一个 build 应该是 1.3.2_develop.1,它应该存储在 build 1.3.1_develop.1 的文件夹 1 中
我的问题是,是否有人可以解释我如何处理 jenkins 上的自动语义版本控制,因为我们重置了内部版本号,我们增加了市长、次要和补丁号。
Jenkins 版本:2.89.4 作业--> 我们使用作业为前端编译 Vuejs 并使用 python 部署(如果这有帮助)
谢谢你的帮助。
想象一下,我有一个存储库github.com/user/golang-examples,并且我准备分别对其中的每个示例模块进行版本控制:
guthub.com/user/golang-examples\n /modA\n /go.mod\n /pkgA1\n /pkgA2\n\n /modB\n /go.mod\n /pkgB1\n /pkgB2\nRun Code Online (Sandbox Code Playgroud)\n(我知道习惯用法是 \xe2\x80\x9cone repo - one module\xe2\x80\x9d 但多模块项目也有用例,所以这不是讨论的主题)
\n同时,语义 git 标记(v1.0.0等)发生在repov2.0.0级别,而不是其子文件夹级别。例如,这使得无法单独标记模块
modA赶超,标签被推送到repo级别,目的是版本化modBv2.0.0modAmodB到 v2 时,可以\xe2\x80\x99tv2.0.0第二次推送相同的 git 标签到 version modB。如何按照 golang\xe2\x80\x99s 版本控制范式完成此任务?同样,这是关于多模块项目。将模块拆分为存储库的明显解决方案在这里有点不利,因为需要顶级存储库的总体 \xe2\x80\x9cexamples\xe2\x80\x9d 语义。
\n谢谢!
\n如何在我的应用程序中使用传递依赖项箱中的特征?
这是我遇到的问题的一个最小说明示例:
在 中Cargo.toml,我有:
[dependencies]
mersenne_twister = "1.1.1"
rand = "0.8.5"
Run Code Online (Sandbox Code Playgroud)
我的箱子取决于rand ^0.8.5和mersenne_twister ^1.1.1,它本身取决于rand >=0.3, <0.5:
my-crate ---> rand 0.8.5
|
|
---> mersenne_twister 1.1.1 ----> rand >= 0.3, < 0.5
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我想使用trait rand::Rng for mersenne_twister::MT19937. 但是当我尝试将这个特征纳入范围时,它显然没有被识别:
my-crate ---> rand 0.8.5
|
|
---> mersenne_twister 1.1.1 ----> rand >= 0.3, < 0.5
Run Code Online (Sandbox Code Playgroud)
我的猜测是,Rng导入的特征use rand::Rng;是来自 的特征rand 0.8.5,而不是实际实现的特征rand 0.4.6MT19937,即使它们的拼写方式相同,但它们是不同且不相关的特征,因此不能互换引用。
所以我有一些问题:
Rng …dependencies traits rust transitive-dependency semantic-versioning
看起来像一个非常基本的问题,但我无法找到一种"简单"的方法来做到这一点.
我想对character包含具有基本R功能的语义版本号的向量进行排序:
vsns <- c("1", "10", "1.1", "1.10", "1.2", "1.1.1",
"1.1.10", "1.1.2", "1.1.1.1", "1.1.1.10", "1.1.1.2")
Run Code Online (Sandbox Code Playgroud)
排序后应如下所示:
# [1] "1" "1.1" "1.1.1" "1.1.1.1" "1.1.1.2" "1.1.1.10"
# [7] "1.1.2" "1.1.10" "1.2" "1.10" "10"
Run Code Online (Sandbox Code Playgroud)
这不能得到我想要的东西,因为R只是按字母顺序排列整个事物:
sort(vsns)
# [1] "1" "1.1" "1.1.1" "1.1.1.1" "1.1.1.10" "1.1.1.2" "1.1.10"
# [8] "1.1.2" "1.10" "1.2" "10"
vsns[order(vsns)]
# [1] "1" "1.1" "1.1.1" "1.1.1.1" "1.1.1.10" "1.1.1.2" "1.1.10"
# [8] "1.1.2" "1.10" "1.2" "10"
Run Code Online (Sandbox Code Playgroud)
尝试规范化它(有点沿着这篇文章),但我想不出适合语义版本结构的匹配/替换方案:
tmp <- gsub("\\.", "", vsns)
# [1] "011" …Run Code Online (Sandbox Code Playgroud) 我在Java - Maven - Jenkins项目上使用语义版本控制,因此,每当完成不兼容的API更改时,应更改产品的主要版本.我正在寻找一种自动检测这种变化的方法,以便maven构建在发生时会失败(甚至自动增加版本).谷歌搜索让我在编写自己的maven enforcer plugin规则的轨道上,但我想询问是否有人知道任何可以提供帮助的工具(Jenkins插件或类似工具也可以工作).
有标准的 npm semver 版本比较库,但我有一些简单的逻辑来比较 semver 版本:
const versionA = '14.8.3';
const versionB = '15.1.1';
const versionC = '15.1.2';
const semver = require('semver');
const assert = require('assert');
const isGreater = (a, b) => {
const [majorA, minorA, patchA] = String(a).split('.').map(v => Number.parseInt(v));
const [majorB, minorB, patchB] = String(b).split('.').map(v => Number.parseInt(v));
if (majorA > majorB) {
return true;
}
if (majorB > minorA) {
return false;
}
if (minorA > minorB) {
return true;
}
if (minorB > minorA) {
return false; …Run Code Online (Sandbox Code Playgroud) 保存 package.json 依赖项时的最佳做法是什么?
例如,我看到很多依赖项不是固定的,例如:
"tslint": "~5.11.0"
Run Code Online (Sandbox Code Playgroud)
我希望有固定的依赖项,以便将来新开发人员加入团队时不会改变。
我对 package-lock.json 和 shrinkwrap 知之甚少,但我不确定这方面的“最佳实践”。在这种情况下是一个 Angular 应用程序,但它可以是一切。例如,将 package-lock.json 放在 repo 上会导致过去出现一些问题(我知道!推送它是最佳实践!)
有什么想法吗?
如果一个库同时支持 Python 2 和 3,并且我想弃用对 Python 2 的支持,我应该修改 SemVer 的哪个部分,主要还是次要?
我从来没有使用过 shell (bash),但在脚本中发现了一些错误,我用来增加版本。脚本工作正常,直到这种情况
version=1.27.9
echo $version | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{if(length($NF+1)>length($NF))$(NF-1)++; $NF=sprintf("%0*d", length($NF), ($NF+1)%(10^length($NF))); print}'
1.28.0 <-- result, but I need 1.27.10
Run Code Online (Sandbox Code Playgroud)
在这种情况下new_version将等于1.28.0。如何更改此脚本以避免增加 MINOR 编号?对于这种情况,我期待1.27.10
我没有shell经验,所以不知道从哪里开始。我在这里找到了这个脚本,在 SO 上并使用它。请帮我解决我的问题。先感谢您。
dependencies ×2
jenkins ×2
node.js ×2
awk ×1
bash ×1
go-modules ×1
java ×1
javascript ×1
maven ×1
npm ×1
package.json ×1
python ×1
r ×1
rust ×1
shell ×1
sorting ×1
traits ×1
versioning ×1