在 Tekton 任务中使用 Maven Connector

在 Tekton 任务中使用 Maven Connector 可以实现工具集成信息的集中管理,并在 Tekton 任务执行期间安全访问 Maven 注册表。

本文档展示了如何在一个 TaskRun 中使用多连接器功能来:

  • 从镜像 Maven 仓库拉取依赖
  • 将构建产物发布到私有 Maven 仓库

Tekton 任务的要求

并非所有 Tekton 任务都能使用 Maven Connector。

Maven Connector 通过 Connectors CSI Driver 注入临时的 Maven 凭据。它提供了一个名为 settings 的配置,用于生成带有临时认证信息的 settings.xml 文件和用于信任连接器代理服务器的 ca.cert 文件。

因此,Tekton 任务必须满足以下要求才能使用 Maven Connector:

支持通过 Workspace 挂载 settings.xmlca.cert 文件

多连接器场景

若要在同一个 TaskRun 中既从镜像拉取依赖,又部署到私有仓库,需要准备两个 Maven 连接器:

  • maven-mirror-connector:配置为 useAsMirror=true 用于依赖解析
  • maven-deploy-connector:配置为部署目标仓库

然后通过 volumeAttributes.connectors 将两个连接器挂载到同一个 workspace。

使用说明

确认您的 Tekton 任务支持使用 Maven Connector 后,在 TaskRun YAML 中添加这两个连接器。

示例如下:

apiVersion: tekton.dev/v1
kind: TaskRun
metadata:
  name: maven-connector-demo
spec:
  params:
  - name: GOALS
    value:
    - "deploy"
    - "-Dmaven.resolver.transport=wagon" # See: https://maven.apache.org/guides/mini/guide-resolver-transport.html#switching-between-transports
    - "-DaltDeploymentRepository=nexus::https://<repository-url>/repository/maven-releases" # Optional if deploy repository is configured in pom.xml
  # other parameters...
  workspaces:
  - name: settings
    csi:
      driver: connectors-csi
      readOnly: true
      volumeAttributes:
        connectors: "maven-mirror-connector,maven-deploy-connector"
        configuration.names: "settings"
  - name: cert
    csi:
      driver: connectors-csi
      readOnly: true
      volumeAttributes:
        connectors: "maven-mirror-connector,maven-deploy-connector"
        configuration.names: "settings"

在此示例中:

  • maven-mirror-connector 用于从配置的镜像拉取依赖。
  • maven-deploy-connector 用于执行 mvn deploy 时将构件上传到私有仓库。
  • settings.xmlca.cert 均从同一个 settings 配置挂载。

有关 workspaces 参数的详细信息,请参阅:

有关 Connectors CSI Driver 的更多信息,请参阅 Connectors CSI Configuration

延伸阅读

参考资料