如何在Jenkins多行shell脚本中使用bash变量
我尝试在Jenkins管道中使用bash变量,但没有成功 我的第一次尝试如何在Jenkins多行shell脚本中使用bash变量,bash,jenkins,groovy,Bash,Jenkins,Groovy,我尝试在Jenkins管道中使用bash变量,但没有成功 我的第一次尝试 sh """#!/bin/bash for file in *.map; do filename=`basename $file .map` echo "##### uploading ${$filename}" curl -X POST ${SERVER_URL}/assets/v1/sourcemaps \
sh """#!/bin/bash
for file in *.map; do
filename=`basename $file .map`
echo "##### uploading ${$filename}"
curl -X POST ${SERVER_URL}/assets/v1/sourcemaps \
-F service_name="${SERVICE_NAME}" \
-F service_version="${revision}" \
-F bundle_filepath="${main_url}${filename}" \
-F sourcemap="@${filename}.map" &
done
wait
"""
导致异常:MissingPropertyException:无此类属性:文件
第二次尝试,在看到这个答案之后
只是省略了bash变量。所以$filename是空的
在这种情况下,我需要如何对bash变量进行属性编码?尝试以下方法:
sh """#!/bin/bash
set -x
for file in *.map; do
filename="\$(basename "\$file" .map)"
echo "Uploading \$filename"
curl -X POST "${SERVER_URL}/assets/v1/sourcemaps" \
-F service_name="${SERVICE_NAME}" \
-F service_version="${revision}" \
-F bundle_filepath="${main_url}\$filename" \
-F sourcemap="@\${filename}.map" &
done
wait
"""
是否可以将bash脚本复制到Jenkins服务器上,然后像那样运行bash脚本?这样您就不需要尝试使用转义,所有Groovy变量都应该可以作为bash脚本中的环境变量进行访问。
sh """#!/bin/bash
set -x
for file in *.map; do
filename="\$(basename "\$file" .map)"
echo "Uploading \$filename"
curl -X POST "${SERVER_URL}/assets/v1/sourcemaps" \
-F service_name="${SERVICE_NAME}" \
-F service_version="${revision}" \
-F bundle_filepath="${main_url}\$filename" \
-F sourcemap="@\${filename}.map" &
done
wait
"""