mittwald/deployer-recipes

一组Deployer配方,可轻松将您的应用程序部署到mittwald平台


README

⚒️ 安装说明 | 🙆 使用 | ⚙️ 配置选项 | 📖 文档

重要

该库目前处于beta状态。我们欢迎任何反馈和贡献。

该存储库包含一套mittwald特定的辅助函数和配方,用于Deployer

安装

通过Composer

要使用此配方集合,您需要通过Composer进行安装

composer require --dev mittwald/deployer-recipes

使用Docker

还有一个预构建的docker镜像,提供deployer和mittwald deployer配方。您可以这样使用它

docker run --rm -it -v $(pwd):/app -w /app mittwald/deployer:latest deploy

使用

注意

在本文档底部找到常见CI/CD工具(如Github Actions和Gitlab CI)的配置示例。

此配方需要一个mittwald API令牌才能工作。它可以通过MITTWALD_API_TOKEN环境变量提供,或者通过在您的Deployer配置中设置mittwald_token值。

$ export MITTWALD_API_TOKEN=...

为了使用此库提供的配方,您需要将它们包含在您的deploy.php文件中

require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/vendor/mittwald/deployer-recipes/recipes/deploy.php';

为了启用主机的自动部署,将mittwald_app_id变量设置为要部署的mittwald应用程序的ID(该ID可以是应用程序的完整UUID,也可以是在UI或CLI中显示的简短ID)。在这种情况下,主机名变得无关紧要,因为配方将自动确定SSH连接的正确主机名

host('mittwald')
    ->set('public_path', '/')
    ->set('mittwald_app_id', '<uuid|short-id>')
    ->set('mittwald_app_dependencies', [
        'php'      => '{{php_version}}',
        'gm'       => '*',
        'composer' => '*',
    ]);

或者,您也可以使用mittwald_app简写函数达到相同的效果

mittwald_app('<uuid|short-id>')
    ->set('public_path', '/')
    ->set('mittwald_app_dependencies', [
        'php'      => '{{php_version}}',
        'gm'       => '*',
        'composer' => '*',
    ]);

它做什么?

此配方自动在mittwald云平台上设置PHP应用程序。您只需向配方提供要部署的mittwald应用程序的ID,配方就会自动处理其他任务,例如自动确定正确的部署路径、数据库凭证等。

更具体地说,配方将

  • 查找给定应用程序ID的部署目录并将其设置为deployer的deploy_path
  • 为配置在domain中的域名正确配置虚拟主机
  • 查找必要的SSH连接数据,创建和管理用于部署的SSH用户,并相应地配置deployer主机。
  • 确保应用程序的系统环境与配置在mittwald_app_dependencies中的环境相匹配

配置选项

  • mittwald_app_id:您想要部署的mittwald应用程序的ID。这是唯一必需的选项,并且应按主机设置。

  • mittwald_app_dependencies:应安装在mittwald应用程序上的系统依赖项映射。该配方将确保应用程序的系统环境与这里配置的环境相匹配。

    预期的格式是映射,使用系统包名称作为键,使用与semver兼容的版本约束作为值。

    默认为["php" => "{{php_version}}", "composer" => "*"]

  • 可以使用mittwald_domains覆盖应配置的域名。默认为["{{domain}}"]

  • mittwald_domain_path_prefix 可以用来配置域名路径的前缀。默认为 "/"

  • mittwald_ssh_public_keymittwald_ssh_private_key 可能包含一个用于部署的 SSH 公钥/私钥对。如果没有设置,将使用 ssh_copy_id 变量。

文档 & 如何操作

有关如何使用此菜谱的更多信息,请参阅文档