首页 > 解决方案 > Jenkins Job 无需构建步骤即可创建 Powershell Jenkins 自动化

问题描述

我的团队在虚拟机上有一个在线 Jenkins,我们都在使用它。我们想在本地安装 Jenkins 以进行测试和多任务处理。我编写了一个脚本,从在线 Jenkins 获取所有工作并将它们上传到我本地的 Jenkins。问题是作业在没有构建步骤的情况下被上传。但是当我查看 config.xml 时,这些步骤就在那里,但它们根本没有显示在仪表板上,也没有运行。

这就是我上传它们的方式:

$headers = @{'Authorization' = 'Basic ' + [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("$($Username):$($Password)")); 'Jenkins-Crumb' = $Crumb }
        $response = Invoke-WebRequest `
            -Uri "$($Url)createItem?name=$JobName" `
            -Headers $headers `
            -ContentType "text/xml" `
            -Body $JobConfig `
            -WebSession $Global:crumbSession `
            -Method Post

我怀疑的是,当我查看在线 Jenkins 的 config.xml 时,配置如下所示:

<?xml version='1.1' encoding='UTF-8'?>
<project>
  <actions/>
  <description>

但是上传到我本地 Jenkins 上的那个看起来像这样:

<?xml version="1.1" encoding="UTF-8"?>
<project>
  <actions/>
  <description>

它们之间有细微的差别,例如单引号和双引号,以及一些正在转换的 HTML 实体。除此之外,我不知道为什么它不显示构建步骤,因为我提到构建器标签在两个配置中都存在,完全相同,但它根本不会出现在仪表板上,也不会运行.

感谢阅读:)

标签: xmlpowershellrestjenkinsautomation

解决方案


所以经过一番挖掘,我设法找到了这个问题的根本原因。问题是两个Jenkins的版本不同。网上的Jenkins是2.176.3的版本,我本地的Jenkins是2.222.4高一点的。将作业从旧版本加载到新版本会导致加载作业时出现一些错误。显然向后兼容性对詹金斯来说不是一件事情:)。


推荐阅读