- 环境变量
环境变量
悟空平台提供了将环境变量传递给单个流水线步骤的能力.示例流水线步骤与自定义环境变量:
pipeline:
build:
image: golang
+ environment:
+ - CGO=0
+ - GOOS=linux
+ - GOARCH=amd64
commands:
- go build
- go test
请注意,环境部分无法扩展环境变量. 如果您需要扩展变量,则应在命令部分导出它们.
pipeline:
build:
image: golang
- environment:
- - PATH=$PATH:/go
commands:
+ - export PATH=$PATH:/go
- go build
- go test
请注意,${variable}表达式要受到预处理. 如果您不希望预处理器评估表达式,则必须转义:
pipeline:
build:
image: golang
commands:
- - export PATH=${PATH}:/go
+ - export PATH=$${PATH}:/go
- go build
- go test
内置环境变量 这是所有可用于流水线容器的环境变量的参考列表. 这些变量在运行时注入到您的流水线步骤和插件容器中.
名称 | 描述 |
---|---|
CI=woodpecker | 环境是 woodpecker |
Repository | |
CI_REPO | 存储库全名 <owner>/<name> |
CI_REPO_OWNER | 存储库所有者 |
CI_REPO_NAME | 存储库名称 |
CI_REPO_REMOTE_ID | 存储库远程ID,它在代码托管服务器上的UID |
CI_REPO_SCM | 存储库SCM(git) |
CI_REPO_URL | 存储库Web URL |
CI_REPO_CLONE_URL | 存储库克隆URL |
CI_REPO_DEFAULT_BRANCH | 存储库默认分支(master) |
CI_REPO_PRIVATE | 存储库是私有的 |
CI_REPO_TRUSTED | 存储库是受信任的 |
Current Commit | |
CI_COMMIT_SHA | 提交的SHA值 |
CI_COMMIT_REF | 提交的引用 |
CI_COMMIT_REFSPEC | 提交的引用规范 |
CI_COMMIT_BRANCH | 提交的分支(等于拉取请求的目标分支) |
CI_COMMIT_SOURCE_BRANCH | 提交的源分支 |
CI_COMMIT_TARGET_BRANCH | 提交的目标分支 |
CI_COMMIT_TAG | 提交的标记名称(如果事件不是标记则为空) |
CI_COMMIT_PULL_REQUEST | 提交的拉取请求编号(如果事件不是拉取请求则为空) |
CI_COMMIT_PULL_REQUEST_LABELS | 分配给拉取请求的标签(如果事件不是拉取请求则为空) |
CI_COMMIT_URL | 存储库中的提交链接 |
CI_COMMIT_MESSAGE | 提交消息 |
CI_COMMIT_AUTHOR | 提交作者用户名 |
CI_COMMIT_AUTHOR_EMAIL | 提交作者电子邮件地址 |
CI_COMMIT_AUTHOR_AVATAR | 提交作者头像 |
Current pipeline | |
CI_PIPELINE_NUMBER | 流水线编号 |
CI_PIPELINE_PARENT | 父流水线编号 |
CI_PIPELINE_EVENT | 流水线事件(推送、拉取请求、标记、部署) |
CI_PIPELINE_URL | 推送或标记触发的流水线的Web UI链接 |
CI_PIPELINE_DEPLOY_TARGET | 部署事件的目标(如production) |
CI_PIPELINE_STATUS | 流水线状态(成功、失败) |
CI_PIPELINE_CREATED | 流水线创建的UNIX时间戳 |
CI_PIPELINE_STARTED | 流水线开始的UNIX时间戳 |
CI_PIPELINE_FINISHED | 流水线完成的UNIX时间戳 |
Current workflow | |
CI_WORKFLOW_NAME | 工作流名称 |
Current step | |
CI_STEP_NAME | 步骤名称 |
CI_STEP_STATUS | 步骤状态(成功、失败) |
CI_STEP_STARTED | 步骤开始的UNIX时间戳 |
CI_STEP_FINISHED | 步骤完成的UNIX时间戳 |
Previous commit | |
CI_PREV_COMMIT_SHA | 前一个提交的SHA值 |
CI_PREV_COMMIT_REF | 前一个提交的引用 |
CI_PREV_COMMIT_REFSPEC | 前一个提交的引用规范 |
CI_PREV_COMMIT_BRANCH | 前一个提交的分支 |
CI_PREV_COMMIT_SOURCE_BRANCH | 前一个提交的源分支 |
CI_PREV_COMMIT_TARGET_BRANCH | 前一个提交的目标分支 |
CI_PREV_COMMIT_URL | 前一个提交在代码托管服务器的链接 |
CI_PREV_COMMIT_MESSAGE | 前一个提交的消息 |
CI_PREV_COMMIT_AUTHOR | 前一个提交的作者用户名 |
CI_PREV_COMMIT_AUTHOR_EMAIL | 前一个提交的作者电子邮件地址 |
CI_PREV_COMMIT_AUTHOR_AVATAR | 前一个提交的作者头像 |
Previous pipeline | |
CI_PREV_PIPELINE_NUMBER | 前一个流水线编号 |
CI_PREV_PIPELINE_PARENT | 前一个流水线的父流水线编号 |
CI_PREV_PIPELINE_EVENT | 前一个流水线的事件(推送、拉取请求、标记、部署) |
CI_PREV_PIPELINE_URL | 前一个流水线的Web UI链接 |
CI_PREV_PIPELINE_DEPLOY_TARGET | 部署事件的前一个流水线的目标(如production) |
CI_PREV_PIPELINE_STATUS | 前一个流水线的状态(成功、失败) |
CI_PREV_PIPELINE_CREATED | 前一个流水线创建的UNIX时间戳 |
CI_PREV_PIPELINE_STARTED | 前一个流水线开始的UNIX时间戳 |
CI_PREV_PIPELINE_FINISHED | 前一个流水线完成的UNIX时间戳 |
CI_WORKSPACE | 源代码被克隆到的工件的路径 |
System | |
CI_SYSTEM_NAME | CI系统的名称:woodpecker |
CI_SYSTEM_URL | CI系统的链接 |
CI_SYSTEM_HOST | CI服务器的主机名 |
CI_SYSTEM_VERSION | 服务器版本 |
Forge | |
CI_FORGE_TYPE | Forge(如gitea、github等)的名称 |
CI_FORGE_URL | 已配置Forge的根URL |
Internal - Please don't use! | |
CI_SCRIPT | 内部脚本路径.用于调用流水线步骤命令. |
CI_NETRC_USERNAME | 用于能够克隆数据的私有存储库的凭据. (仅适用于特定镜像) |
CI_NETRC_PASSWORD | 用于能够克隆数据的私有存储库的凭据. (仅适用于特定镜像) |
CI_NETRC_MACHINE | 用于能够克隆数据的私有存储库的凭据. (仅适用于特定镜像) |
全局环境变量
如果您希望特定的环境变量在所有流水线中都可用,请在悟空服务器上使用 WOODPECKER_ENVIRONMENT
设置.请注意,这些变量不能覆盖任何现有的内置变量.
services:
woodpecker-server:
[...]
environment:
- [...]
+ - WOODPECKER_ENVIRONMENT=first_var:value1,second_var:value2
这些变量可以用于管理多个项目使用的镜像标签等场景.
重新生成
pipeline:
build:
- image: golang:1.18
+ image: golang:${GOLANG_VERSION}
commands:
- [...]
environment:
- [...]
+ - WOODPECKER_ENVIRONMENT=GOLANG_VERSION:1.18
字符串替换
悟空平台提供了在运行时替换环境变量的能力.这使我们在流水线配置中使用动态设置、命令和过滤器.
示例提交替换:
pipeline:
docker:
image: plugins/docker
settings:
+ tags: ${CI_COMMIT_SHA}
示例标记替换:
pipeline:
docker:
image: plugins/docker
settings:
+ tags: ${CI_COMMIT_TAG}
字符串操作
悟空平台还模拟了bash字符串操作.这使我们能够在替换之前操作字符串.示例用例可能包括子字符串和剥离前缀或后缀值.
操作(OPERATION) | 描述(DESCRIPTION) |
---|---|
${param} | 参数替换 |
${param,} | 参数替换,小写首字母 |
${param,,} | 参数替换,全小写 |
${param^} | 参数替换,大写首字母 |
${param^^} | 参数替换,全大写 |
${param:pos} | 参数替换,子串 |
${param:pos:len} | 参数替换,子串及长度 |
${param=default} | 参数替换,指定默认值 |
${param##prefix} | 参数替换,去除前缀 |
${param%%suffix} | 参数替换,去除后缀 |
${param/old/new} | 参数替换,使用查找和替换功能 |
使用子字符串替换变量的示例:
pipeline:
docker:
image: plugins/docker
settings:
+ tags: ${CI_COMMIT_SHA:0:8}
示例变量替换从v.1.0.0中删除v前缀:
pipeline:
docker:
image: plugins/docker
settings:
+ tags: ${CI_COMMIT_TAG##v}