簡體   English   中英

使用 Jenkins 參數化管道執行 python 腳本

[英]Executing python script using Jenkins parameterized pipeline

我已經使用 Jenkins 中的執行 shell 功能設置了 Jenkins 參數化作業來執行 python 腳本。 該作業具有以下參數:

user-name:字符串,order_area_name:逗號分隔的字符串,country_name:字符串,country_code:字符串,等等...

我的用例是拆分 order_area_name 並為每個 order_area_name 依次執行 python 腳本。 所以,我寫了一個看起來像這樣的腳本:

#!/bin/bash
export PYTHONHASHSEED=0
empty_string=""
parameters_list=""
IFS=","

#Checking every parameter if it is present or not
if [ "$user_name" != "$empty_string" ]
then
    parameters_list=$parameters_list" --user "$user_name
fi
if [ "$country_code" != "$empty_string" ]
then
    parameters_list=$parameters_list" --country_code "$country_code
fi
if [ "$country_category" != "$empty_string" ]
then
    parameters_list=$parameters_list" --country_category "$country_category
fi

parameters_list=$parameters_list" --aws_access_key_id "$aws_access_key_id
parameters_list=$parameters_list" --aws_secret_access_key "$aws_secret_access_key


##Checking if the parameter is present then splitting the string and storing it into array
##Then for each order_area_name executing the python script in sequential manner
if [ "$order_area_names" != "$empty_string" ]
then
    read -r -a order_area_name_array <<< "$order_area_names"
    for order_area in "${order_area_name_array[@]}";
    do      
        final_list=$parameters_list" --order_area_name "$order_area
        echo $final_list
        python3 ./main.py ${final_list}
    done
fi

exit

我無法將值的final_list傳遞給 python 腳本,因此 Jenkins 作業失敗。 如果我回顯final_list ,我會看到這些值已正確初始化:

--user jay@abc.com --mqs_level Q2 --num_parallel_pipelines 13 --sns_topic 主題名 --ramp_up_time 45 --max_duration_for_task 30 --batch_size 35 --lead_store_db_schema 架構 --airflow_k8s_z344aws67y_name 氣流-keyid_web-x12 aws_secret_access_key 12345678 --order_area_name 倫敦

錯誤看起來像這樣:

main.py:錯誤:需要以下 arguments:--user、--sns_topic、--aws_access_key_id、--aws_secret_access_key 構建步驟“執行 shell”將構建標記為失敗已完成:失敗

我在很多地方搜索過這個,但沒有得到任何具體的答案。 誰能幫我解決這個問題?

而不是像這樣寫我的命令:

python3./main.py ${final_list}

我用了這個,效果很好:

echo $final_list | bash

“final_list”變量具有需要執行的命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM