我有一个jenkins作业foo,它运行得非常好。它是用jenkins_foo_user验证的。它能够克隆回购协议并 checkout 正确的分支。在我的代码库中,我有另一个脚本-query_github.py,一个用于查询Github API以获取提交和拉取请求等信息的脚本。我希望能够使用jenkins用户访问令牌来验证和访问github凭证。我该如何做?注意:使用Github企业版
foo
jenkins_foo_user
query_github.py
eivnm1vs1#
如果你在GitHub App认证中使用分支Source插件,你在Jenkins中没有令牌,但凭据提供商足够聪明,可以通过同样的withCredentials步骤为你提供一个从App派生的访问令牌:
withCredentials
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应用程序验证。
usernamePassword
ukqbszuj2#
你可以在jenkins job中定义一个密码参数,同样的密码参数也可以在github脚本中使用。例如:你可以定义一个密码变量作为一个构建参数或者使用注入全局密码的新密码变量(假设你有这个插件)在使用api的脚本中可以使用相同的密码下面的命令使用github api调用,并将列出您组织中的repos请确保将<your_organization_name_HERE>替换为您的组织名称
<your_organization_name_HERE>
curl --silent -q -H "Authorization: token ${github_api_pwd}" https://api.github.com/orgs/<your_organization_name_HERE>/repos
同样,您可以使用其他api获取其他信息
r7xajy2e3#
必须使用credentials api。示例
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用户凭据中
jenkins-user
3条答案
按热度按时间eivnm1vs1#
如果你在GitHub App认证中使用分支Source插件,你在Jenkins中没有令牌,但凭据提供商足够聪明,可以通过同样的
withCredentials
步骤为你提供一个从App派生的访问令牌:请注意,您必须使用
usernamePassword
作为类型,即使ID引用的凭据是GitHub App类型。更多信息请参见Jenkins官方博客文章n GitHub应用程序验证。
ukqbszuj2#
你可以在jenkins job中定义一个密码参数,同样的密码参数也可以在github脚本中使用。
例如:你可以定义一个密码变量作为一个构建参数或者使用注入全局密码的新密码变量(假设你有这个插件)
在使用api的脚本中可以使用相同的密码
下面的命令使用github api调用,并将列出您组织中的repos
请确保将
<your_organization_name_HERE>
替换为您的组织名称同样,您可以使用其他api获取其他信息
r7xajy2e3#
必须使用
credentials api
。示例在www.example.com内部foo.py
最简单、最干净的方法来完成目标!注意:应将
jenkins-user
配置到jenkins用户凭据中