在我的脚本中使用jenkins github用户凭证访问github api

vx6bjr1n  于 2022-11-02  发布在  Jenkins
关注(0)|答案(3)|浏览(204)

我有一个jenkins作业foo,它运行得非常好。它是用jenkins_foo_user验证的。它能够克隆回购协议并 checkout 正确的分支。
在我的代码库中,我有另一个脚本-query_github.py,一个用于查询Github API以获取提交和拉取请求等信息的脚本。
我希望能够使用jenkins用户访问令牌来验证和访问github凭证。我该如何做?注意:使用Github企业版

eivnm1vs

eivnm1vs1#

如果你在GitHub App认证中使用分支Source插件,你在Jenkins中没有令牌,但凭据提供商足够聪明,可以通过同样的withCredentials步骤为你提供一个从App派生的访问令牌:

withCredentials([usernamePassword(credentialsId: 'id-of-your-github-app-credentials',
                                  usernameVariable: 'GITHUB_APP',
                                  passwordVariable: 'GITHUB_ACCESS_TOKEN')]) {
  // Use the access token via $GITHUB_ACCESS_TOKEN here
}

请注意,您必须使用usernamePassword作为类型,即使ID引用的凭据是GitHub App类型。
更多信息请参见Jenkins官方博客文章n GitHub应用程序验证。

ukqbszuj

ukqbszuj2#

你可以在jenkins job中定义一个密码参数,同样的密码参数也可以在github脚本中使用。
例如:你可以定义一个密码变量作为一个构建参数或者使用注入全局密码的新密码变量(假设你有这个插件)
在使用api的脚本中可以使用相同的密码
下面的命令使用github api调用,并将列出您组织中的repos
请确保将<your_organization_name_HERE>替换为您的组织名称

curl --silent -q  -H "Authorization: token ${github_api_pwd}" https://api.github.com/orgs/<your_organization_name_HERE>/repos

同样,您可以使用其他api获取其他信息

r7xajy2e

r7xajy2e3#

必须使用credentials api。示例

withCredentials([[$class: 'UsernamePasswordMultiBinding',
    credentialsId: 'jenkins-user',
    usernameVariable: 'Foo_USERNAME',
    passwordVariable: 'Foo_PASSWORD']]) {
      export foo_name=${stds.escape4sh env.Foo_USERNAME}
      export foo_pass=${stds.escape4sh env.Foo_PASSWORD}
      python foo.py

在www.example.com内部foo.py

_name = os.env.get('foo_name')
_pass = os.env.get('foo_pas')

最简单、最干净的方法来完成目标!注意:应将jenkins-user配置到jenkins用户凭据中

相关问题