当前位置: 首页 > 面试题库 >

在詹金斯管道上提取字符串的一部分

汪兴为
2023-03-14
问题内容

我在管道脚本中的语法有些麻烦。

我正在尝试捕获最后一个斜杠“/”之后和最后一个句号“”之前的所有内容。在此字符串git@github.com:project / access-server-pd.git(access-server-pd)

这是我下面要设置的方式

MYVAR="git@github.com:project/access-server-pd.git"

NAME=${MYVAR%.*}  # retain the part before the colon
NAME=${NAME##*/}  # retain the part after the last slash
echo $NAME

我目前在管道脚本上设置了三引号:

  stage('Git Clone') {
  MYVAR="$GIT_REPO"
  echo "$MYVAR"
  NAME="""${MYVAR%.*}"""
  echo "$NAME"

但是我收到一个关于“”的意外令牌。错误。我该怎么写才能使它正常工作?

更新:此命令可以解决问题:

echo "git@github.com:project/access-server-pd.git" | sed 's#.*/\([^.]*\).*#\1#'

现在,我只需要找到适当的语法来创建一个变量来存储该值。


问题答案:

在这种情况下,看起来可以使用一些Groovy / Java方法String提取零件。

final beforeColon = url.substring(0, url.indexOf(':'))  // git@github.com
final afterLastSlash = url.substring(url.lastIndexOf('/') + 1, url.length()) // project/access-server-pd.git

这使用了几种不同的方法:

  • public int String.indexOf(String str, int fromIndex)
  • public String String.substring(int beginIndex, int endIndex)
  • public int String.length()
  • public int String.lastIndexOf(String str)

您确实需要注意在管道中使用的代码。如果是沙盒,它将在受保护的域中运行,在该域中,所有调用都经过安全检查。例如,在白名单中的
脚本安全插件

白名单的所有上面使用(例如,电话method java.lang.String lastIndexOf java.lang.String)。

String在管道代码中执行操纵是完全合理的,因为您可能会做出决策并根据其更改编排。



 类似资料:
  • 问题内容: 已解决 :感谢S.Richmond的以下答复我需要取消所有类型的存储映射,这意味着将变量和使用后作废。 附加 :搜索此错误的人员可能有兴趣使用Jenkins管道步骤- 在此处查找更多信息。 我正在尝试使用Jenkins Pipeline从用户那里获取输入,该输入作为json字符串传递给作业。管道然后使用隔离器对此进行解析,然后选择重要信息。然后,它将使用该信息与不同的作业参数并行运行1

  • 下面是我简单的jenkins pipeline groovy脚本,它将用这两个阶段和我们想要构建的作业创建一个管道,我希望在job configuration下的脚本中每次都更新用于构建和代码分析的作业名,方法是从用户界面中获取数据,用户将使用Eclipse提供构建作业名和代码分析作业名- jenkinsfile脚本:-

  • 问题内容: 我有两条詹金斯管道,比方说管道A和管道B。我想在管道B中调用管道A。我怎样才能做到这一点? (管道A是管道B的子集。管道A负责执行一些日常工作,可以在管道B中重用) 我已经在计算机上安装了Jenkins 2.41。 问题答案: 以下解决方案对我有效: 在此处添加“管道:构建步骤”官方文档的链接:https : //jenkins.io/doc/pipeline/steps/pipeli

  • 问题内容: 我们有几个Java项目。每个项目都有自己的交付管道。 所有管道都具有以下共同的步骤(简化): 建立项目 发布项目 部署到测试环境 部署到生产环境 项目管道仅在项目特定的属性(例如服务名称或测试和生产环境的IP地址)上有所不同。 问题是:我们如何避免所有项目都有共同之处?Jenkins的“管道作为代码”是否提供类似管道模板的内容? 我可以想象一个模板将在我们的项目管道中节省很多冗余代码/

  • 嗨,我有一个简单的管道工作,应该发送一封邮件,我对管理詹金斯配置- 错误: 有什么建议可以解决吗? 谢谢,

  • 问题内容: 我已经使用Jenkins为我的node js应用程序创建了CI管道。我的管道包括诸如构建,单元测试,集成测试,代码分析等工作。我知道默认情况下,即使一个测试用例失败,构建也会失败。 问题答案: 您的单元测试脚本将需要处理数学和逻辑,以确定失败的测试百分比足以使整个工作失败。然后,您的单元测试脚本可以返回通过(零)或失败(其他任何结果),詹金斯将相应地标记构建。