我正在尝试将自由式作业转换为管道代码。以下是在作业中的“调用 Artifactory Maven 3”下与 maven 目标一起声明的 MAVEN_OPTS。
Maven 目标:全新安装
MAVEN_OPTS:-Xmx2048m
-Xms512m
-XX:PermSize=256m
-XX:MaxPermSize=1024m
-Denv.build-timestamp=${BUILD_TIMESTAMP}
-Denv.build-job=${JOB_NAME}
-Denv.build-number=${BUILD_NUMBER}
-Denv.build-url=${BUILD_URL}
-Denv.git-commit=${GIT_COMMIT}
-Denv.git-branch=${GIT_BRANCH}
我在管道中的试验:
node('node1') {
def javaHome = tool name: 'JDK 1.8', type: 'hudson.model.JDK'
def mvnHome = tool name: 'M3', type: 'hudson.tasks.Maven$MavenInstallation'
sh "$mvnHome/bin/mvn -f pom.xml clean install -U -Dmaven.repo.local=$WORKSPACE/.m2/repository -Xmx2048m -Xms512m -XX:PermSize=256m -XX:MaxPermSize=1024m -Dtimestamp=${BUILD_TIMESTAMP} ..."
}
Error:
Could not find metadata org.apache.maven.plugins/maven-metadata.xml in local
Run Code Online (Sandbox Code Playgroud)
我确定我以错误的方式传递了 MAVEN_OPTS。有人可以指导我使用正确的 systax 在 Pipeline 中声明 MAVEN_OPTS
我能够运行以下 shell 脚本,但无法从 Jenkins 管道代码运行。
尝试 1。
node('buildnode') {
def value = "Myvalue"
def key = "Mykey"
sh '''
DATA=$(printf "%-50s \"$key\"" "$value")
echo "$DATA"
'''
}
Run Code Online (Sandbox Code Playgroud)
输出:
++ printf '%-50s ' ''
+ DATA='
Run Code Online (Sandbox Code Playgroud)
尝试2:
试过 sh " " "
DATA=$(printf "%-50s \"$key\"" "$value")
echo "$DATA"
" " "
Run Code Online (Sandbox Code Playgroud)
输出::
美元符号后的非法字符串体字符;解决方案:要么转义文字美元符号,
"\$5"要么将值表达式括起来"${5}"
有人能帮我吗?