当我运行 CI 管道时,我在 jenkins 中运行 3 个管道(CI、CD、CDP),最后阶段是激活管道 CD(持续部署)的触发器,这会APP_VERSION
从 CI(持续集成)PIPE 接收参数并部署一个带有packer
and run的实例SERVERSPEC TEST
,但serverspec
测试失败。
但演示应用程序是通过 salstack 安装的
奇怪的是当我运行 CD 并APP_VERSION
手动传递参数这个 WORK !
这是管道 CI 的最后阶段
stage "Trigger downstream"
echo 'parametro'
def versionApp = sh returnStdout: true, script:"echo \$(git rev-parse --short HEAD) "
build job: "demo-pipeCD", parameters: [[$class: "StringParameterValue", name: "APP_VERSION", value: "${versionApp}"]], wait: false
}
我已将其传递给 serverspecsbin
PATH
并且无法正常工作。
编辑:我将代码添加到测试中。
enter code here
require 'spec_helper'
versionFile = open('/tmp/APP_VERSION')
appVersion = versionFile.read.chomp
describe package("demo-app-#{appVersion}") do
it { should be_installed }
end
另外,我添加了工作管道
#!groovy
node {
step([$class: 'WsCleanup'])
stage "Checkout Git repo"
checkout scm
stage "Checkout additional repos"
dir("pipeCD") {
git "https://git-codecommit.us-east-
1.amazonaws.com/v1/repos/pipeCD"
}
stage "Run Packer"
sh "echo $APP_VERSION"
sh "\$(export PATH=/usr/bin:/root/bin:/usr/local/bin:/sbin)"
sh "/opt/packer validate -var=\"appVersion=$APP_VERSION\" -var-
file=packer/demo-app_vars.json packer/demo-app.json"
sh "/opt/packer build -machine-readable -
var=\"appVersion=$APP_VERSION\" -var-file=packer/demo-app_vars.json
packer/demo-app.json | tee packer/packer.log"
REPEAT .. 作业管道中的参数 APP_VERSION 是正确的,并且在执行测试之前安装了演示应用程序。