詹金斯管道 sh 添加新行

2024-03-15

我的管道 sh 块:

 sh "set +e; /terraform/terraform plan -var aws_access_key=${aws_access_key} -
 var aws_secret_key=${aws_secret_key} -var aws_ami=${ami_id} -var 
 aws_instance_type=${instance_type} -var aws_elb_security_group=${elb_sg} -var 
 aws_ec2_security_group=${ec2_sg} -detailed-exitcode; echo \$? > status"
              exitCode = readFile('status').trim()
              echo "Terraform Plan Exit Code: ${exitCode}"

输出 :

+ set +e
+ /terraform/terraform plan -var aws_access_key=**** -var aws_secret_key=**** -var aws_ami=ami-xxxxxxx
+ -var aws_instance_type=t2.medium -var aws_elb_security_group=sg-xxxx
/terraform/selectdev/int/mp-frontend@tmp/durable-6c57c14c/script.sh: line 3: -var: command not found
+ -var aws_ec2_security_group=sg-axxx
 /terraform/selectdev/int/mp-frontend@tmp/durable-6c57c14c/script.sh: line 4: -var: command not found
+ -detailed-exitcode
/terraform/selectdev/int/mp-frontend@tmp/durable-6c57c14c/script.sh: line 5: 
 -detailed-exitcode: command not found
+ echo 127

我不确定为什么要在命令中添加新行,如果我使用 sh '' 等单引号,变量将为空。我究竟做错了什么 ?

我尝试这样做,但它也添加了新行

def command = $/....../$
res = sh(returnStdout: true, script: command)

首先,仅供参考:单引号跳过groovy中的变量插值 http://groovy-lang.org/syntax.html#_single_quoted_string

如果要在字符串中包含多行脚本,则需要在多行变量中转义结束行。

