我选择This project is parameterized
,我有两个参数:query
和index
。然后我选择执行shell选项:
#!/bin/sh
curl -XPOST 'localhost:9200/_reindex?pretty' -H 'Content-Type: application/json' -d'
{
"source": {
"index": "{$index}", "query": "{$query}"}}
},
"dest": {
"index": "myindex_output"
}
}
'
我发现它根本没有读取参数,我得到:"type" : "index_not_found_exception", "resource.id" : "{$index}"
我该如何正确地做到这一点?
答案 0 :(得分:0)
因为它是一个环境变量。使用以下语法:
$ENV:index
$ENV:query
答案 1 :(得分:0)
我认为您的问题可能就在这一行:
"index": "{$index}", "query": "{$query}"}}
我想你可能想要:
"index": "$index", "query": "$query"}}
你可能应该在shell脚本的顶部添加这样的东西,看看发生了什么:
echo "$query"
echo "$index"
完整的答案是,假设这个声明性管道:
pipeline {
agent { label 'docker' }
parameters {
string(name: 'query', defaultValue: 'hot_query_value', description: 'query value')
string(name: 'index', defaultValue: 'hot_index_value', description: 'index value')
}
stages {
stage('build') {
steps {
withEnv(["query=${params.query}" ]) {
sh('./shell_script')
}
}
}
}
}
和这个shell脚本:
#!/bin/sh
echo "in shell script"
echo "query is: $query"
echo "anything query or index-related in env:"
env | egrep -i "query|index"
控制台中的输出是:
in shell script
query is: hot_query_value
anything query or index-related in env:
index=hot_index_value
ANOTHER_QUERY_ENV_VAR=hot_query_value
query=hot_query_value
即使你没有使用Jenkins文件(你为什么这么讨厌?:D),参数已经可以作为环境变量使用。