两步构建过程Jenkins

时间:2017-08-22 20:34:26

标签: amazon-web-services jenkins groovy jenkins-plugins amazon-cloudfront

我正在为我的组织创建一个Cloudfront服务。我正在尝试创建一个用户可以执行Jenkins作业来更新分发的作业。

我希望用户能够输入分发ID,然后让Jenkins自动填充第二组参数。 Jenkins需要获取该Distribution的配置(通过Groovy或其他方式)来进行自动填充。然后,用户将选择他们想要更改的配置选项并点击提交。然后,该作业将进行所请求的更新(通过python脚本)。

这可以通过插件的组合(或任何其他方式吗?)来完成。

1 个答案:

答案 0 :(得分:1)

// the first input requests the DistributionID from a user
stage 'Input Distribution ID'
def distributionId = input(
    id: 'distributionId', message: "Cloudfront Distribution ID", parameters: [
    [$class: 'TextParameterDefinition', 
        description: 'Distribution ID', name: 'DistributionID'],
])
echo ("using DistributionID=" + distributionId)

// Second
// Sample data - you'd need to get the real data from somewhere here
// assume data will be in distributionData after this
def map = [
    "1": [ name: "1", data: "data_1"],
    "2": [ name: "2", data: "data_2"],
    "other": [ name: "other", data:  "data_other"]
]
def distributionData;
if(distributionId in map.keySet()) {
    distributionData = map[distributionId]
} else {
    distributionData = map["other"]
}

// The third stage uses the gathered data, puts these into default values
// and requests another user input.
// The user now has the choice of altering the values or leave them as-is.
stage 'Configure Distribution'
def userInput = input(
 id: 'userInput', message: 'Change Config', parameters: [
 [$class: 'TextParameterDefinition', defaultValue: distributionData.name, 
    description: 'Name', name: 'name'],
 [$class: 'TextParameterDefinition', defaultValue: distributionData.data, 
    description: 'Data', name: 'data']
])

// Fourth - Now, here's the actual code to alter the Cloudfront Distribution
echo ("Name=" + userInput['name'])
echo ("Data=" + userInput['data'])
  • 创建新管道并将其复制/粘贴到管道脚本部分
  • 玩弄它

我可以很容易地想象这个代码可以以更好的方式实现,但至少,这是一个开始。