文档AEMAEM 6.x 的 Cloud Manager 文档

构建环境

最近更新: 2025年6月20日
  • 主题:
  • Cloud Manager

创建对象:

  • 管理员

了解 Cloud Manager 用户可用来构建和测试代码的专用构建环境。

环境详细信息

Cloud Manager 的构建环境具有以下属性。

  • 该构建环境基于 Linux,并派生自 Ubuntu 22.04。

  • 安装了 Apache Maven 3.9.4。

    • Adobe 建议用户更新其 Maven 存储库以使用 HTTPS 代替 HTTP。
  • 安装的 Java 版本是 Oracle JDK 8u401 和 Oracle JDK 11.0.22。

    • /usr/lib/jvm/jdk1.8.0_401
    • /usr/lib/jvm/jdk-11.0.22
  • 默认情况下会将JAVA_HOME环境变量设置为包含 Oracle JDK 8u401 的 /usr/lib/jvm/jdk1.8.0_401。有关更多详细信息,请参阅替代 Maven 执行 JDK 版本部分。

  • 安装了一些其他的必要系统包。

    • bzip2
    • unzip
    • libpng
    • imagemagick
    • graphicsmagick
  • 可以在构建时安装其他包,如安装其他系统包部分中所述。

  • 每次构建都是在原始环境中完成的。 构建容器在执行之间不保留任何状态。

  • Maven通过以下三条命令运行:

    • mvn --batch-mode org.apache.maven.plugins:maven-dependency-plugin:3.1.2:resolve-plugins
    • mvn --batch-mode org.apache.maven.plugins:maven-clean-plugin:3.1.0:clean -Dmaven.clean.failOnError=false
    • mvn --batch-mode org.jacoco:jacoco-maven-plugin:prepare-agent package
  • 使用 settings.xml 文件在系统级别配置 Maven,并且其中会自动包含使用名为 adobe-public 的配置文件的公共 Adobe 工件存储库。 请参阅 Adobe 公共 Maven 存储库了解详情。

  • 对于前端管道有 Node.js 18 可用。

注意
虽然 Cloud Manager 未定义 jacoco-maven-plugin 的具体版本,但使用的版本必须至少为 0.7.5.201505241946。
小贴士
请参阅以下其他资源,了解如何使用 Cloud Manager API:
  • aio-cli-plugin-cloudmanager
  • 创建 API 集成
  • API 权限

HTTPS Maven 存储库

Cloud Manager 版本 2023.10.0 开始了对构建环境的一项滚动更新(在发布版本 2023.12.0 时完成更新),其中包括对 Maven 3.8.8 的更新。Maven 3.8.1 中引入的一项重大更改是旨在减少潜在漏洞的一项安全增强。具体来说,Maven 现在默认禁用所有不安全的 http://* 镜像,如 Maven 发行说明中所述。

此安全增强导致某些用户可能在构建步骤中遇到问题,尤其是从使用不安全 HTTP 连接的 Maven 存储库下载工件时。

为了确保更新版本的流畅体验,Adobe 建议用户更新其 Maven 存储库以使用 HTTPS 代替 HTTP。此调整与行业日益转向安全通信协议的趋势一致,并有助于构建过程保持安全可靠。

使用特定的 Java 版本

默认情况下,由 Cloud Manager 构建过程构建的项目会使用 Oracle 8 JDK。 希望使用替代 JDK 的客户有两种选择。

  • Maven 工具链
  • 为整个 Maven 执行过程选择替代 JDK 版本

Maven 工具链

Maven 工具链插件允许项目选择特定的 JDK(或工具链)以在工具链感知的 Maven 插件的上下文中使用。 此过程在项目的 pom.xml 文件中通过指定供应商和版本值来完成。pom.xml 文件中的示例部分为:

        <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-toolchains-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <goals>
                <goal>toolchain</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <toolchains>
            <jdk>
                <version>11</version>
                <vendor>oracle</vendor>
            </jdk>
        </toolchains>
    </configuration>
</plugin>

该流程会导致所有工具链感知的 Maven 插件使用 Oracle JDK 版本 11。

在使用此方法时,Maven 本身仍将使用默认 JDK (Oracle 8) 运行,并且不会更改 JAVA_HOME 环境变量。 因此,通过 Apache Maven Enforcer 插件等插件检查或强制实施 Java 版本将不起作用,并且不得使用此类插件。

当前可用的供应商/版本组合是:

供应商
版本
Oracle
1.8
Oracle
1.11
Oracle
11
星期日
1.8
星期日
1.11
星期日
11
NOTE
从 2022 年 4 月开始,Oracle JDK 将是用于开发和运行 AEM 应用程序的默认 JDK。 Cloud Manager 构建过程会自动切换为使用 Oracle JDK,即使已在 Maven 工具链中明确选定替代选项也是如此。请参阅四月发行说明以了解更多信息。

替代 Maven 执行 JDK 版本

