hipex / deploy-configuration
Hipex 部署镜像配置文件
README
这份文档是指导您在 Hipex B.V. 平台上轻松设置自动化部署的指南。仓库包含
- 配置对象
- 文档
包含什么?
- 部署者配置主机 / 任务
- Hipex 服务器设置
- 电子邮件 / New Relic 通知
- CloudFlare 清除缓存
配置
- Composer 命令
require hipex/deploy-configuration --dev
包。只有当您想在deploy.php
文件中拥有自动完成功能时才需要。 - 将部署模板复制到项目根目录下的
deploy.php
文件中。您可以在 templates/deploy.php 中找到模板。如您所见,一个$configuration
变量被分配了一个Configuration
类的实例。这个配置对象包含整个部署配置,可以根据您的需求使用 getter/setter 进行修改。根据您的用例更改配置,并参考文档了解其他内置配置和任务。 - 设置您的 CI 服务器
- GitLab CI templates/.gitlab-ci.yml。
- Bitbucket templates/bitbucket-pipelines.yml。
- 对于 Magento 2,由于缺少配置,您的第一次构建将失败。登录到服务器,根据您的项目文件编辑
app/etc/env.php
或app/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