【问题标题】:Git multiple commits: Jenkins PipelineGit 多次提交:Jenkins Pipeline
【发布时间】:2017-09-17 14:44:08
【问题描述】:

我正在尝试使用以下代码在 Jenkins 管道中的单独提交中提交一些文件:

            sh '''
                git add $SOURCE_ENV/metadetail/current/*
                git commit -m "Updating Snapshot Metadata"
                git add $SOURCE_ENV/release/*
                git commit -m "Package for Release Branch"
                git push -u origin HEAD:$BRANCH_NAME
                git checkout master
                git checkout -b $BRANCH_NAMEfb
                git cherry-pick $BRANCH_NAME
                git push -u origin HEAD:$BRANCH_NAMEfb
            '''

这里的目的是在当前分支上进行 2 次单独的提交,从 master 创建一个新的功能分支,然后从原始分支中挑选第二个提交到新分支上。 这是在第一次提交后的 jenkins 构建失败,并显示以下消息:

+ git commit -m Updating Snapshot Metadata
HEAD detached from 4b8ea1e
Untracked files:
    dPATCH/release/

nothing added to commit but untracked files present
script returned exit code 1

我不确定发生了什么 - 我的理解是,只有“暂存”中的文件在提交时才重要,所以不确定为什么当我最初只在一个子集上运行 git add 时其他文件会被拾取的文件。有什么想法吗?

【问题讨论】:

    标签: git jenkins


    【解决方案1】:

    我不确定发生了什么

    正如我在“Adding git branch as a properties using Gradle on Jenkins”中提到的,Jenkins 默认会签出 HEAD,而不是分支,将其工作区设置为分离的 HEAD 模式(因此您的第一个提交输出)

    在开始提交之前,您需要确保签出分支。

    Jenkins issue 6856: Git builds with detached head no matter what:

    大多数流水线作业页面左侧的“流水线语法”链接将打开一个页面,您可以在其中对执行特定分支结帐所需的代码进行原型制作。
    使用该列表中的“checkout”选项(不是“git”选项),然后选择“Git”并为“Check out to specific local branch”添加“Additional Behaviours”。
    然后您可以设置一个特定的分支名称,或者您可以使用“**”表示它应该使用执行克隆的存储库中的分支名称。

    【讨论】:

    • 非常感谢,根据您的建议对问题进行了排序:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多