也可以选择 Oracle 8 或 Oracle 11 作为整个 Maven 执行的 JDK。 与工具链选项不同,除非还设置了工具链配置(在此情况下,工具链配置仍适用于工具链感知的 Maven 插件),否则这将更改用于所有插件的 JDK。 因此,通过 Apache Maven Enforcer 插件等插件检查和强制执行 Java 版本将会起作用。

要执行此过程,请在管道使用的 Git 存储库分支中创建一个名为 .cloudmanager/java-version 的文件。 此文件可以包含内容 11 或 8。任何其他值将被忽略。如果指定了11,则系统使用Oracle 11并将JAVA_HOME环境变量设置为/usr/lib/jvm/jdk-11.0.22。 如果指定了8,则系统使用Oracle 8并将JAVA_HOME环境变量设置为/usr/lib/jvm/jdk1.8.0_401。

环境变量

标准环境变量

在某些情况下,您可能会发现必须根据项目或管道的相关信息来更改构建过程。

例如,当使用 gulp 之类的工具进行 JavaScript 压缩时,针对开发、暂存和生产环境,您可能会偏向于使用不同的压缩级别。

为了支持这一点,Cloud Manager 会为每个执行将标准环境变量添加到构建容器中。

变量名称
描述
CM_BUILD
始终设置为 true
BRANCH
执行的已配置分支
CM_PIPELINE_ID
数值管道标识符
CM_PIPELINE_NAME
管道名称
CM_PROGRAM_ID
数值项目标识符
CM_PROGRAM_NAME
项目名称
ARTIFACTS_VERSION
对于暂存或生产管道,为由 Cloud Manager 生成的合成版本

标准环境变量可用性

可在多个位置使用标准环境变量。

创作、预览和发布环境

常规环境变量和密钥均可用于创作、预览和发布环境。

Dispatcher

只有常规环境变量可用于 Dispatcher。 无法使用密钥。

但是,无法在 IfDefine 指令中使用环境变量。

TIP
在部署之前,使用 Dispatcher 在本地验证环境变量的使用情况。

OSGi 配置

可在 OSGi 配置中使用常规环境变量和密钥。

管道变量

在某些情况下,您的构建过程可能取决于特定的配置变量,这些变量不适合放置在 Git 存储库中,或需要在使用同一分支的不同管道执行之间发生改变。

Cloud Manager 允许通过 Cloud Manager API 或 Cloud Manager CLI 按管道配置这些变量。可将变量以纯文本或静态加密形式存储。在任一情况下,变量都将在构建环境中用作环境变量,之后可以从 pom.xml 文件或其他构建脚本中引用这些变量。

要使用 CLI 设置变量,请运行类似于以下内容的命令。

$ aio cloudmanager:set-pipeline-variables PIPELINEID --variable MY_CUSTOM_VARIABLE test

可以使用类似于以下内容的命令列出当前变量。

$ aio cloudmanager:list-pipeline-variables PIPELINEID

变量必须遵循特定的限制。

  • 变量名只能包含字母数字字符和下划线 (_)。
    • 按照惯例,名称应全部大写。
  • 每个管道最多有 200 个变量。
  • 每个名称的长度必须少于 100 个字符。
  • 每个字符串值的长度必须少于 2048 个字符。
  • 每个 secretString 值的长度必须少于 500 个字符。

通常,在 Maven pom.xml 文件中使用变量时,使用与以下内容类似的语法将这些变量映射到 Maven 属性会很有益处。

        <profile>
            <id>cmBuild</id>
            <activation>
                <property>
                    <name>env.CM_BUILD</name>
                </property>
            </activation>
            <properties>
                <my.custom.property>${env.MY_CUSTOM_VARIABLE}</my.custom.property>
            </properties>
        </profile>

安装其他系统包

一些版本需要安装其他系统包才能完全运行。 例如,某个版本可能会调用 Python 或 Ruby 脚本,因此,需要安装适当的语言解释程序。 这种情况可以通过调用 exec-maven-plugin 以调用 APT 来实现。 此执行通常应封装在特定于 Cloud Manager 的 Maven 配置文件。例如,要安装 Python,您可以执行以下操作:

        <profile>
            <id>install-python</id>
            <activation>
                <property>
                        <name>env.CM_BUILD</name>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <version>1.6.0</version>
                        <executions>
                            <execution>
                                <id>apt-get-update</id>
                                <phase>validate</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>apt-get</executable>
                                    <arguments>
                                        <argument>update</argument>
                                    </arguments>
                                </configuration>
                            </execution>
                            <execution>
                                <id>install-python</id>
                                <phase>validate</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <executable>apt-get</executable>
                                    <arguments>
                                        <argument>install</argument>
                                        <argument>-y</argument>
                                        <argument>--no-install-recommends</argument>
                                        <argument>python</argument>
                                    </arguments>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

该方法还可用于安装特定语言的包。 也就是说,对于 RubyGems 使用 gem,或者对于 Python 包使用 pip。

NOTE
通过此方式安装系统包并不会将它安装在用于运行 Adobe Experience Manager 的运行时环境中。 如果您需要在 AEM 环境中安装系统包,请联系您的 Adobe 代表。
recommendation-more-help
c6cdc82b-cee9-48e0-a6ee-48149d5e72c3