Jenkins 基础07 凭据管理

环境 environment


environment指令指定一系列键值对,这些键值对将被定义为所有step或特定stage的step的环境变量,具体取决于environment指令位于Pipeline中的位置。

该指令支持一种特殊的助手方法credentials(),可以通过Jenkins环境中的标识符来访问预定义的凭据。对于类型为“Secret Text”的凭据,该 credentials()方法将确保环境变量中包含该Secret Text内容。对于“标准用户名和密码”类型的凭证,指定的环境变量将被设置为username:password并且将自动定义两个附加的环境变量:MYVARNAME_USRMYVARNAME_PSW

是否必填
参数没有
允许出现在pipeline块内或stage
例如:
Jenkinsfile (Declarative Pipeline)
pipeline {
    agent any
    environment { 
        CC = 'clang'
    }
    stages {
        stage('Example') {
            environment { 
                AN_ACCESS_KEY = credentials('my-prefined-secret-text') 
            }
            steps {
                sh 'printenv'
            }
        }
    }
}
  1. environment顶级pipeline块中使用的指令将适用于Pipeline中的所有步骤
  2. 在一个stage中定义的environment指令只将给定的环境变量应用于该stage中的步骤
  3. environment具有一个帮助方法credentials(),可用于在Jenkins环境中通过其标识符访问预定义的凭据

同时,environment{…}支持credentials() 方法来访问预先在Jenkins保存的凭据,并赋值给环境变量

credentials() 支持的凭据类型:

  • Secret Text

  • Secret File

  • Username and password:使用变量名_USR and 变量名_PSW 来获取其中的用户名和Password

pipeline {
    agent any
    stages {
        stage('Example Username/Password') {
            environment {
                SERVICE_CREDS = credentials('my-prefined-username-password')
            }
            steps {
                sh 'echo "Service user is $SERVICE_CREDS_USR"'
                sh 'echo "Service password is $SERVICE_CREDS_PSW"'
                sh 'curl -u $SERVICE_CREDS https://myservice.example.com'
            }
        }
    }
}

 

 

 

Jenkins凭据管理


Jenkins的凭据有很多种类型,可以将一些敏感信息存储为凭据,然后在项目中引用。 凭据-> 系统-> 全局凭据。 

 Jenkins凭据管理,在流水线部署过程当中是非常实用的,比如将一些用户账号,如gitlab管理员的一个账号等存在这里,流水线就可以去使用,凭据的作用就是存放这些账号。

Jenkins的每个凭据会有一个唯一的ID,这个ID很重要,可以自定义也可以随机生成。(后续流水线中引用都是通过ID引用的)

Jenkins的凭据有很多种类型,可以将一些敏感信息存储为凭据,然后在项目中引用。 凭据-> 系统-> 全局凭据      Token和用户名密码方式足够使用了

images

images

  • Username with password类型存储Harbor或者其他系统的用户名和密码。
  • GitLab API token类型存储Gitlab的用户API token。
  • Secret text类型可以用来存储OpenShift等系统中的token
  • Certificate类型可以用户存储证书,例如k8s的用户证书。

有用户名密码类型凭据和证书类型凭据,用户名密码是存比如gitlab用户名密码

ID让其自动生成

这样一个凭据就创建好了

Started by user admin
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/java-test
[java-test] $ /bin/sh -xe /tmp/jenkins5884252035043282157.sh
+ echo 'gitadmin value is f50b77b0-149d-42fa-b096-0db46e80a84a'
gitadmin value is f50b77b0-149d-42fa-b096-0db46e80a84a
Finished: SUCCESS

 可以看到这里传进去的是凭据的ID

secret类型的凭据 这里存放API token


这里存放token

使用凭据


images

 我们可以在项目中增加一个凭据参数,用与项目构建中使用,当我们使用pipeline类型的项目的时候,我们可以通过片段生成器生成流水线语法

此处注意:需要提前安装插件 Credentials Binding Plugin。

images

  • 选择要使用的凭据的类型 
  • 输入该凭据的账号的密码的变量名称(后续直接在流水线中使用此变量进行引用)

    images

  • 流水线代码

    withCredentials([usernamePassword(credentialsId: '24982560-17fc-4589-819b-bc5bea89da77', passwordVariable: 'password', usernameVariable: 'username')]) {
    // some block
    
    sh "curl -u ${username}:${password} xxxxxxxxx"
    }
    
    pipeline {
    agent any
    
    stages {
      stage('Hello') {
         steps {
             withCredentials([usernamePassword(credentialsId: 'c4d406ea-36de-473d-aa45-068975837137', passwordVariable: 'password', usernameVariable: 'username')]) {
             echo "{$password}"   
          }
         }
        }
      }
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值