代码之家  ›  专栏  ›  技术社区  ›  Lgalan90

在jenkins管道上提取字符串的一部分

  •  10
  • Lgalan90  · 技术社区  · 6 年前

    我在管道脚本中的语法方面遇到了一些问题。

    我试图捕捉最后一个正斜杠“/”之后和最后一个句号之前的所有内容在此字符串中git@github.com:project/access server pd。git(访问服务器pd)

    Here (以下)是我想如何设置它

    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#'
    

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

    1 回复  |  直到 6 年前
        1
  •  14
  •   mkobit    6 年前

    在本例中,它看起来像是在 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
    

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

    您确实需要小心管道中使用的代码。如果是沙盒,它将在一个受保护的域中运行,其中每个调用都经过安全检查。例如 whitelist Script Security Plugin 列出上面使用的所有调用(例如, method java.lang.String lastIndexOf java.lang.String )。

    正在执行 一串 在管道代码中进行操作是完全合理的,因为您可以根据它做出决策并更改编排。