项目
博客
归档
资源链接
关于我
项目
博客
归档
资源链接
关于我
四、【Pipeline流水线】环境变量、凭证、post、清理工作空间、内置变量
2025-05-15
·
·
原创
·
·
本文共 345个字,预计阅读需要 2分钟。
### 环境变量 - Jenkins Pipeline 提供了多种方式来定义和使用环境变量。这些环境变量可以在整个 Pipeline 的不同阶段和步骤中被引用和修改。 - 在 Pipeline 脚本中使用 environment 块来定义环境变量。可以在 Pipeline 的任何阶段和步骤中使用。 - 只在stage步骤使用的环境变量 - 使用 withEnv 步骤可以在特定的阶段或步骤中定义临时的环境变量。这些变量只在 withEnv 块内部有效,并在块外部恢复到原始值。 - 使用 script 块可以在 Pipeline 中执行 Groovy 脚本来动态定义环境变量。在 script 块内部定义的变量可以在块外部使用。 ```groovy pipeline { agent any environment { CC = 'clang' // 全局环境变量 } stages { stage('Example') { // 局部环境变量,只能够在stage中使用 environment { bb = 'golang' } steps { withEnv(['name1=join','name2=jack']){ echo "my name is ${env.name1}" sh 'my name is ${name2}' } script { env.name3 = "peter" env.name4 = "lisha" } echo "my name is ${env.name3}" sh 'my name is ${name4}' } } } } ``` ### 凭据 - 在Jenkins中,凭据(Credentials)用于存储和管理敏感信息,如用户名、密码、API密钥等。 - Jenkins提供了多种凭据类型:用户名和密码凭据、SSH凭据、证书凭据、密钥对凭据、令牌凭据 - 凭据配置: 添加凭据 - 凭据在流水线中使用: - 使用`credentials`方法访问预定义凭据中的ID。 - 调用变量`$SERVICE_CREDS`可获得账户和密码,格式 `user:password` - 调用用户名变量方法在原变量加`$_USR,$SERVICE_CREDS_USR,` - 调用密码变量方法在原变量加`$_PSW,$SERVICE_CREDS_PSW` ```groovy pipeline { agent any stages { stage('Example Username/Password') { environment { //全局凭证列表中的ID => credentials('ID') SERVICE_CREDS = credentials('my-predefined-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' } } stage('Example SSH Username with private key') { environment { SSH_CREDS = credentials('my-predefined-ssh-creds') } steps { sh 'echo "SSH private key is located at $SSH_CREDS"' sh 'echo "SSH user is $SSH_CREDS_USR"' sh 'echo "SSH passphrase is $SSH_CREDS_PSW"' } } } } ``` ### post - post介绍:定义了在管道或阶段运行完成时运行的post一个或多个附加步骤。 - 常用条件块包含有如下:always、aborted(终止)、failure、success - 失败才执行、任何情况都执行.... ```groovy pipeline { agent any stages { stage('Example') { steps { echo 'Hello World' } } } post { always { echo 'always' } success { echo 'success' } failure { echo 'failure' } aborted { echo 'aborted' } unstable { echo 'unstable' } } } ``` ### 清理工作空间 - 清理工作空间的方法为cleanWs() ```groovy ... script { cleanWs() } ... ``` - 用户变量(内置变量)与清理命名空间 ```groovy pipeline { agent any stages { stage('Example') { steps { script { cleanWs() } } } } post { success { script { env.abc = currentBuild.durationString.split("and counting")[0] currentBuild.description = "构建用户 ${BUILD_USER} \n 持续时间 ${abc}" currentBuild.displayName = "部署项目: ${JOB_NAME} 部署URL: ${JOB_URL} 构建URL: ${BUILD_URL} 部署阶段: ${STAGE_NAME}" } } } ``` ### 内置变量 - 访问Jenkins内置变量http://jenkins地址:端口/env-vars.html/ - 例: - 部署项目: ${JOB_NAME} - 构建数: ${BUILD_NUMBER} - 部署阶段:${STAGE_NAME} 参考如上