你需要三件事:

  1. 使用三双字符串 http://groovy-lang.org/syntax.html#_triple_double_quoted_string """。这允许您拥有带插值的多行字符串(三重单引号字符串'''让你不用插值就能做同样的事情)。
  2. 逃脱终点线\。这使您可以插入换行符来格式化长命令。
  3. 用双引号将变量括起来(在三个双引号内有效,但您也可以转义双引号,否则:\")

例如如下:(为了可读性,每行一个参数)

sh("""set +e; /terraform/terraform plan \
-var aws_access_key="${aws_access_key}" \
-var aws_secret_key="${aws_secret_key}" \
-var aws_ami="${ami_id}" \
-var aws_instance_type="${instance_type}" \
-var aws_elb_security_group="${elb_sg}" \
-var aws_ec2_security_group="${ec2_sg}" \
-detailed-exitcode; echo \$? > status""")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

詹金斯管道 sh 添加新行 的相关文章

  • 我无法将输出重定向到文件

    我使用名为 lirc monitor 的特定程序用于监视嵌入式 ARM 设备上的按键 我想将所有输出重定向到文件 但我被困住了 我花了大约 2 个小时来检查我找到的每个选项 但 什么也没有 文件一直是空的 也许有人有什么想法 来验证这个问题
  • 在 selenium 下运行 chromedriver 日志时,如何减少其详细程度?

    我的功能测试的詹金斯失败报告充满了这样的行 selenium webdriver remote remote connection DEBUG Finished Request selenium webdriver remote remot
  • 如何使提供程序假设_角色块有条件

    我有一个provider我想给的块assume role属性 但前提是它没有在我的本地计算机上运行 我定义了一个变量islocal在所有环境中 tfvars文件 只有本地文件具有该值true 这是provider block provide
  • Jenkins:Github webhook 不会触发任何作业

    我尝试配置詹金斯 我想要一个简单的行为 触发新的拉取请求的构建 我无法理解我错过了什么 詹金斯版本 2 89 2 At https ci mysite fr configure https ci mysite fr configure 仍然
  • 严重:https://jenkins.domainname.com/tcpSlaveAgentListener/ 似乎正在发布无效的 X-Instance-Identity

    我们正在尝试将之前连接的代理连接到 Jenkins 服务器 我们得到以下错误 SEVERE https jenkins domainname com tcpSlaveAgentListener appears to be publishin
  • 使用 Terraform 创建/销毁 AWS 帐户?

    我正在尝试创建一个工具来轻松创建和销毁我的 AWS 组织中的 AWS 账户 或者至少将其从组织中删除 如果无法删除 这些帐户将成为沙盒 预算很少 并在几周后被销毁 我发现 Terraform 有一个特定的资源 称为aws 组织 帐户 htt
  • 在 Jenkins 中执行批处理文件

    我有一个简单的批处理文件 我想要从 Jenkins 调用 运行 执行该文件 Jenkins 中有同样的插件吗 如何从 Jenkins 执行批处理文件 如果有相同的教程或文档 无需为此添加新插件 在Jenkins 选择您的工作名称并转到配置部
  • 在 Eclipse 中编译 Groovy 文件

    我的 java web 项目包含一些 Groovy 代码 但 Eclipse 无法识别 Groovy 文件 也无法从中生成任何类 我已经在 Eclipse 中安装了 Groovy 插件 在我的 Windows 机器中安装 Groovy 并设
  • 访问静态范围内的全局变量

    有没有办法从同一脚本中声明的类的静态方法访问脚本中声明的全局变量 例如 def s 12345 class MyClass static def method println s 因为这样它会因错误而失败 You attempted to
  • Gitlab 合并请求事件不触发 Jenkins 多分支管道

    我正在尝试在合并请求事件上使用 GitLab Webhook 触发 Jenkins 多分支管道作业 当我测试 Webhook 时 我收到以下消息 Hook 执行成功但返回 HTTP 409 当我设置不同的 GitLab Webhook 例如
  • Bash 中所有匹配的^单词^替换^?

    为了澄清 我正在寻找一种方法来执行global搜索并替换先前使用的命令 word replacement 似乎只替换了第一场比赛 有没有一些set我无法选择的选项 尝试这个 echo oneone oneone gs one two Rep
  • Python jenkinsapi - 禁用/启用不工作的作业

    我正在尝试使用 禁用作业 詹金萨皮 https jenkinsapi readthedocs io en latest using jenkinsapi html example 3 disable enable a jenkins job
  • 自动生成/删除詹金斯工作

    我正在寻找一种自动创建一组詹金斯作业的方法 通常在创建新的 git 分支之后 我已经为maven尝试过这个插件 http evgeny goldin com wiki Maven jenkins plugin http evgeny gol
  • 使用 SIGINT 默认处理程序时从 system() 返回值

    我遇到了一些奇怪的返回值system 当子进程从终端接收到 SIGINT 时 解释一下 从 Perl 脚本parent pl I used system 运行另一个 Perl 脚本作为子进程 但我还需要通过 shell 运行子进程 所以我使
  • 当 Jenkins 在 Ubuntu 上作为守护进程运行时,如何为 Jenkins 提供更多堆空间?

    我的 Jenkins 作业内存不足 给java lang OutOfMemoryError构建日志中的消息 但我使用了 Ubuntu 包管理器 aptitude or apt get安装 Jenkins 我不知道在哪里可以更改分配给 Jen
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一
  • 在 Jenkins Pipeline 的一个步骤中添加多个阶段

    我正在尝试获得一个并行运行 2 个步骤的管道 其中 YAML 如下所示 steps step Step1 stages stage Build steps build a build b build c stage Sniff steps
  • terraform 变量默认值从局部插值

    我有一个用例 我需要两个 AWS 提供商来提供不同的资源 默认aws提供程序在主模块中配置 该模块使用另一个定义附加模块的模块aws提供者 默认情况下 我希望两个提供商使用相同的 AWS 凭证 除非明确覆盖 我想我可以做这样的事情 在主模块
  • Artifactory 插件中的“对等未经过身份验证”错误 - Jenkins

    我使用的是 Jenkins 版本 1 566 和 Artifactory 插件版本 2 2 2 我正在它自己的码头容器中运行artifactory 2 66 它以 http 方式运行 但最近我将其更改为 https 现在 如果我将 Jenk
  • 在 CI (Travis/Jenkins) 环境中使用 xcodebuild (Xcode 8) 和自动签名

    随着 Xcode 8 的发布 Apple 引入了一种管理签名配置的新方法 现在你有两个选择Manual and Automatic 根据 WWDC 2016 关于代码签名的会议 WWDC 2016 401 Xcode 应用签名的新增功能 h

随机推荐