挂接属性

使用hooks部分在生成、部署和部署后阶段运行外壳命令:

  • build — 在​ 打包应用程序之前执行命令。 诸如数据库或Redis之类的服务不可用,因为应用程序尚未部署。 在​ 之前添加自定义命令 ​和默认的php ./vendor/bin/ece-tools命令,以便自定义生成的内容继续进入部署阶段。

  • deploy — 在​ 打包和部署应用程序后执行命令。 此时您可以访问其他服务。 由于默认的php ./vendor/bin/ece-tools命令将app/etc目录复制到正确的位置,因此您必须在​ 部署命令之后添加自定义命令 ​以防止自定义命令失败。

  • post_deploy — 在部署应用程序后​ 执行命令,在容器开始接受连接​ 后执行命令post_deploy挂接清除缓存并预加载(加温)缓存。 您可以在Post部署阶段中使用WARM_UP_PAGES变量自定义页面列表。 尽管不是必需的,但此变量可与SCD_ON_DEMAND环境变量配合使用。

以下示例显示了.magento.app.yaml文件中的默认配置。 在ece-tools命令​ 之前的builddeploypost_deploy ​下添加CLI命令:

hooks:
    # We run build hooks before your application has been packaged.
    build: |
        set -e
        composer install
        php ./vendor/bin/ece-tools run scenario/build/generate.xml
        php ./vendor/bin/ece-tools run scenario/build/transfer.xml
    # We run deploy hook after your application has been deployed and started.
    deploy: |
        php ./vendor/bin/ece-tools run scenario/deploy.xml
    # We run post deploy hook to clean and warm the cache. Available with ECE-Tools 2002.0.10.
    post_deploy: |
        php ./vendor/bin/ece-tools run scenario/post-deploy.xml

此外,您还可以使用generatetransfer命令进一步自定义构建阶段,以在专门构建代码或移动文件时执行其他操作。

hooks:
    # We run build hooks before your application has been packaged.
    build: |
        set -e
        php ./vendor/bin/ece-tools build:generate
        # php /path/to/your/script
        php ./vendor/bin/ece-tools build:transfer
  • set -e — 导致挂接在第一个失败的命令上失败,而不是在最后一个失败的命令上失败。
  • build:generate — 如果为生成阶段启用了SCD,则应用修补程序、验证配置、生成DI并生成静态内容。
  • build:transfer — 将生成的代码和静态内容传输到最终目标。

命令从应用程序(/app)目录运行。 您可以使用cd命令更改目录。 如果挂接中的最终命令失败,则挂接将失败。 若要导致它们在第一个失败的命令上失败,请将set -e添加到挂接的开头。

使用grunt ​编译Sass文件:

dependencies:
    ruby:
        sass: "3.4.7"
    nodejs:
        grunt-cli: "~0.1.13"

hooks:
    build: |
        cd public/profiles/project_name/themes/custom/theme_name
        npm install
        grunt
        cd
        php ./vendor/bin/ece-tools build

在静态内容部署之前使用grunt编译Sass文件,这会在生成期间发生。 将grunt命令放在build命令之前。

NOTE
使用ECE-Tools 2002.1.0及更高版本,您可以使用基于方案的部署功能在云基础架构项目上自定义Adobe Commerce的生成、部署和部署后流程。 请参阅基于方案的部署
recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26