【问题标题】:How to get words by a given pattern of a variable in shell (Jenkinsfile)?如何通过shell(Jenkinsfile)中变量的给定模式获取单词?
【发布时间】:2021-07-24 00:47:32
【问题描述】:

目前我面临一个问题,即如何从我的 Jenkinsfile 中的变量(Shell)中提取一些测试类的名称。

场景:每次在 Bitbucket 中创建 Pull 请求时,都会在 Jenkins 中激活流水线类型的作业,我可以在其中访问 Jenkinsfile 中名为“description”的变量。

例如,描述变量的输入可以包含以下内容:


US-2371 这里有任何描述 测试类:testclass1_tst,testclass_test 此处有任何其他说明。

预期输出: 仅将以下内容保存在另一个变量中: testclass1_tst,testclass_test

注意:我需要用','分隔的测试类的名称,模式是那些以tst、test、Test结尾的测试类。

提前致谢。

参考:

Jenkinsfile - Variable

【问题讨论】:

  • 如果您将 jenkins 文件中的摘录发布为文本而不是图像,则更容易阅读。如果你这样做,请使用标记。
  • 关键字“Test Classes”会一直存在吗?
  • @Ruchi 嗨,是的(测试类:)总是在那里,只是测试类的文件名总是会改变

标签: shell jenkins sed grep jenkins-pipeline


【解决方案1】:

由于 Test Classes: 将出现在所有描述中,我们可以查找它并解析出类。

echo $description | sed -r 's/(.*Test Classes: )(\w.+)([[:space:]])(.*)/\2/

这会让你
testclass1_tst,testclass_test

【讨论】:

  • 嗨,Ruchi,我在 Jenkins 的测试中有一个错误。来自詹金斯:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:WorkflowScript:128:期待'}',找到's'@第128行,第57列。'echo $description | sed -r 's/(.*Test ^ 来自 Jenkinsfile: sh 'echo $description | sed -r 's/(.*Test Classes: )(\w.+)([[:space:]])(. *)/\2/'' 注意:在双引号之间也不起作用 (sh "echo $description | sed -r 's/(.*Test Classes: )(\w.+)([[:space :]])(.*)/\2/'") 提前致谢。
  • 也许尝试在粘贴文件之前在 shell 中测试命令?
猜你喜欢
  • 1970-01-01
  • 2019-03-26
  • 2012-02-13
  • 2016-10-07
  • 2018-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多