我们正在使用标准的git flow分支模型(develop,master ,release-,hotfix-等).
作为我们工作流程的一部分,我们希望通过jenkins设置"一键式"发布.
我在看jgitflow-maven-plugin.我可以设置这个插件来进行jenkins的一键式发布吗?如果是这样,配置选项有哪些?
特别是,我可以这样做吗?
Jenkins Job
Maven goals: release-start release-finish -Dsomething -Delse
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉它从最新的-SNAPSHOT版本自动构建,例如,如果版本是1.2.3-SNAPSHOT它将构建release-1.2.3.
否则,是否有maven插件根据git flow分支模型构建版本(即从中develop创建并创建一个名为的新版本分支release-x.y.z).
我最近完成了一个发布分支合并到master并开发使用jgitflow:release-finish.构建成功.
但现在我正在尝试使用创建一个新的分支jgitflow:releast-start.但它给出了以下错误.
[ERROR] Failed to execute goal external.atlassian.jgitflow:jgitflow-maven-plugin:1.0-m5.1:release-start (default-cli) on project <XXXXXXX>: Error starting release: Error starting release: a release branch [refs/remotes/origin/release/1.0.1] already exists. Finish that first! -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
我跑的时候问了下面的问题,我把jgitflow:release-start它输入为1.0.2.
What is the release version for "XXXXXXX"? (org.XXX.automation:XXXXXXX) [1.0.2]: 1.0.2
Run Code Online (Sandbox Code Playgroud)
但它仍然给出了以下错误.我很困惑.
问题:
maven-3 maven maven-release-plugin jgit jgitflow-maven-plugin
我是新手使用的jgitflow-maven-plugin.我的项目有许多不同的模块,彼此依赖.在我的develop分支上,所有子模块都有1.0.0-SNAPSHOT版本.
release-start由于快照依赖性,执行目标失败.我发现我可以使用该allowSnapshots=true选项来解决这个问题,但我不确定这是否是处理它的正确方法.
使用jgitflow和子模块的正确方法是什么?
我正在使用Maven JGit-Flow插件来自动化一些发布过程。不幸的是,当我尝试使用mvn jgitflow:release-start以下命令启动新版本时遇到了这个问题:
[ERROR] Failed to execute goal external.atlassian.jgitflow:jgitflow-maven-plugin:1.0-m5.1:release-start (default-cli) on project <myProjectName>: Error starting release: Error starting release: Working tree has untracked files
Run Code Online (Sandbox Code Playgroud)
但是我在这里(在主服务器上)也看不到和未跟踪的文件:
git status
On branch develop
Your branch is up-to-date with 'origin/develop'.
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
知道Maven JGit-Flow插件如何查找未跟踪的文件吗?
我有以下 jgitflow 插件并使用 Jenkins 执行自动发布。使用命令mvn --batch-mode jgitflow:release-start jgitflow:release-finish。然而,一切正常,我从未在 github 中看到任何标签。根据文档,除非使用 notags,否则我的所有版本都应该创建标签。知道出了什么问题吗?
<plugin>
<groupId>external.atlassian.jgitflow</groupId>
<artifactId>jgitflow-maven-plugin</artifactId>
<version>1.0-m4.3</version>
<configuration>
<flowInitContext>
<masterBranchName>release</masterBranchName>
<developBranchName>master</developBranchName>
<releaseBranchPrefix>release-</releaseBranchPrefix>
<versionTagPrefix>release-</versionTagPrefix>
</flowInitContext>
<noReleaseMerge>true</noReleaseMerge>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
分别使用 release-start 和 finish 也没有帮助。见下文:
mvn --batch-mode jgitflow:release-start -Dmaven.javadoc.skip=true -DskipTests
git push --tags
Everything up-to-date
Run Code Online (Sandbox Code Playgroud) 当我使用
mvn jgitflow:release-finish
Run Code Online (Sandbox Code Playgroud)
我注意到 release 分支合并到 master 分支。
问题:这是正确的方法吗?
抱歉,我的问题可能很幼稚,因为我是新手。我在想来自 release 分支的代码将合并到 develop 和 master 而不是 release --> master --> develop。
问题:如果我不希望这种情况发生,而是我应该能够从 master 进行 rebase 开发,该怎么办?