hypernode/deploy-configuration

Hypernode 部署配置文件

3.2.0 2024-03-05 15:25 UTC

This package is auto-updated.

Last update: 2024-09-05 16:30:53 UTC


README

这份文档是指导如何在 Hypernode 平台上轻松设置自动化部署的指南。仓库包含以下内容:

  • 配置对象
  • 部署配置模板
  • CI 配置模板
  • 文档

里面有什么?

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

配置

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

构建步骤

1. 构建

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

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

$configuration->addBuildTask('deploy:vendors');

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

所有可能的命令都可以在 Hypernode\DeployConfiguration\Command\Build 命名空间中找到。请参阅 API 文档以了解用法和选项。

此仓库包含一些应用程序模板,它们指定了获取正确构建的应用程序所需的一般任务和它们的顺序。有关更多信息,请参阅应用程序模板。

2. 部署

将构建阶段构建的应用程序部署到给定的主机集。

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

$stageAcceptance = $configuration->addStage('acceptance', 'acceptance.mydomain.com');
$stageAcceptance->addServer('appname.hypernode.io');

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

$stage->addServer('appname.hypernode.io', [], [], ['LogLevel' => 'verbose']);

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

use function Deployer\{run, task};

...

task('magento:cache:flush', static function () {
    run('{{bin/php}} {{release_or_current_path}}/bin/magento cache:flush');
});

$configuration->addDeployTask('magento:cache:flush');

所有可能的命令都可以在 Hypernode\DeployConfiguration\Command\Deploy 命名空间中找到。请参阅 API 文档以了解用法和选项。

3. 配置平台服务 / 配置

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

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

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

或者设置一个 Varnish 实例

$configuration->addPlatformService(new \Hypernode\DeployConfiguration\PlatformService\VarnishService());

对于所有可能的任务和配置,请参考API文档。

4. 部署后任务

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

用法

$configuration->addAfterDeployTask(new \Hypernode\DeployConfiguration\AfterDeployTask\SlackWebhook());

5. 用于验收/集成测试的分支服务器

用法

$stage = $configuration->addStage('test', 'test.domain.com');
$stage->addBrancherServer('appname');

应用程序模板

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

可用模板

示例用法:$configuration = new ApplicationTemplate\Magento2(['nl_NL']);

环境变量

需要一些特定的环境变量才能允许部署镜像访问Git仓库或发送通知。

必需

  • SSH_PRIVATE_KEY 未加密的SSH密钥。该密钥需要有权访问远程服务器。可能是如下base64编码:
    cat ~/.ssh/deploy_key | base64

可选

  • DEPLOY_COMPOSER_AUTH Composer auth.json内容。如果您需要访问特定的Composer仓库,如Magento的、第三方供应商的或您自己的私有Composer包仓库,则需要此文件。如果此环境变量不存在,则不会写入auth.json,因此它是可选的。auth.json必须如下base64编码:
    cat auth.json | base64
  • HYPERNODE_API_TOKEN 用于项目的Hypernode API令牌。在support@hypernode.com请求一个。

测试

要测试您的构建和部署,您可以在本地运行hypernode-deploy

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

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

然后从项目的根目录开始构建/部署运行命令。

重复-e以包含构建过程中存在的所有环境变量

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