【问题标题】:Would like to compare git commit differences from Jenkins using a build.xml file想使用 build.xml 文件比较与 Jenkins 的 git commit 差异
【发布时间】:2020-05-31 18:35:48
【问题描述】:

我正在尝试使用来自 git-hub 分支的 Jenkins 进行 Salesforce 部署。我需要进行增量部署,因此我需要比较分支中的当前提交和之前的提交。基于提交差异,我想创建一个 src 文件夹,其中包含在两次提交之间更改的文件。我正在尝试使用 env.GIT_COMMIT 和 env.GIT_PREVIOUS_SUCCESSFUL_COMMIT 收集当前和以前的提交,方式如下:

<macrodef name="gitDiff">
		<sequential>
			<exec executable="git" outputproperty="git.diff">
				<arg value="diff" />
				<arg value="env.GIT_COMMIT" />
				<arg value="env.GIT_PREVIOUS_SUCCESSFUL_COMMIT" />
			</exec>
			<echo message="Git difference is ${git.diff}."/>
		</sequential>
</macrodef>

当我尝试打印当前和之前的提交时,我没有得到任何值。

<echo>Current GIT Commit : ${env.GIT_COMMIT}</echo>
<echo>Previous Known Successful GIT Commit : ${env.GIT_PREVIOUS_SUCCESSFUL_COMMIT}</echo>

ant 目标的输出如下:

Property "env.GIT_COMMIT" has not been set
[echo] Current GIT Commit : ${env.GIT_COMMIT}
Property "env.GIT_PREVIOUS_SUCCESSFUL_COMMIT" has not been set
[echo] Previous Known Successful GIT Commit : ${env.GIT_PREVIOUS_SUCCESSFUL_COMMIT}

关于如何获取 env.GIT_COMMIT env.GIT_PREVIOUS_SUCCESSFUL_COMMIT 中的值的任何建议

【问题讨论】:

    标签: git jenkins github ant


    【解决方案1】:

    首先,您需要使用property 任务为您的环境变量设置一个前缀。

    <property environment="env" />
    

    另一个问题是你的 git exec 任务中的环境变量被设置为文字而不是属性引用。您需要使用${} 语法:

    <macrodef name="gitDiff">
        <sequential>
            <exec executable="git" outputproperty="git.diff">
                <arg value="diff" />
                <arg value="${env.GIT_COMMIT}" />
                <arg value="${env.GIT_PREVIOUS_SUCCESSFUL_COMMIT}" />
            </exec>
            <echo message="Git difference is ${git.diff}."/>
        </sequential>
    </macrodef>
    

    【讨论】:

    • 感谢您回复奥斯汀。是的,我错过了提及环境属性。
    猜你喜欢
    • 2021-04-23
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 2013-04-02
    相关资源
    最近更新 更多