环境变量可在流水线中通过使用键值对以便重复手动更新相同的值。环境变量让开发人员节省查找和输入访问信息的时间,并消除在其脚本中提供敏感详细信息的风险。
ENV变量用于参数化构建脚本,在流水线中设置变量将致使相同的构建操作根据流水线以不同的方式工作。
设置环境变量
添加新变量时,以下字段可用:
- 权限范围 – 定义变量的权限范围级别
- 加密 – 启用加密将隐藏日志中的变量值
- 类型 – 如果您设置为固定,变量的值将始终不变。切换选项至可设置将让您更改值并将其传递给下一个操作或执行。
环境变量分为4个级别:
- 工作区 - 适用于所有项目和流水线,在工作区选项中配置。
- 项目 - 可用于项目中的所有流水线,在项目选项中配置。
- 流水线 - 仅适用于所创建的流水线(例如,生产服务器信息),在流水线中配置。
- 操作 - 仅适用于定义变量的操作
危险
每个后续层都将覆盖更高层次的值。例如,如果您有两个相同的变量:一个在工作区级别定义,另一个在流水线级别定义,Buddy将使用该流水线中的流水线设置值以及帐户其余部分的工作区值。
信息
使用示例
让我们配置一些变量来加密对 FTP 服务器的访问:
-
转到您的部署流水线并点击变量选项卡
-
添加具有相应值的变量,例如:
- Hostname:
FTP_HOST/192.168.0.100 - Login:
FTP_LOGIN/admin - Password:
FTP_PASS/buddy1234
- Hostname:
- 现在,您可以使用变量将访问凭据存储访问到部署服务器:
支持环境变量字段
整个服务都支持环境变量,但最常用于构建操作。您可以通过在支持字段的开头输入$来预设变量:
以下是当前支持的字段列表:
| 操作名称 | 支持字段 |
|---|---|
| Amazon S3 | SourcePath, Remote Path, Tag Objects Value |
| AWS CLI | Run Commands |
| AWS CLI 2 | Run Commands |
| AWS ECS | Source Path |
| AWS Lambda Deploy | Source Path |
| AWS Lambda Trigger | Payload |
| Azure App Service | URL, Login, Password |
| Azure CLI | Run Commands |
| Azure Storage | Source Path, Remote Path |
| Build Android App | Run Commands, Mount Filesystem Path, Mount Container Path, Working dir |
| Build Android React Native Application | Run Commands, Mount Filesystem Path, Mount Container Path, Working dir |
| Build Docker Image | Name, Value |
| Build Flutter App | Run Commands, Mount Filesystem Path, Mount Container Path, Working dir |
| Build Ionic app | Mount Filesystem Path, Mount Container Path, Working dir |
| Bugsnag | API Key, Version, Revision, Builder Name, Release Stage |
| CloudFront | Base URL, Source Path |
| Cloudflare | Base URL |
| CodeDeploy | Source Path, Bucke tName, Description |
| Compress images | Source Path, Destination Path |
| Copy files | Source Path, Remote Path |
| Custom Build | Run Commands, Mount Filesystem Path, Mount Container Path, Working dir |
| Datadog | Event Title, Content, Host, Tags, Aggregation Key |
| Datadog Service Check | Hostname, Check |
| DigitalOcean Droplet | Source Path, Port, Login, Password, Remote Path, SSH Key Passphrase |
| DigitalOcean Spaces | SourcePath, Remote Path |
| DigitalOcean Spaces CDN | BaseURL |
| Discord | Channel, Attachments, Message |
| Dockerfile | Build Arguments |
| Dockerfile Linter | Dockerfile, YAML file with ignores |
| Elastic Beanstalk | Source, Version, Bucket 1, Environment 2 |
| Subject, Attachments, Message | |
| ESLint | Mount Filesystem Path, Mount Container Path, Working dir |
| Find & replace | Source Path, Replacements |
| Firebase | Mount Filesystem Path, Mount Container Path, Working dir |
| FTP | Source Path, Hostname, Port, Login, Password, RemotePath |
| FTP Download | Hostname, Port, Login, Password, Source Path, Destination Path |
| FTPS | Source Path, Hostname, Port, Login, Password, Remote Path |
| Function Deploy | |
| GCE | Source Path, Hostname, Port, Login, Password, Remote Path |
| GCloud CLI | Run Commands |
| GCS | SourcePath, RemotePath |
| Ghost Inspector | Path |
| Git Push | URL, Login, Password |
| Gitcrypt lock | |
| Gitcrypt unlock | |
| Google App Engine | Source Path, Bucket, Version, ImageURL |
| Google CDN | BaseURL |
| Google Cloud CLI | Run Commands |
| Google Cloud Functions | Source Path |
| Google Cloud Storage | Source Path, Remote Path |
| Google Compute Engine | Source Path, Hostname, Port, Login, Password, Remote Path |
| Google Function Trigger | |
| Heroku | |
| Heroku CLI | Run Commands |
| Honeybadger | Environment |
| HTTP | EndpointURL, Login, Password, Request headers |
| Image compression | Source, Destination |
| Kubernetes Apply | Server, Username, Password, Source Path, Prune Whitelist, Grace Period |
| Kubernetes CLI | Server, Username, Password, Run Commands |
| Run Kubernetes Job | Server, Username, Password, YAML |
| Run Kubernetes Pod | Server, Username, Password, YAML |
| Set Kubernetes Image | Server, Username, Password, ImageName, Image Tag |
| Lambda Deploy | SourcePath |
| Lambda Trigger | Qualifier |
| Link validator | URL |
| Lighthouse | URL |
| Local Shell | |
| Loggly | Tags |
| Monitoring | Environment 3, Application 4 |
| MS Teams | Channel email, Title, Attachments from filesystem |
| Netlify | |
| New Relic | Description, Changelog, Version |
| Pass arguments | |
| PHP CodeSniffer | Mount Filesystem Path, Mount Container Path, Working dir |
| Ping | Host |
| Publish APK to Google Play | APK, Main expansion file, Patch expansion file, Service Key, Package name, Mapping file |
| Pushbullet | Title, URL, Message |
| Push Docker Image | Login, Password, Repository, Tags |
| Pushover | Title, URL, URL Title, Message |
| Rackspace | Source Path, Remote Path |
| Raygun | Access Token, API Key, Version, User, Email, Comment |
| Replace | Source Path, Replacements (name) |
| Rollbar | Environment, Comment, Username, Rollbar Username |
| Rsync | Source Path, Hostname, Port, Login, Password, Remote Path |
| Run Docker Image | Login, Password, Image, Version, CMD, Entrypoint |
| Run Helm CMDs | Run Commands, Server, Username, Password |
| Run next pipeline | Comment |
| Sentry | Release Version, Deploy Environment, Release URL, Deploy URL, Repository |
| Sentry On-premises | Release Version, Deploy Environment, Release URL, Deploy URL, Repository |
| Sign APK | Select the APK, Location, Keystore Password, Key Alias, Output Directory, Output APK Name |
| SFTP | SourcePath, Hostname, Port, Login, Password, Remote Path, Private SSH Key, SSH Key Passphrase |
| SFTP Download | Hostname, Port, Login, Password, Source Path, Destination Path, Private SSH Key, SSH Key Passphrase |
| Shopify | SourcePath |
| Slack | Attachments, Message |
| Sleep | |
| SMS | Message |
| S3 Download | Source Path, Destination |
| Split tests | Tests Path |
| SSH | Source Path, Hostname, Port, Login, Password, RemotePath |
| SSL verify | Website URL |
| TCP | Host, Port, String To Send, String To Expect |
| Theme Kit CLI | Run Commands |
| Telegram | Attachments, Message |
| UpCloud | Source Path, Port, Login, Password, RemotePath, SSH Key Passphrase |
| Visual tests | |
| Vultr | SourcePath, Port, Login, Password, Remote Path |
| Wait for approval | Question |
| WEB | URL, Check For String, Login, Password, Request headers |
| WebDAV | Source Path, Hostname, Login, Password |
| ZIP | Source Path, Target Path, File Name |
1-4 这些字段在前端不可用。但是,如果通过REST API或YAML添加操作,则变量正常工作。
危险
有些字段是HTML文本区域,不支持推荐使用变量。例如,通知中的消息字段。 但是它们确实完全支持ENV VAR。
提示
您还可以在列出的操作中使用多行环境变量
信息
如果您在此处未找到您的操作或必填字段不受支持,请联系客服:support@buddy.red
默认环境变量
Buddy 在每次执行期间填充许多环境变量 - 例如您部署的分支和执行的ID。以下是填充变量列表:
| 名称 | 值 |
|---|---|
BUDDY | Represents whether the current environment is a Buddy environment |
BUDDY_WORKSPACE_URL | The URL of the workspace |
BUDDY_WORKSPACE_ID | The ID of the workspace |
BUDDY_WORKSPACE_NAME | The ID of the workspace |
BUDDY_WORKSPACE_DOMAIN | The slug of the workspace |
BUDDY_PROJECT_URL | The URL of the project |
BUDDY_PROJECT_NAME | The name of the project |
BUDDY_PROJECT_NAME_ID | The ID of the project |
BUDDY_REPO_SLUG | The slug of the repository |
BUDDY_REPO_SSH_URL | The SSH URL of the repository |
BUDDY_SCM_URL | The URL of the repository synchronized with the project |
BUDDY_SCM_PROVIDER | The name of the Git hosting provider synchronized with the project |
BUDDY_PIPELINE_URL | The URL of the executed pipeline |
BUDDY_PIPELINE_ID | The ID of the executed pipeline |
BUDDY_PIPELINE_NAME | The name of the executed pipeline |
BUDDY_PIPELINE_REF_NAME | The branch/tag/pull request or a wildcard string set in the executed pipeline |
BUDDY_PIPELINE_TRIGGER_MODE | The trigger mode set in the executed pipeline |
BUDDY_PIPELINE_TARGET_SITE_URL | The target website URL |
BUDDY_INVOKER_URL | The URL to the profile of the execution invoker |
BUDDY_INVOKER_ID | The ID of the execution invoker |
BUDDY_INVOKER_NAME | The name of the execution invoker |
BUDDY_INVOKER_EMAIL | The email address of the execution invoker |
BUDDY_INVOKER_AVATAR_URL | The URL of the avatar of the execution invoker |
BUDDY_EXECUTION_URL | The URL of the current execution |
BUDDY_EXECUTION_ID | The ID of the current execution |
BUDDY_EXECUTION_START_DATE | The date of the current execution |
BUDDY_EXECUTION_MODE | The trigger mode used to run the current execution |
BUDDY_EXECUTION_CLEAR_CACHE | Represents whether the cache was purged before the current execution |
BUDDY_EXECUTION_REFRESH | Represents whether the files were uploaded from scratch by the deployment actions in the current execution |
BUDDY_EXECUTION_COMMENT | The comment attached to the current execution |
BUDDY_EXECUTION_BRANCH | The name of the Git branch of the current execution |
BUDDY_EXECUTION_TAG | The name of the Git tag of the current execution (provided the execution is tagged) |
BUDDY_EXECUTION_PULL_REQUEST_ID | The ID of the currently executed pull request |
BUDDY_EXECUTION_PULL_REQUEST_NO | The number of the currently executed pull request |
BUDDY_EXECUTION_PULL_REQUEST_BASE_BRANCH | The name of the Git BASE branch of the currently executed Pull Request |
BUDDY_EXECUTION_PULL_REQUEST_HEAD_BRANCH | The name of the Git HEAD branch of the currently executed Pull Request |
BUDDY_EXECUTION_PREVIOUS_REVISION | The SHA1 hash of the commit of the previous execution |
BUDDY_EXECUTION_PREVIOUS_REVISION_MESSAGE | The commit message of the previously executed revision |
BUDDY_EXECUTION_PREVIOUS_REVISION_SUBJECT | The commit subject of the previously executed revision |
BUDDY_EXECUTION_REVISION | The SHA1 hash of the commit of the current execution |
BUDDY_EXECUTION_REVISION_URL | The URL of the commit of the current execution |
BUDDY_EXECUTION_REVISION_SHORT | The short hash of the commit of the current execution |
BUDDY_EXECUTION_REVISION_MESSAGE | The commit message of the currently executed revision |
BUDDY_EXECUTION_REVISION_SUBJECT | The commit subject of the currently executed revision |
BUDDY_EXECUTION_REVISION_COMMITTER_EMAIL | The email address of the commiter email of the currently executed revision |
BUDDY_EXECUTION_REVISION_COMMITTER_NAME | The email address of the commiter of the currently executed revision |
BUDDY_EXECUTION_CHANGELOG | The list of commits pushed since the last executed revision (one commit per line) |
BUDDY_EXECUTION_CHANGELOG_ADDED | The list of files added since the last executed revision (comma-separated) |
BUDDY_EXECUTION_CHANGELOG_DELETED | The list of files deleted since the last executed revision (comma-separated) |
BUDDY_EXECUTION_CHANGELOG_CHANGED | The list of files changed since the last executed revision (comma-separated) |
BUDDY_EXECUTION_TIME | The total time of the current execution until the action is triggered (in seconds) |
BUDDY_FAILED_ACTION_LOGS | The logs from the action that has failed in the current execution (one entry per line) |
BUDDY_FAILED_ACTION_NAME | The name of the action that has failed in the current execution |
BUDDY_EXECUTION_WARNINGS_COUNT | The total number of warnings that appeared in the current execution |
CI | Represents whether the current environment is another CI environment |
您可以在下面找到上述变量的示例值列表:
BUDDY=true
BUDDY_WORKSPACE_URL=https://app.buddy.works/myworkspace
BUDDY_WORKSPACE_ID=1
BUDDY_WORKSPACE_NAME=My Workspace
BUDDY_WORKSPACE_DOMAIN=myworkspace
BUDDY_PROJECT_URL=https://app.buddy.works/myworkspace/my-project
BUDDY_PROJECT_NAME=my-project
BUDDY_PROJECT_NAME_ID=my-project
BUDDY_REPO_SLUG=buddyworks/my-project
BUDDY_REPO_SSH_URL=git@github.com:buddyworks/my-project
BUDDY_SCM_URL=https://github.com/buddyworks/my-project
BUDDY_SCM_PROVIDER=GITHUB
BUDDY_PIPELINE_URL=https://app.buddy.works/myworkspace/my-project/pipelines/pipeline/1
BUDDY_PIPELINE_ID=1
BUDDY_PIPELINE_NAME=Deploy to Production
BUDDY_PIPELINE_REF_NAME=master
BUDDY_PIPELINE_TRIGGER_MODE=CLICK
BUDDY_PIPELINE_TARGET_SITE_URL=https://buddy.works/
BUDDY_INVOKER_URL=https://app.buddy.works/myworkspace/profile/1
BUDDY_INVOKER_ID=1
BUDDY_INVOKER_NAME=Mike Benson
BUDDY_INVOKER_EMAIL=mikebenson@buddy.works
BUDDY_INVOKER_AVATAR_URL=https://app.buddy.works/image-server/user/0/0/0/0/0/0/1/05d20f3d58ce09a3b4e9g3334a810603/w/32/32/AVATAR.png
BUDDY_EXECUTION_URL=https://app.buddy.works/myworkspace/my-project/pipelines/pipeline/1/execution/5d9dc42c422f5a268b389d08
BUDDY_EXECUTION_ID=1
BUDDY_EXECUTION_START_DATE=2019-01-01T11:27:40.140Z
BUDDY_EXECUTION_MODE=CLICK
BUDDY_EXECUTION_CLEAR_CACHE=false
BUDDY_EXECUTION_REFRESH=false
BUDDY_EXECUTION_COMMENT=My first execution
BUDDY_EXECUTION_BRANCH=master
BUDDY_EXECUTION_TAG=v1.0
BUDDY_EXECUTION_PULL_REQUEST_ID=pull/1
BUDDY_EXECUTION_PULL_REQUEST_NO=1
BUDDY_EXECUTION_PULL_REQUEST_BASE_BRANCH=master
BUDDY_EXECUTION_PULL_REQUEST_HEAD_BRANCH=master/feature1
BUDDY_EXECUTION_REVISION=e5e13f8b7f8d5c6096a0501dc09b48eef05fea96
BUDDY_EXECUTION_REVISION_URL=https://app.buddy.works/myworkspace/my-project/repository/commit/e5e13f8b7f8d5c6096a0501dc09b48eef05fea96
BUDDY_EXECUTION_REVISION_SHORT=e5e13f8
BUDDY_EXECUTION_REVISION_MESSAGE=Create buddy.yml
BUDDY_EXECUTION_REVISION_SUBJECT=Create buddy.yml
BUDDY_EXECUTION_REVISION_COMMITTER_EMAIL=mikebenson@buddy.works
BUDDY_EXECUTION_REVISION_COMMITTER_NAME=Mike Benson
BUDDY_EXECUTION_CHANGELOG=[e5e13f8] Create buddy.yml | mikebenson | 2019-01-01T07:14:58
BUDDY_FAILED_ACTION_NAME=Upload files
将变量组合成词组
变量可以与其他词组合以创建更长的短语,例如,自动命名您的基础设施、版本或沙盒。但是您需要遵守以下规则:
- 变量之前: 允许任何字符
- 变量之后: 不允许字母、数字和下杠(
_)
正确用法:
release-$BUDDY_EXECUTION_ID-staging
release$BUDDY_EXECUTION_ID:staging
release_$BUDDY_EXECUTION_ID[staging]
错误用法:
release-$BUDDY_EXECUTION_ID_staging (下杠)
release-$BUDDY_EXECUTION_IDstaging (字母)
release-$BUDDY_EXECUTION_ID1staging (数字)
传递变量
在一个流水线中传递变量很有用。例如,当我们要将文件内容分配给变量并在通知中发送时:
信息
- 第一个操作构建应用程序并将日志输出保存到
logs.txt - 如果构建失败,Local Shell操作会用
export LOGS=$(cat log.txt)将logs.txt的内容分配给一个变量。 - 然后将日志以
$LOGS作为消息内容发送到Slack频道。
危险
确保将变量设置为可设置,否则将无法更改其值。
运行之间传递变量
您也可以在运行之间传递变量的值。这些值可以保存在一个运行中,然后在另一个运行中使用,例如,您可以使用版本类型设置变量并在每次执行时递增。
信息
流水线之间传递变量
- 进入操作信息中的变量选项卡
- 定义变量的名称和要传递的值:
信息
您可以将目标流水线中的任何变量分配为值
运行之间重置变量
要在流水线执行之间重置可设置的变量,您可以添加一个带有命令的操作,该命令将清除变量的值(最好在流水线的开头或结尾处):
export mySettableEnv=
运行开始时传递变量
您可以使用传参操作参数化您的执行 - 它会暂停流水线并等待您的输入继续:
信息