【发布时间】:2022-12-23 01:33:59
【问题描述】:
我有一个 python 脚本,它进行了几个 api 调用并通过电子邮件将响应返回给我。我想通过 jenkins 管道作业运行此脚本。 我有一个令牌,我已将其作为秘密文本存储在 jenkins 凭证管理器中。 问题是我不确定如何在我的 python 脚本中获取这个令牌。我曾尝试查看多种解决方案,但所有这些都让我感到困惑。 这就是我的詹金斯管道的样子:
pipeline {
agent {
node {
label 'node1'
}
}
environment {
deva_stross_token=credentials('devadrita-stross') //i have saved the credential with id 'devadrita-stross', and this I understand, is fetching it for my pipeline
}
stages {
stage('running python script') {
steps {
script {
bat """
python -u C://Users//Administrator//Desktop//stross//stross-script.py
"""
}
}
}
}
}
但是我应该做哪些更改才能将其提取到我的脚本中? 这是 python 脚本。
import requests
import urllib3
import json
import time
import os
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def initiateScan():
url = ""
payload={}
files=[
('source',('amail.zip',open('C:/Users/Administrator/Desktop/stross/amail.zip','rb'),'application/zip')),
('metadata',('metadata.json',open('C:/Users/Administrator/Desktop/stross/metadata.json','rb'),'application/json'))
]
headers = {
'Authorization': ' Bearer **<token required here>**'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files, verify=False)
resp=response.json()
print(resp)
jobId=resp["job_id"]
return(jobId)
def main():
jobIdFromInitiate=initiateScan()
main()
预先感谢您的帮助!
【问题讨论】:
-
如果您在全局
environment指令中定义了一个环境变量,那么对于包括bat在内的步骤方法生成的任何进程,它将成为一个进程内环境变量。这意味着您可以从 Python 脚本中读取名为deva_stross_token的环境变量。那对你有用吗? -
嗨@MattSchuchard。我已经在管道中声明了一个名为
deva_stross_token的环境变量,如果这是你的意思的话。从我的脚本中读取它的语法是什么?
标签: python jenkins jenkins-pipeline jenkins-plugins