从Jenkins凭证管理器读取凭证并与python脚本集成



我有一个python脚本,它正在进行几个api调用并通过电子邮件返回响应给我。我想通过詹金斯管道作业运行这个脚本。我有一个令牌,我将其作为秘密文本存储在jenkins凭证管理器中。问题是我不确定如何在我的python脚本中获取这个令牌。我已经尝试了许多解决方案,但所有这些都让我感到困惑。这是我的jenkins管道的样子:

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()

提前感谢您的帮助!

编辑-我知道有几种方法可以做到这一点,一种是使用credentials(),另一种是使用环境变量。问题是,我混合了两个,我不能通过代码实现任何一个方法。所以请帮助编写代码。

编辑1 -把@rok的答案分成几个步骤(1)将withCredentials块添加到Jenkinsfile中,用于读取凭据;(2)将它们绑定到环境变量。然后,(3)将环境变量的值作为参数传递给python脚本。">

pipeline {
agent {
node {
label 'node1'
}
}
environment {
deva_stross_token=credentials('devadrita-stross')
}
withCredentials([string(credentialsId: 'devadrita-stross', variable: 'deva-stross-token')]) {
// some block
}
stages {
stage('saving stross token and printing') {
steps {
script {
bat """
python -u C://Users//Administrator//Desktop//stross//stross-script.py
"""
}
}       
}
}
}

(1)添加了读取凭据的withCredentials块(2)将凭据与环境变量绑定是什么意思?withCredentials块是否将令牌绑定到环境变量"deva-stross-token"?我的环境块在这里有用或需要吗?(3)如何将环境变量的值传递给我的python脚本?

我觉得我应该补充一点,我对编码比较陌生,所以如果我的问题看起来很基本,请原谅我。

使用凭证绑定插件。将withCredentials块添加到Jenkinsfile中,用于读取凭据并将其绑定到环境变量。然后,将环境变量的值作为参数传递给python脚本。

Jenkins docs列表支持的凭据类型和各种绑定。

我是这么做的:Jenkinsfile:

stages {
stage('run stross script') {
steps{
withCredentials([string(credentialsId: 'devadrita-stross', variable: 'my_stross_token')]) {
echo "My stross token is '${my_stross_token}'!"
bat "python C:\Users\Administrator\Desktop\stross\stross-script.py "
}
}
}
}

这将我的凭据绑定到指定的环境变量。然后我将变量导入到我的python脚本中,并像使用任何其他变量一样使用它,即-将它传递给函数等。下面是一个代码片段:

def main():
token = os.environ['my_stross_token']
print(token)
jobIdFromInitiate=initiateScan(token)
getStatus(jobIdFromInitiate, token)

相关内容

  • 没有找到相关文章

最新更新