我试图从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 中得到值?
首先,你需要为你的环境变量设置一个前缀,并使用 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>