跳到主要内容

数据库迁移与自定义脚本

使用SSH操作迁移数据库并远程运行自定义脚本

除了150多个即用型操作之外,Buddy还支持您可以作为构建的一部分运行或直接在服务器上运行的脚本。 例如,部署完成后,您可以连接到服务器、迁移数据库并重启应用程序:

流水线流程脚本

SSH命令

SSH操作用于在部署之前、期间或之后在任何类型的Linux服务器上运行脚本。除了上面的示例之外,流行的用例还包括从Git存储仓中提取更改、执行备份以及在服务器上运行PHP Composer。

您可以定义多行命令,这些命令将作为单个脚本运行。配置类似于SFTP操作,需要提供服务器相关信息、授权数据和要运行的命令:

SSH流程脚本

提醒

该操作需要在服务器上使用Base64。如果您没有安装Base64,您可以关闭命令框底部的"将所有命令作为单个脚本运行"选项。 在这种情况下,每一行都将在一个单独的会话中执行。

模式一:作为脚本运行

此为默认的运行模式。您可以在SH或BASH特定语法之间进行选择,并在命令和URL中使用Buddy变量和参数。

模式二:逐行运行

如果关闭模式,命令将以非交互模式执行。 这意味着:

  • 每一行都在工作目录的相互关联中执行(默认:用户的主目录)
  • 命令行从上到下执行命令
  • 每个命令应该是一个单独行
  • 如果命令失败,则不会执行下一行并且操作将失败(除非您选取忽略错误) - 使用绝对路径:cd命令不会被带到下一行
  • 您可以在命令和URL中使用Buddy特定的变量和参数。
  • 命令行之间的环境变量不共享
  • 如果您想使用更复杂的脚本,建议从服务器端调用(确保返回的退出码正确无误)。

运行存储仓脚本

如果要运行的脚本位于存储仓中,则需要先将其上传到服务器。只需为您的服务器类型选择部署操作,然后通过SSH执行:

上传存储仓源码

构建命令

您还可以在部署之前使用构建操作直接在Buddy的服务器上运行脚本:编译资源、下载依赖项、运行测试等。Buddy中的所有构建操作都带有预配置的命令,具体取决于框架和环境。您可以添加创建复杂脚本所需的许多命令:

Node执行命令

支持环境变量

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

BUDDY_WORKSPACE_URL
BUDDY_WORKSPACE_ID
BUDDY_WORKSPACE_NAME
BUDDY_WORKSPACE_DOMAIN
BUDDY_PROJECT_URL
BUDDY_PROJECT_NAME
BUDDY_PROJECT_NAME_ID
BUDDY_REPO_SLUG
BUDDY_INVOKER_URL
BUDDY_INVOKER_ID
BUDDY_INVOKER_NAME
BUDDY_INVOKER_EMAIL
BUDDY_INVOKER_AVATAR_URL
BUDDY_EXECUTION_URL
BUDDY_EXECUTION_ID
BUDDY_EXECUTION_START_DATE
BUDDY_EXECUTION_MODE
BUDDY_EXECUTION_CLEAR_CACHE
BUDDY_EXECUTION_REFRESH
BUDDY_EXECUTION_COMMENT
BUDDY_EXECUTION_BRANCH
BUDDY_EXECUTION_TAG
BUDDY_EXECUTION_PULL_REQUEST_ID
BUDDY_EXECUTION_PREVIOUS_REVISION
BUDDY_EXECUTION_PREVIOUS_REVISION_MESSAGE
BUDDY_EXECUTION_REVISION
BUDDY_EXECUTION_REVISION_SHORT
BUDDY_EXECUTION_REVISION_MESSAGE
BUDDY_EXECUTION_REVISION_SUBJECT
BUDDY_EXECUTION_REVISION_COMMITTER_EMAIL
BUDDY_PIPELINE_URL
BUDDY_PIPELINE_ID
BUDDY_PIPELINE_NAME
BUDDY_PIPELINE_REF_NAME
BUDDY_PIPELINE_TRIGGER_MODE
BUDDY_PIPELINE_TARGET_SITE_URL
BUDDY_FAILED_ACTION_LOGS
BUDDY_FAILED_ACTION_NAME
BUDDY_EXECUTION_CHANGELOG
BUDDY_EXECUTION_PULL_REQUEST_NO
BUDDY_EXECUTION_PREVIOUS_REVISION_SUBJECT
BUDDY_EXECUTION_REVISION_COMMITTER_NAME

参看