Jenkins作业无法在构建期间将整数参数传递给python脚本

我有一个在EC2实例上测试过的python脚本,该脚本在服务器上可以正常运行,但是当我尝试从Jenkins作业传递相同的参数时,如下所示。我收到错误消息:

安全组在vpc vpc-d79691b9中创建了sg -ca09bcae。追溯(最近一次呼叫最近):文件“ ./create_sg.py”,位于'FromPort'中的第32行:int(FROM_PORT_1.strip(“”))),标记为构建失败完成:FAILURE> ValueError:int的无效文字()以10为基数:“在”构建步骤“执行外壳”中

http://img.mukewang.com/6087ce610001b30505580502.jpg

我很确定该错误是由于我通过Jenkins参数传递的字符串参数引起的,但是在jenkins参数中没有选择将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。


紫衣仙女
浏览 282回答 2
2回答

PIPIONE

我没有任何测试方法,但是错误消息将无效int值显示为单词“ inside”。这表明Description参数直接被替换为命令行,而没有任何引号,因此sys.argv[5]确实是字符串“ within”。您可以尝试在描述周围加上引号:`“开发环境中的安全组”。

繁星coding

我认为您正在寻找的是os.getenv:import osVPC_ID = os.getenv('VPC_ID')print(VPC_ID)应该管用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python