Buddy创新环境变量---Jenkins目前无法企及

222 阅读3分钟

环境变量可在流水线中通过使用键值对以便重复手动更新相同的值。环境变量让开发人员节省查找和输入访问信息的时间,并消除在其脚本中提供敏感详细信息的风险。

ENV变量用于参数化构建脚本,在流水线中设置变量将致使相同的构建操作根据流水线以不同的方式工作。

设置环境变量

添加新变量时,以下字段可用:

  • 权限范围 – 定义变量的权限范围级别
  • 加密 – 启用加密将隐藏日志中的变量值
  • 类型 – 如果您设置为固定,变量的值将始终不变。切换选项至可设置将让您更改值并将其传递给下一个操作或执行。

环境变量分为4个级别:

  1. 工作区 - 适用于所有项目和流水线,在工作区选项中配置。
  2. 项目 - 可用于项目中的所有流水线,在项目选项中配置。
  3. 流水线 - 仅适用于所创建的流水线(例如,生产服务器信息),在流水线中配置。
  4. 操作 - 仅适用于定义变量的操作

危险

每个后续层都将覆盖更高层次的值。例如,如果您有两个相同的变量:一个在工作区级别定义,另一个在流水线级别定义,Buddy将使用该流水线中的流水线设置值以及帐户其余部分的工作区值。

工作区环境变量

信息

了解有关传递参数的更多信息

使用示例

让我们配置一些变量来加密对 FTP 服务器的访问:

  1. 转到您的部署流水线并点击变量选项卡

  2. 添加具有相应值的变量,例如:

    • Hostname: FTP_HOST / 192.168.0.100
    • Login: FTP_LOGIN / admin
    • Password: FTP_PASS / buddy1234

配置环境变量

  1. 现在,您可以使用变量将访问凭据存储访问到部署服务器:

使用变量于操作

支持环境变量字段

整个服务都支持环境变量,但最常用于构建操作。您可以通过在支持字段的开头输入$来预设变量:

运行变量命令

以下是当前支持的字段列表:

操作名称支持字段
Amazon S3SourcePath, Remote Path, Tag Objects Value
AWS CLIRun Commands
AWS CLI 2Run Commands
AWS ECSSource Path
AWS Lambda DeploySource Path
AWS Lambda TriggerPayload
Azure App ServiceURL, Login, Password
Azure CLIRun Commands
Azure StorageSource Path, Remote Path
Build Android AppRun Commands, Mount Filesystem Path, Mount Container Path, Working dir
Build Android React Native ApplicationRun Commands, Mount Filesystem Path, Mount Container Path, Working dir
Build Docker ImageName, Value
Build Flutter AppRun Commands, Mount Filesystem Path, Mount Container Path, Working dir
Build Ionic appMount Filesystem Path, Mount Container Path, Working dir
BugsnagAPI Key, Version, Revision, Builder Name, Release Stage
CloudFrontBase URL, Source Path
CloudflareBase URL
CodeDeploySource Path, Bucke tName, Description
Compress imagesSource Path, Destination Path
Copy filesSource Path, Remote Path
Custom BuildRun Commands, Mount Filesystem Path, Mount Container Path, Working dir
DatadogEvent Title, Content, Host, Tags, Aggregation Key
Datadog Service CheckHostname, Check
DigitalOcean DropletSource Path, Port, Login, Password, Remote Path, SSH Key Passphrase
DigitalOcean SpacesSourcePath, Remote Path
DigitalOcean Spaces CDNBaseURL
DiscordChannel, Attachments, Message
DockerfileBuild Arguments
Dockerfile LinterDockerfile, YAML file with ignores
Elastic BeanstalkSource, Version, Bucket 1, Environment 2
EmailSubject, Attachments, Message
ESLintMount Filesystem Path, Mount Container Path, Working dir
Find & replaceSource Path, Replacements
FirebaseMount Filesystem Path, Mount Container Path, Working dir
FTPSource Path, Hostname, Port, Login, Password, RemotePath
FTP DownloadHostname, Port, Login, Password, Source Path, Destination Path
FTPSSource Path, Hostname, Port, Login, Password, Remote Path
Function Deploy
GCESource Path, Hostname, Port, Login, Password, Remote Path
GCloud CLIRun Commands
GCSSourcePath, RemotePath
Ghost InspectorPath
Git PushURL, Login, Password
Gitcrypt lock
Gitcrypt unlock
Google App EngineSource Path, Bucket, Version, ImageURL
Google CDNBaseURL
Google Cloud CLIRun Commands
Google Cloud FunctionsSource Path
Google Cloud StorageSource Path, Remote Path
Google Compute EngineSource Path, Hostname, Port, Login, Password, Remote Path
Google Function Trigger
Heroku
Heroku CLIRun Commands
HoneybadgerEnvironment
HTTPEndpointURL, Login, Password, Request headers
Image compressionSource, Destination
Kubernetes ApplyServer, Username, Password, Source Path, Prune Whitelist, Grace Period
Kubernetes CLIServer, Username, Password, Run Commands
Run Kubernetes JobServer, Username, Password, YAML
Run Kubernetes PodServer, Username, Password, YAML
Set Kubernetes ImageServer, Username, Password, ImageName, Image Tag
Lambda DeploySourcePath
Lambda TriggerQualifier
Link validatorURL
LighthouseURL
Local Shell
LogglyTags
MonitoringEnvironment 3, Application 4
MS TeamsChannel email, Title, Attachments from filesystem
Netlify
New RelicDescription, Changelog, Version
Pass arguments
PHP CodeSnifferMount Filesystem Path, Mount Container Path, Working dir
PingHost
Publish APK to Google PlayAPK, Main expansion file, Patch expansion file, Service Key, Package name, Mapping file
PushbulletTitle, URL, Message
Push Docker ImageLogin, Password, Repository, Tags
PushoverTitle, URL, URL Title, Message
RackspaceSource Path, Remote Path
RaygunAccess Token, API Key, Version, User, Email, Comment
ReplaceSource Path, Replacements (name)
RollbarEnvironment, Comment, Username, Rollbar Username
RsyncSource Path, Hostname, Port, Login, Password, Remote Path
Run Docker ImageLogin, Password, Image, Version, CMD, Entrypoint
Run Helm CMDsRun Commands, Server, Username, Password
Run next pipelineComment
SentryRelease Version, Deploy Environment, Release URL, Deploy URL, Repository
Sentry On-premisesRelease Version, Deploy Environment, Release URL, Deploy URL, Repository
Sign APKSelect the APK, Location, Keystore Password, Key Alias, Output Directory, Output APK Name
SFTPSourcePath, Hostname, Port, Login, Password, Remote Path, Private SSH Key, SSH Key Passphrase
SFTP DownloadHostname, Port, Login, Password, Source Path, Destination Path, Private SSH Key, SSH Key Passphrase
ShopifySourcePath
SlackAttachments, Message
Sleep
SMSMessage
S3 DownloadSource Path, Destination
Split testsTests Path
SSHSource Path, Hostname, Port, Login, Password, RemotePath
SSL verifyWebsite URL
TCPHost, Port, String To Send, String To Expect
Theme Kit CLIRun Commands
TelegramAttachments, Message
UpCloudSource Path, Port, Login, Password, RemotePath, SSH Key Passphrase
Visual tests
VultrSourcePath, Port, Login, Password, Remote Path
Wait for approvalQuestion
WEBURL, Check For String, Login, Password, Request headers
WebDAVSource Path, Hostname, Login, Password
ZIPSource Path, Target Path, File Name

