TYPO3 + 作曲家 + 部署
TYPO3 + Composer + Deployment
我认为在将项目迁移到作曲家时,一个很大的好处是留下一个小的项目存储库,所有作曲家管理的东西(TYPO3 源 + public 扩展)都可以从 VCS 中排除。在部署时,实时系统上的“作曲家安装”总是会无风险地导致所需的状态。
但是官方TYPO3 documentation说:
您不应该 运行 在您的实时网站空间上作曲。你应该总是 运行 在你的本地或专用部署机器上作曲,这样你就可以测试是否一切正常。 运行完成测试后,您可以将供应商和 public 文件夹部署到您的网络服务器。
我不明白为什么。因为这导致每个项目存储库需要在项目 VCS 中包含整个 TYPO3 源,尽管它们可能被排除在外。采用这种方法的原因是什么?“我的”方法有哪些风险?
编辑:
当然,我会指定确切的版本号,直到作曲家包的修订级别。这样做,我的做法还会有风险吗?
当您使用 Composer 通过 composer install
为您的 TYPO3 环境获取源代码时,您并不知道您将获得哪个 TYPO3 扩展的确切版本。 composer.json 文件定义了一个允许的版本号范围,而不是一个确切的版本号。
当您有本地或部署环境时,composer 安装将为您提供版本 1 中的状态扩展 1,版本 2 中的扩展 2。然后您测试所有内容。 2 周后,您决定一切正常。
但是,如果您在 2 周后在您的实时系统上使用 composer,则扩展 1 现在的版本 2 可能会出现严重错误。然后作曲家 运行 会给你带来这个有缺陷的扩展 1 的版本 2。这不是你想要的。
存在解决方法。
composer 可以以多种方式使用,我也想知道为什么 TYPO3 文档在这里显示如此强烈的意见(没有理由?)。
指的是这个型号:
带有 composer 的本地开发系统,用于更改 composer.json/composer.lock
构建 environment/CD 管道运行 composer install --no-dev
并将现成的文件系统复制到 staging/live 系统
没有 composer 的实时服务器与用户数据集成(数据库和 /fileadmin)
有些人(包括我在内)更喜欢这种方式,因为它有助于在可重现(构建)环境中进行测试。如果构建步骤不仅仅包含作曲家(例如资产构建),它也能很好地工作。
虽然只对作曲家来说,如果它必须实时安装(+它的依赖项)不会有太大的不同,你拥有的构建步骤越多,你必须安装的“开发”软件就越多居住。这可能是一些人划清界限并决定开发 -> 构建 -> 实时是一个更强大的模型的地方。
虽然构建环境很可能在实时服务器上,但我不希望它处于已发布状态(我不知道你是否提到过)。因此,我至少会进行一些复制(或者更确切地说是符号链接切换),以确保 build/testing 期间出现的问题不会影响已发布的站点。
其他模型也可以。
我认为在将项目迁移到作曲家时,一个很大的好处是留下一个小的项目存储库,所有作曲家管理的东西(TYPO3 源 + public 扩展)都可以从 VCS 中排除。在部署时,实时系统上的“作曲家安装”总是会无风险地导致所需的状态。
但是官方TYPO3 documentation说:
您不应该 运行 在您的实时网站空间上作曲。你应该总是 运行 在你的本地或专用部署机器上作曲,这样你就可以测试是否一切正常。 运行完成测试后,您可以将供应商和 public 文件夹部署到您的网络服务器。
我不明白为什么。因为这导致每个项目存储库需要在项目 VCS 中包含整个 TYPO3 源,尽管它们可能被排除在外。采用这种方法的原因是什么?“我的”方法有哪些风险?
编辑: 当然,我会指定确切的版本号,直到作曲家包的修订级别。这样做,我的做法还会有风险吗?
当您使用 Composer 通过 composer install
为您的 TYPO3 环境获取源代码时,您并不知道您将获得哪个 TYPO3 扩展的确切版本。 composer.json 文件定义了一个允许的版本号范围,而不是一个确切的版本号。
当您有本地或部署环境时,composer 安装将为您提供版本 1 中的状态扩展 1,版本 2 中的扩展 2。然后您测试所有内容。 2 周后,您决定一切正常。
但是,如果您在 2 周后在您的实时系统上使用 composer,则扩展 1 现在的版本 2 可能会出现严重错误。然后作曲家 运行 会给你带来这个有缺陷的扩展 1 的版本 2。这不是你想要的。
存在解决方法。
composer 可以以多种方式使用,我也想知道为什么 TYPO3 文档在这里显示如此强烈的意见(没有理由?)。
指的是这个型号:
带有 composer 的本地开发系统,用于更改 composer.json/composer.lock
构建 environment/CD 管道运行
composer install --no-dev
并将现成的文件系统复制到 staging/live 系统没有 composer 的实时服务器与用户数据集成(数据库和 /fileadmin)
有些人(包括我在内)更喜欢这种方式,因为它有助于在可重现(构建)环境中进行测试。如果构建步骤不仅仅包含作曲家(例如资产构建),它也能很好地工作。
虽然只对作曲家来说,如果它必须实时安装(+它的依赖项)不会有太大的不同,你拥有的构建步骤越多,你必须安装的“开发”软件就越多居住。这可能是一些人划清界限并决定开发 -> 构建 -> 实时是一个更强大的模型的地方。
虽然构建环境很可能在实时服务器上,但我不希望它处于已发布状态(我不知道你是否提到过)。因此,我至少会进行一些复制(或者更确切地说是符号链接切换),以确保 build/testing 期间出现的问题不会影响已发布的站点。
其他模型也可以。