hipex/deploy-configuration

Hipex 部署镜像配置文件

2.4.2 2021-04-12 09:25 UTC

README

这份文档是指导您在 Hipex B.V. 平台上轻松设置自动化部署的指南。仓库包含

  • 配置对象
  • 文档

包含什么?

  • 部署者配置主机 / 任务
  • Hipex 服务器设置
  • 电子邮件 / New Relic 通知
  • CloudFlare 清除缓存

配置

  1. Composer 命令 require hipex/deploy-configuration --dev 包。只有当您想在 deploy.php 文件中拥有自动完成功能时才需要。
  2. 将部署模板复制到项目根目录下的 deploy.php 文件中。您可以在 templates/deploy.php 中找到模板。如您所见,一个 $configuration 变量被分配了一个 Configuration 类的实例。这个配置对象包含整个部署配置,可以根据您的需求使用 getter/setter 进行修改。根据您的用例更改配置,并参考文档了解其他内置配置和任务。
  3. 设置您的 CI 服务器
    1. GitLab CI templates/.gitlab-ci.yml
    2. Bitbucket templates/bitbucket-pipelines.yml
  4. 对于 Magento 2,由于缺少配置,您的第一次构建将失败。登录到服务器,根据您的项目文件编辑 app/etc/env.phpapp/etc/local.xml。您可以在 ~/domains/<domain>/application/shared/ 中找到这些文件。

构建步骤

1. 构建

构建应用程序以准备在生产环境中运行。

您可以在以下方式定义在构建阶段需要执行的命令:

$configuration->addBuildCommand(new \HipexDeployConfiguration\Command\Build\Composer())

此命令将在您的项目文件夹中执行 composer install 并安装所有项目依赖项。

所有可能的命令都可以在 HipexDeployConfiguration\Command\Build 命名空间中找到。请参阅 API 文档以获取使用和选项信息。

此仓库包含一些应用程序模板,它们指定了常见的任务及其顺序,以确保正确构建应用程序。有关更多信息,请参阅应用程序模板。

2. 部署

将构建阶段构建的应用程序部署到一组指定的主机。

首先,您需要定义您的环境 / 基础设施。

$stageAcceptance = $configuration->addStage('acceptance', 'acceptance.mydomain.com', 'my_ssh_username');
$stageAcceptance->addServer('productionxxx.hipex.io', [
    ServerRole::APPLICATION_FIRST,
    ServerRole::APPLICATION,
    ServerRole::LOAD_BALANCER,
    ServerRole::VARNISH,
    ServerRole::REDIS,
]);

要为您的服务器设置额外的 SSH 选项 (https://www.ssh.com/academy/ssh/config),您也可以提供这些选项。例如

$stage->addServer(
    'productionxxx.hipex.io',
    [ServerRole::APPLICATION],
    [],
    ['LogLevel' => 'verbose']

您可以在以下方式定义在部署阶段需要执行的命令:

$configuration->addDeployCommand(new \HipexDeployConfiguration\Command\Deploy\Magento2\CacheFlush())

所有可能的命令都可以在 HipexDeployConfiguration\Command\Deploy 命名空间中找到。请参阅 API 文档以获取使用和选项信息。

3. 配置平台服务 / 配置

可选地,您可以从 Git 仓库自动设置一些服务和应用程序配置到 Hipex 平台

例如,您可以维护您的 cron 配置在您的 Git 仓库中,并自动将其部署到特定的服务器。

$configuration
  ->addPlatformConfiguration(
    (new \HipexDeployConfiguration\PlatformConfiguration\CronConfiguration())
        ->setStage('production')
  )

或设置一个 Varnish 实例

$configuration->addPlatformService(new \HipexDeployConfiguration\PlatformService\VarnishService())

有关所有可能的任务和配置,请参阅 API 文档。

4. 部署后任务

部署后任务在成功部署后触发。例如,可以发送通知。

用法:$configuration->addAfterDeployTask(\HipexDeployConfiguration\AfterDeployTask\SlackWebhook())

应用程序模板

我们提供了一些应用程序模板,这些模板定义了针对特定应用程序类型需要执行的一组常见任务。您可以使用这些模板,无需手动指定每个任务。

可用的模板

  • Magento 1
  • Magento 2

示例用法:$configuration = new Magento2('git@git.foo.bar:magento-2/project.git', ['nl'], ['nl'])

所需环境变量

一些特定的环境变量是必需的,以便允许部署镜像访问git仓库或能够发送通知。

必需

  • SSH_PRIVATE_KEY 未加密的SSH密钥。该密钥需要访问:主git仓库、私有包和SSH用户。必须按如下方式base64编码
cat ~/.ssh/deploy_key | base64

服务器角色和阶段

服务器使用一组给定的服务器角色定义。

$stage = $configuration->addStage('production', 'www.mydomain.com', 'my_ssh_username');
$stage->addServer('production1.hipex.io', [
    ServerRole::APPLICATION,
]);
$stage->addServer('production2.hipex.io', [
    ServerRole::LOADBALANCER,
]);

大多数配置可以针对给定的服务器角色和/或阶段进行特定设置。

$nginxConfiguration = (new NginxConfiguration('/etc/nginx/production'))
  ->setServerRoles([ServerRole::APPLICATION])
  ->setStage('production')
$configuration->addPlatformConfiguration($nginxConfiguration)

此nginx配置任务仅在production1上执行,因为这是唯一具有服务器角色APPLICATION的服务器

大多数任务已经分配了逻辑服务器角色,所以在这种情况下不需要指定它们。

测试

为了测试您的构建和部署,您可以在本地运行部署。

首先,请确保您已使用以下方法设置了所有必需的环境变量。

export SSH_PRIVATE_KEY=***
export DEPLOY_COMPOSER_AUTH=***
.... etc

然后,从项目的根目录启动构建/部署运行命令。

重复-e,以显示所有在构建期间存在的环境变量

docker run -it -e SSH_PRIVATE_KEY -e DEPLOY_COMPOSER_AUTH -v `pwd`:/build hipex/deploy hipex-deploy build -vvv 
docker run -it -e SSH_PRIVATE_KEY -e DEPLOY_COMPOSER_AUTH -v `pwd`:/build hipex/deploy hipex-deploy deploy acceptance -vvv