1-4 这些字段在前端不可用。但是,如果通过REST API或YAML添加操作,则变量正常工作。

危险

有些字段是HTML文本区域,不支持推荐使用变量。例如,通知中的消息字段。 但是它们确实完全支持ENV VAR。

提示

您还可以在列出的操作中使用多行环境变量

信息

如果您在此处未找到您的操作或必填字段不受支持,请联系客服:support@buddy.red

默认环境变量

Buddy 在每次执行期间填充许多环境变量 - 例如您部署的分支和执行的ID。以下是填充变量列表:

名称
BUDDYRepresents whether the current environment is a Buddy environment
BUDDY_WORKSPACE_URLThe URL of the workspace
BUDDY_WORKSPACE_IDThe ID of the workspace
BUDDY_WORKSPACE_NAMEThe ID of the workspace
BUDDY_WORKSPACE_DOMAINThe slug of the workspace
BUDDY_PROJECT_URLThe URL of the project
BUDDY_PROJECT_NAMEThe name of the project
BUDDY_PROJECT_NAME_IDThe ID of the project
BUDDY_REPO_SLUGThe slug of the repository
BUDDY_REPO_SSH_URLThe SSH URL of the repository
BUDDY_SCM_URLThe URL of the repository synchronized with the project
BUDDY_SCM_PROVIDERThe name of the Git hosting provider synchronized with the project
BUDDY_PIPELINE_URLThe URL of the executed pipeline
BUDDY_PIPELINE_IDThe ID of the executed pipeline
BUDDY_PIPELINE_NAMEThe name of the executed pipeline
BUDDY_PIPELINE_REF_NAMEThe branch/tag/pull request or a wildcard string set in the executed pipeline
BUDDY_PIPELINE_TRIGGER_MODEThe trigger mode set in the executed pipeline
BUDDY_PIPELINE_TARGET_SITE_URLThe target website URL
BUDDY_INVOKER_URLThe URL to the profile of the execution invoker
BUDDY_INVOKER_IDThe ID of the execution invoker
BUDDY_INVOKER_NAMEThe name of the execution invoker
BUDDY_INVOKER_EMAILThe email address of the execution invoker
BUDDY_INVOKER_AVATAR_URLThe URL of the avatar of the execution invoker
BUDDY_EXECUTION_URLThe URL of the current execution
BUDDY_EXECUTION_IDThe ID of the current execution
BUDDY_EXECUTION_START_DATEThe date of the current execution
BUDDY_EXECUTION_MODEThe trigger mode used to run the current execution
BUDDY_EXECUTION_CLEAR_CACHERepresents whether the cache was purged before the current execution
BUDDY_EXECUTION_REFRESHRepresents whether the files were uploaded from scratch by the deployment actions in the current execution
BUDDY_EXECUTION_COMMENTThe comment attached to the current execution
BUDDY_EXECUTION_BRANCHThe name of the Git branch of the current execution
BUDDY_EXECUTION_TAGThe name of the Git tag of the current execution (provided the execution is tagged)
BUDDY_EXECUTION_PULL_REQUEST_IDThe ID of the currently executed pull request
BUDDY_EXECUTION_PULL_REQUEST_NOThe number of the currently executed pull request
BUDDY_EXECUTION_PULL_REQUEST_BASE_BRANCHThe name of the Git BASE branch of the currently executed Pull Request
BUDDY_EXECUTION_PULL_REQUEST_HEAD_BRANCHThe name of the Git HEAD branch of the currently executed Pull Request
BUDDY_EXECUTION_PREVIOUS_REVISIONThe SHA1 hash of the commit of the previous execution
BUDDY_EXECUTION_PREVIOUS_REVISION_MESSAGEThe commit message of the previously executed revision
BUDDY_EXECUTION_PREVIOUS_REVISION_SUBJECTThe commit subject of the previously executed revision
BUDDY_EXECUTION_REVISIONThe SHA1 hash of the commit of the current execution
BUDDY_EXECUTION_REVISION_URLThe URL of the commit of the current execution
BUDDY_EXECUTION_REVISION_SHORTThe short hash of the commit of the current execution
BUDDY_EXECUTION_REVISION_MESSAGEThe commit message of the currently executed revision
BUDDY_EXECUTION_REVISION_SUBJECTThe commit subject of the currently executed revision
BUDDY_EXECUTION_REVISION_COMMITTER_EMAILThe email address of the commiter email of the currently executed revision
BUDDY_EXECUTION_REVISION_COMMITTER_NAMEThe email address of the commiter of the currently executed revision
BUDDY_EXECUTION_CHANGELOGThe list of commits pushed since the last executed revision (one commit per line)
BUDDY_EXECUTION_CHANGELOG_ADDEDThe list of files added since the last executed revision (comma-separated)
BUDDY_EXECUTION_CHANGELOG_DELETEDThe list of files deleted since the last executed revision (comma-separated)
BUDDY_EXECUTION_CHANGELOG_CHANGEDThe list of files changed since the last executed revision (comma-separated)
BUDDY_EXECUTION_TIMEThe total time of the current execution until the action is triggered (in seconds)
BUDDY_FAILED_ACTION_LOGSThe logs from the action that has failed in the current execution (one entry per line)
BUDDY_FAILED_ACTION_NAMEThe name of the action that has failed in the current execution
BUDDY_EXECUTION_WARNINGS_COUNTThe total number of warnings that appeared in the current execution
CIRepresents 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 (数字)

