config.xmlというXMLファイルがあります
<builders>
<hudson.tasks.Shell>
<command>$RA_CHEKOUT_Shell_COMMAND</command>
</hudson.tasks.Shell>
</builders>
ここに私のプロパティファイルの内容があります
build.prop
これは、Jenkinsからジョブをチェックアウトすることです。ここで、チェックアウト操作を実行します。
シェルスクリプト
ここでは、プロパティファイルを1行ずつ読み取り、プロパティファイルの値を変数に割り当て、config.xmlファイルフィールドの値を使用しています。
file="/var/lib/jenkins/workspace/Env-inject-example2/build.prop"
counter=1
while IFS= read line
do
# display $line
echo "Text read from file: $line"
counter=`expr $counter + 1`
name=$(cat "$file")
echo $name
echo "Change values in config.xml..."
done <"$file"
cat <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<config>
<builders>
<hudson.tasks.Shell>
<command>$name</command>
</hudson.tasks.Shell>
</builders>
</config>
EOF
echo "Done."
注:シェルスクリプト内でconfig.xmlを使用してフィールド値を変更しましたが、config.xmlファイルの外でシェル変数を使用したいと思います。 config.xmlファイルに値を注入します。
sed "s@PatternThatShouldBeReplaced@$name" /Path/To/config.xml
注:通常、sed seperatorは/ですが、この場合はエスケープせずに変数に/を含めることを許可するために@をお勧めします