Jenkins作业无法在构建期间将整数参数传递给python脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins作业无法在构建期间将整数参数传递给python脚本相关的知识,希望对你有一定的参考价值。
我有一个我在EC2实例上测试的python脚本,它在服务器上工作得非常好,但是当我尝试从Jenkins作业传递相同的参数时,如下所示。我收到错误消息:
安全组在vpc vpc-d79691b9中创建了sg-ca09bcae。回溯(最近调用最后一次):文件“./create_sg.py”,第32行,在'FromPort'中:int(FROM_PORT_1.strip(“”)),标记为构建为失败完成:FAILURE> ValueError:int的文字无效()与基数10:'在'内部'构建步骤'执行shell'
我很确定错误是因为我传递了Jenkins参数的字符串参数,但是没有选项将jnkins参数中的From和To端口作为整数发送。
如何在Jenkins构建作业中将参数设置为整数?
用于创建SG的Python代码:
#!/usr/bin/env python
import sys
import boto3
from botocore.exceptions import ClientError
region = "us-west-1"
VPC_ID=sys.argv[1]
SECURITY_GROUP_NAME=sys.argv[2]
DESCRIPTION=sys.argv[3]
IP_PROTOCOL_1=sys.argv[4]
FROM_PORT_1=sys.argv[5]
TO_PORT_1=sys.argv[6]
CIDR_IP_1=sys.argv[7]
ec2 = boto3.client('ec2')
response = ec2.describe_vpcs()
vpc_id = VPC_ID
try:
response = ec2.create_security_group(GroupName=SECURITY_GROUP_NAME,Description=DESCRIPTION,VpcId=VPC_ID)
security_group_id = response['GroupId']
print('Security Group Created %s in vpc %s.' % (security_group_id, vpc_id))
data = ec2.authorize_security_group_ingress(
GroupId=security_group_id,
IpPermissions=[
{'IpProtocol': IP_PROTOCOL_1,
'FromPort': int(FROM_PORT_1),
'ToPort': int(TO_PORT_1),
'IpRanges': [{'CidrIp': CIDR_IP_1}]}
]
)
print('Ingress Successfully Set %s' % data)
except ClientError as e:
print(e)
@nosklo,建议我尝试以下方法:
VPC_ID=sys.argv[1]
SECURITY_GROUP_NAME=sys.argv[2]
DESCRIPTION=' '.join(sys.argv[3:-4])
IP_PROTOCOL_1=sys.argv[-4]
FROM_PORT_1=sys.argv[-3]
TO_PORT_1=sys.argv[-2]
CIDR_IP_1=sys.argv[-1]
使用哪个端口列为0与我在参数中传递的值。
答案
我没有办法测试这个,但错误消息显示无效的int
值为单词“within”。这表明Description参数直接替换到命令行而没有任何引用,因此sys.argv[5]
确实是字符串“within”。您可以尝试在描述中包含引号:`“开发环境中的安全组”。
另一答案
我想你要找的是os.getenv
:
import os
VPC_ID = os.getenv('VPC_ID')
print(VPC_ID)
应该管用。
以上是关于Jenkins作业无法在构建期间将整数参数传递给python脚本的主要内容,如果未能解决你的问题,请参考以下文章