企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 凭证管理 Jenkins 的声明式流水线语法有一个 credentials()函数,它支持 secret text(加密文本)、username 和 password(用户名和密码)以及 secret file(加密文件)等。接下来看一下一些常用的凭证处理方法。 ### 1.加密文本 本实例演示将两个 Secret 文本凭证分配给单独的环境变量来访问 Amazon Web 服务,需要 提前创建这两个文件的 credentials,Jenkinsfile 文件的内容如下 ~~~json //Jenkinsfile (Declarative Pipeline) pipeline { agent any environment { AWS_ACCESS_KEY_ID = credentials('txt1') AWS_SECRET_ACCESS_KEY = credentials('txt2') } stages { stage('Example stage 1') { steps { echo "$AWS_ACCESS_KEY_ID" } } stage('Example stage 2') { steps { echo "$AWS_SECRET_ACCESS_KEY" } } } } ~~~ ### 2.用户名密码 本示例用来演示 credentials 账号密码的使用,比如使用一个公用账户访问Bitbucket、GitLab、 Harbor 等。假设已经配置完成了用户名密码形式的 credentials,凭证ID为harbor-account ~~~json //Jenkinsfile (Declarative Pipeline) pipeline { agent any environment { BITBUCKET_COMMON_CREDS = credentials('harbor-account') } stages { stage('printenv') { steps { sh "env" } } } ~~~ **上述的配置会自动生成3个环境变量** * BITBUCKET\_COMMON\_CREDS:包含一个以冒号分隔的用户名和密码,格式为 username:password * BITBUCKET\_COMMON\_CREDS\_USR:仅包含用户名的附加变量 * BITBUCKET\_COMMON\_CREDS\_PSW:仅包含密码的附加变量。 ### 3.加密文件 需要加密保存的文件,也可以使用 credential,比如链接到 Kubernetes 集群的 kubeconfig 文件等。 假如已经配置好了一个kubeconfig文件,此时可以在Pipeline中引用该文件 ~~~ //Jenkinsfile (Declarative Pipeline) pipeline { agent { kubernetes { cloud 'kubernetes' slaveConnectTimeout 1200 workspaceVolume emptyDirWorkspaceVolume() yaml ''' kind: Pod metadata: name: jenkins-agent spec: containers: - args: [\'$(JENKINS_SECRET)\', \'$(JENKINS_NAME)\'] image: '192.168.10.15/kubernetes/jnlp:alpine' name: jnlp imagePullPolicy: IfNotPresent - command: - "cat" image: "192.168.10.15/kubernetes/kubectl:apline" imagePullPolicy: "IfNotPresent" name: "kubectl" tty: true restartPolicy: Never ''' } } environment { MY_KUBECONFIG = credentials('kubernetes-cluster') } stages { stage('kubectl') { steps { container(name: 'kubectl') { sh """ kubectl get pod -A --kubeconfig $MY_KUBECONFIG """ } } } } } ~~~