jenkinsfile 设置环境变量与子字符串提取

Noa*_*rks 3 jenkins jenkins-pipeline

尝试设置使用另一个环境变量的子字符串提取的环境变量时遇到问题。

pipeline {
    agent any
    environment {           
        NODE_BASE_NAME = "ui-node-${GIT_COMMIT:0:6}"
    }
    stages {
        stage ("test") {
            steps {
                echo "${NODE_BASE_NAME}"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是

WorkflowScript: 4: expecting '}', found ':' @ line 4, column 49.
   NAME = "ui-node-${GIT_COMMIT:0:6}"
Run Code Online (Sandbox Code Playgroud)

Mat*_*ard 5

在 Groovy 中执行子字符串的内在方法是String substring(int beginIndex, int endIndex). 因此,NODE_BASE_NAME使用GIT_COMMIT子字符串插入分配给的字符串的正确语法是:

environment {           
  NODE_BASE_NAME = "ui-node-${GIT_COMMIT.substring(0, 6)}"
}
Run Code Online (Sandbox Code Playgroud)