“ jenkins ci ”系列都是关于创建用于构建项目或运行测试的作业的有用技术和方法。有时需要所有的冒烟测试定期运行并且是绿色的。但是,总会有新的发展,并且可能会在测试中引入错误。大多数时候,只有当您 100% 确定新更改不会导致构建中断或某些意外故障时,您才希望运行这些测试。这种情况下的解决方案是通过特定的稳定变更集编号下载测试源。
通过特定的 tfs 变更集获取源代码
从 tfs 下载代码的默认方式是使用 源代码管理 选项卡。 team foundation server 选项是通过安装 team foundation server 插件添加的 。
但是,如果您使用过该插件,您就会知道无法将其配置为通过特定的变更集编号下载源代码。所以要通过特定的变更集下载源代码,应该添加一个新的 Windows 批处理命令。
在新添加的框中,应添加以下命令。
%tfs% workspaces -format:brief -server:{your-tfs-team-project-collection-url}
%tfs% workspace -new hudson-%job_name%-master;{your-domain-user-name} -noprompt -server:{your-tfs-team-project-collection-url}
%tfs% workfold -map $/{tfs-path-to-your-sln} c:\jenkins\jobs\%job_name%\workspace\ -workspace:hudson-%job_name%-master -server:{your-tfs-team-project-collection-url}
%tfs% get $/{tfs-path-to-your-sln} -force -recursive -version:%changesetnumber% -noprompt
%tfs% history $/{tfs-path-to-your-sln} -recursive -stopafter:1 -noprompt -version:%changesetnumber% -format:brief -server:{your-tfs-team-project-collection-url}
您只需要用您的信息更改大括号“{}”内的代码段。该代码将使用您的 jenkins 作业的名称 创建 一个 新的 tfs 工作区 。接下来它将 生成 一个 映射 到您的 tfs 项目路径 到 本地文件夹 。最后,它将通过 特定的变更集编号 下载 源代码 。它通过参数 %changesetnumber% 传递给命令。因此您需要创建一个名为 changesetnumber 的字符串类型的新作业参数。
获取最新代码windows批处理命令
可以使用类似的命令来获取最新的源代码。
%tfs% workspaces -format:brief -server:{your-tfs-team-project-collection-url}
%tfs% workspace -new hudson-%job_name%-master;{your-domain-user-name} -noprompt -server:{your-tfs-team-project-collection-url}
%tfs% workfold -map $/{tfs-path-to-your-sln} c:\jenkins\jobs\%job_name%\workspace\ -workspace:hudson-%job_name%-master -server:{your-tfs-team-project-collection-url}
%tfs% get $/{tfs-path-to-your-sln} -force -recursive -version:%changesetnumber% -noprompt
%tfs% history $/{tfs-path-to-your-sln} -recursive -stopafter:1 -noprompt -version:%changesetnumber% -format:brief -server:{your-tfs-team-project-collection-url}
这些命令是相同的,只是有一点不同——缺少 %changesetnumber% 参数。
结合获取最新代码并通过特定的变更集编号获取
如果你想创建一个多用途的 jenkins 作业,能够以两种模式运行 - 获取最新版本并通过特定的变更集编号获取。如果 %changesetnumber% 留空,将触发第一种模式。为此,需要对前面提到的命令进行一些小的调整。
%tfs% workspaces -format:brief -server:{your-tfs-team-project-collection-url}
%tfs% workspace -new hudson-%job_name%-master;{your-domain-user-name} -noprompt -server:{your-tfs-team-project-collection-url}
%tfs% workfold -map $/{tfs-path-to-your-sln} c:\jenkins\jobs\%job_name%\workspace\ -workspace:hudson-%job_name%-master -server:{your-tfs-team-project-collection-url}
%tfs% get $/{tfs-path-to-your-sln} -force -recursive -version:%changesetnumber% -noprompt
%tfs% history $/{tfs-path-to-your-sln} -recursive -stopafter:1 -noprompt -version:%changesetnumber% -format:brief -server:{your-tfs-team-project-collection-url}
删除 tfs 工作区
作为新的构建后步骤,应添加清理命令以 删除 先前创建的 tfs 工作空间 。
%tfs% workspaces -format:brief -server:{your-tfs-team-project-collection-url}
%tfs% workspace -new hudson-%job_name%-master;{your-domain-user-name} -noprompt -server:{your-tfs-team-project-collection-url}
%tfs% workfold -map $/{tfs-path-to-your-sln} c:\jenkins\jobs\%job_name%\workspace\ -workspace:hudson-%job_name%-master -server:{your-tfs-team-project-collection-url}
%tfs% get $/{tfs-path-to-your-sln} -force -recursive -version:%changesetnumber% -noprompt
%tfs% history $/{tfs-path-to-your-sln} -recursive -stopafter:1 -noprompt -version:%changesetnumber% -format:brief -server:{your-tfs-team-project-collection-url}