【问题标题】:reading credentials from jenkins credential manager and integrating with python script从 jenkins 凭证管理器读取凭证并与 python 脚本集成
【发布时间】: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


【解决方案1】:

使用Credentials Binding插件。将 withCredentials 块添加到您的 Jenkinsfile 以读取凭据并将它们绑定到环境变量。然后将环境变量的值作为参数传递给 python 脚本。

Jenkins docs 列出支持的凭证类型和各种绑定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多