想使用 build.xml 文件比较 git 与 Jenkins 的提交差异

Would like to compare git commit differences from Jenkins using a build.xml file

我正在尝试使用 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

首先,您需要使用 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>