想用一个build.xml文件来比较git提交与Jenkins的区别

问题描述 投票:1回答:1

我试图从git-hub分支使用Jenkins进行Salesforce部署。我的需求是做delta部署,因此我需要比较分支中当前提交和之前的提交。根据提交的差异,我想创建一个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>

蚂蚁目标的输出如下。

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个回答
0
投票

首先,你需要为你的环境变量设置一个前缀,并使用 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>
© www.soinside.com 2019 - 2024. All rights reserved.