传递变量

在一个流水线中传递变量很有用。例如,当我们要将文件内容分配给变量并在通知中发送时:

变量传递

信息

  1. 第一个操作构建应用程序并将日志输出保存到logs.txt
  2. 如果构建失败,Local Shell操作会用export LOGS=$(cat log.txt)将logs.txt的内容分配给一个变量。
  3. 然后将日志以$LOGS作为消息内容发送到Slack频道。

危险

确保将变量设置为可设置,否则将无法更改其值。

运行之间传递变量

您也可以在运行之间传递变量的值。这些值可以保存在一个运行中,然后在另一个运行中使用,例如,您可以使用版本类型设置变量并在每次执行时递增。

信息

您可以在我们的专用指南中阅读有关语义化版本控制的更多信息.

流水线之间传递变量

您可以使用运行下一个流水线操作在流水线之间传递变量:

  1. 进入操作信息中的变量选项卡
  2. 定义变量的名称和要传递的值: 变量选项卡

信息

您可以将目标流水线中的任何变量分配为值

运行之间重置变量

要在流水线执行之间重置可设置的变量,您可以添加一个带有命令的操作,该命令将清除变量的值(最好在流水线的开头或结尾处):

export mySettableEnv=

重置变量命令

运行开始时传递变量

您可以使用传参操作参数化您的执行 - 它会暂停流水线并等待您的输入继续:

传参窗口

信息

了解有关传递变量的更多信息