jenkins学习笔记-3-使用环境变量

来源:互联网 发布:org域名不能认证 编辑:程序博客网 时间:2024/05/17 08:00


使用环境变量

环境变量可以设置成全局的,就像下面的例子。环境变量也可以设置在每个阶段stage中。正如你料想,每个阶段设置环境变量意味着这些环境变量只在定义了变量的阶段中有效。

 

 

JenkinsfileDeclarative Pipeline

pipeline{

        agentany

   

environment{

   DISABLE_AUTH=’TRUE’

   DB_ENGINE=’sqlite’

}

 

stages{

   stage(‘Build’){

   steps{

   sh ‘printenv’

}

 

}

}

}

 

 

Toggle ScriptedPipeline(高级)

 

Jenkinsfile (Scripted Pipeline)

node {

   withEnv(['DISABLE_AUTH=true',

            'DB_ENGINE=sqlite']) {

       stage('Build') {

           sh 'printenv'

       }

   }

}

 

 

 

这种在Jenkinsfile里面定义环境变量的方式对指令脚本,例如Makefile,区别配置执行kenkins内部的构建和测试阶段是非常有用的。

另外一个常见的使用环境变量的方式是设置或者覆盖构建或者测试脚本里面的dummy认证信息。由于把认证信息直接放进jenkinsfile里面是一种并不高明的处理方式,kenkins通道允许用户快速且安全的访问在Jenkinsfile文件里提前定义好的认证信息变量,而不需要知道认证信息的值是什么。

 

环境变量里的认证信息

如果你的jenkins环境包含认证信息的配置,例如构建私钥(build secrets)或者接口(api)访问令牌(token)等可以简单插入到环境变量中供通道使用。下面的代码片段用于机密文本类型凭证。例如:

environment {

   AWS_ACCESS_KEY_ID    =credentials('AWS_ACCESS_KEY_ID')

   AWS_SECRET_ACCESS_KEY = credentials('AWS_SECRET_ACCESS_KEY')

}

正如第一个例子,这些变量将在全局或每个阶段都可用,这取决于环境指令位于jenkinsfile中的位置。

environment {

  SAUCE_ACCESS =credentials('sauce-lab-dev')

}

 

这实际上会设置三个环境变量

SAUCE_ACCESS包含<username>:<password>

SAUCE_ACCESS_USR包含用户名

SAUCE_ACCESS_PSW包含密码

 

认证信息只在声明式的同道中可用。对那些使用脚本式的通道的人,查看withCredentials步骤的文档。

到目前为止,我们关注的是创建一个配置和执行我们可能期望的方式的管道。在接下来的几节中,我们将介绍连续交付的另一个关键方面:surfacing feedbackand information