环境变量

最近更新时间:2024-08-02 15:23:01

我的收藏
本文为您介绍如何在构建计划设置中设置环境变量。

前提条件

设置 CODING 持续集成中构建环境前,您的腾讯云账号需要开通 CODING DevOps 服务,详情请参见 开通服务

进入项目

1. 登录 CODING 控制台,单击团队域名进入 CODING 使用页面。
2. 进入目标项目后,选择左侧导航栏的持续集成。

功能介绍

持续集成过程中,我们总会将一些配置(如:账号密码/版本号等)信息以环境变量的形式注入到构建过程中。CODING 持续集成支持多种环境变量使用形式,您可以同时使用以下几种方式来为构建过程注入环境变量,其优先级为从上到下(排在前面的配置优先级最高):
Jenkinsfile 中的 withEnv。
Jenkinsfile 中的 environment。
构建计划(Job)中的启动参数。
构建计划(Job)设置中的环境变量。
构建过程中系统内置的环境变量。

下文将详细介绍这几种方式的详细说明。

withEnv 与 environment

1. 您可以在 Jenkinsfile 中使用 environment 来定义环境变量(如下所示):
pipeline {
agent any
environment {
MY_PROJECT = 'project-1'
MY_TEAM = 'team-1'
}
stages {
stage('Build') {
steps {
echo "MY_PROJECT is ${MY_PROJECT}"
echo "MY_TEAM is ${MY_TEAM}"
// 输出内容如下所示:
// MY_PROJECT is project-1
// MY_TEAM is team-1
}
}
}
}
2. 在构建过程中,可能需要在不同的阶段使用同名的环境变量。可以使用 withEnv 来针对部分操作设置环境变量,避免全局的环境变量污染。 withEnv 中所执行的 step ,都将优先使用 withEnv 设置的环境变量。具体效果可以参考以下例子:
pipeline {
agent any
environment {
MY_PROJECT = 'project-1'
MY_TEAM = 'team-1'
}
stages {
stage('Build') {
steps {
echo "MY_PROJECT is ${MY_PROJECT}"
echo "MY_TEAM is ${MY_TEAM}"
// 输出内容如下所示:
// MY_PROJECT is project-1
// MY_TEAM is team-1
// withEnv 中设置的环境变量只对作用域下的 step 有效,优先级高于 environment
withEnv(['MY_PROJECT=project-2']) {
echo "MY_PROJECT is ${MY_PROJECT}"
echo "MY_TEAM is ${MY_TEAM}"
// 输出内容如下所示:
// MY_PROJECT is project-2
// MY_TEAM is team-1
}
}
}
}
}
如果您想了解更多 Jenkinsfile 环境变量相关内容,请参见 使用环境变量

构建计划中的启动参数

优先级仅次于 Jenkinsfile 中配置的环境变量,您可以在启动构建计划时,选择或填写对应的环境变量值。




添加环境变量

除了在 Jenkinsfile 中硬编码环境变量,还可以在构建计划的配置中进行设置。目前 CODING 支持添加以下四种类别的环境变量:字符串、单选、多选、CODING 凭据。您还可以将构建计划中的环境变量配置视为启动参数的默认值。




系统内置的环境变量

CODING 持续集成在构建过程中,会为每一个构建任务注入对应的环境变量,默认注入的环境变量列表您可以在构建快照中查看:



所有环境变量汇总如下,按照不同的触发规则(代码更新时触发、定时触发、合并请求时触发)进行分类介绍:
序号
变量名
变量含义
代码更新时触发
定时触发
合并请求时触发
1
CREDENTIALS_ID
部署私钥凭据 CredentialsId 用于拉取仓库
2
DOCKER_REGISTRY_CREDENTIALS_ID
docker 私钥凭据 CredentialsId(等同于 CODING_ARTIFACTS_CREDENTIALS_ID)
3
CODING_ARTIFACTS_CREDENTIALS_ID
制品库私钥凭据 CredentialsId 用于拉取项目内的制品库
4
GIT_HTTP_URL
HTTPS 协议代码仓库地址
5
GIT_BUILD_REF
构建对应的 Git 修订版本号
6
GIT_DEPLOY_KEY
代码仓库的部署公钥
7
GIT_COMMIT
当前版本的修订版本号
7
GIT_COMMIT_SHORT
修订版本号的前 7 位
8
GIT_PREVIOUS_COMMIT
前一个构建运行编号的修订版本号
9
GIT_AUTHOR_EMAIL
本版本最新提交作者邮箱
10
GIT_SSH_URL
协议代码仓库地址
11
GIT_COMMITTER_NAME
本版本最新提交者名称
12
GIT_AUTHOR_NAME
本版本最新提交作者名称
13
REF
要构建的版本
14
GIT_PREVIOUS_SUCCESSFUL_COMMIT
前一个构建运行成功的修订版本号
15
GIT_COMMITTER_EMAIL
本版本最新提交者名称
16
GIT_BRANCH
触发构建的分支
17
GIT_URL
仓库 SSH 协议地址
18
GIT_LOCAL_BRANCH/BRANCH_NAME
本地分支名称
19
FETCH_REF_SPECS
git 要检出的 refs
20
GIT_REPO_URL
仓库 SSH 地址
21
JOB_ID
构建计划 ID
22
JOB_NAME
构建计划名称
23
CI_BUILD_NUMBER
构建编号
24
PROJECT_ID
项目 ID
25
PROJECT_NAME
项目名称
26
PROJECT_WEB_URL
项目网页地址
27
PROJECT_API_URL
项目后端 API 地址
28
PROJECT_TOKEN
项目令牌密码用于读取项目
29
PROJECT_TOKEN_GK
项目令牌用户名
30
GIT_TAG
触发构建的 Git 标签 (仅在使用标签构建的时候才会有)
-
-
31
DEPOT_NAME
当前使用的代码仓库名称
-
-
32
CCI_CURRENT_PROJECT_COMMON_CREDENTIALS_ID (即将上线)
内置项目令牌的 CredentialsId
-
-
33
CCI_CURRENT_TEAM (即将上线)
当前构建环境的企业名,如:myteam.coding.net 中的 myteam
-
-
34
CCI_CURRENT_DOMAIN (即将上线)
当前构建环境的域名,如: myteam.coding.net 中的 coding.net
-
-
35
MR_RESOURCE_ID
合并请求 ID
-
-
36
MR_TARGET_BRANCH
合并请求目标分支名
-
-
37
MR_TARGET_SHA
合并请求目标分支版本号
-
-
38
MR_MERGED_SHA
模拟合并完的版本号
-
-
39
MR_SOURCE_BRANCH
合并请求源分支名
-
-
40
MR_STATUS
合并请求状态
-
-
41
MR_SOURCE_SHA
合并请求源分支版本号
-
-