前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins2 学习系列17 -- 凭证管理

Jenkins2 学习系列17 -- 凭证管理

作者头像
mafeifan
发布2019-08-06 15:01:00
1.7K0
发布2019-08-06 15:01:00
举报
文章被收录于专栏:finleyMa
凭证 Credentials

凭证可以是一段字符串如密码,私钥文件等,是Jenkins进行受限操作时的凭据。比如SSH登录远程服务器,用户名,密码或SSH key就是凭证。这些凭据不要明文写在Jenkinsfile中,Jenkins有专门管理凭证的地方和插件。

添加凭证

添加凭证步骤(需要有凭证权限,这里使用超级管理员身份)

image.png

image.png

image.png

参数:

  • Kind | 凭证类型
  • Scope | 凭证作用域,分Global,用于pipeline就选这个,System,用于Jenkins系统本身,如电子邮件身份验证,代理连接等。
  • ID | 在pipeline中使用凭证的唯一标识 | 可以自己起,如果不填Jenkins会分配一个,必须唯一,而且创建后无法修改。建议自己起成容易识别的,比如 xxx-project-dingtalk-robot-token

关于Kind凭证类型,有如下几种:

  • Username with password | 用户名和密码
  • Docker Host Certificate Authentication
  • SSH Username with private key | 一对SSH用户名和密钥
  • Secret file | 需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构件结束后,所复制的Secret file就会被删除。
  • Secret text | 需要保存的一个保密的文本串,如钉钉机器人或Github的api token
  • Certificate

添加凭证后,需要安装"Credentials Binding Plugin"插件,就可以在pipeline中使用withCredentials步骤使用凭证了。

pipeline中使用凭证
  • withCredentials
代码语言:javascript
复制
// 通过 credentialsId 取出对应凭证,然后赋值给名为'my_dingtalk_token'(自己起)的变量
// 根据变量在其他step中使用
withCredentials([string(credentialsId: 'dingding-robot-token', variable: 'my_dingtalk_token')]) {
    // 注意:构建记录中只会输出 ****
    echo "${my_dingtalk_token}"
}

比如钉钉讨论组建立机器人后会提供给你webhook的地址https://oapi.dingtalk.com/robot/send?access_token=123456789abcde,将后面的access_token 存到 Secret text 中。

  • credentials

如果觉得withCredentials比较麻烦,声明式pipeline还提供了 helper 方法,在environment中使用credentials('credentials-id')就可以方便取出。

注意:credentials 指令只能使用在 environment 段中,而且目前只支持Secret text,Username with password 和 Secret file 三种。

代码语言:javascript
复制
#!groovy

pipeline {
    agent any
    environment {
        ding_robot_token = credentials('dingding-robot-token')
    }

    stages {
        stage('debug') {
            steps {
                sh "printenv"
            }
        }
    }
    
    post {
        success {
          script {
            // 输出 **** ,即在console中看不到真实信息
            echo "${env.ding_robot_token}"
          }
          // 通知钉钉机器人,需要安装dingtalk插件
          dingTalk accessToken: "${env.ding_robot_token}", imageUrl: '', jenkinsUrl: '', message: '构建成功', notifyPeople: ''
        }
  }
}
进阶:使用 Vault

如果你要管理很多服务器密钥,数据库密码,用户密码或token等敏感信息,可以使用 Vault 他是hashicorp公司出品的专业管理机密和保护敏感数据的工具。

他有以下功能:

  • 提供 图形化界面,CLI命令和HTTP API
  • 方便的密码维护和变更管理功能,比如密码需要定期更换,使用Vault只需要在vault端更新密码,通知应用重新拉取就可以了
  • 动态定期生成唯一密码,省去人工维护麻烦
  • 支持 ACL,角色,策略,认证等

安装非常简单,就一个二进制包,直接运行即可。具体使用请参考官方文档写的非常清晰,再结合Jenkins的vault插件。就可以方便的管理凭证了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.08.03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 凭证 Credentials
  • 添加凭证
  • pipeline中使用凭证
  • 进阶:使用 Vault
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档