使用 curl 进行发布 - CodeArtifact

使用 curl 进行发布

本节介绍如何使用 HTTP 客户端 curl 将 Maven 构件发布到 CodeArtifact 存储库。如果您的环境中没有 Maven 客户端或想要安装 Maven 客户端,则使用 curl 发布构件会很有用。

使用 curl 发布 Maven 构件
  1. 按照 使用环境变量传递身份验证令牌 中的步骤提取 CodeArtifact 授权令牌,然后返回到这些步骤。

  2. 使用以下 curl 命令将 JAR 发布到 CodeArtifact 存储库:

    在此程序中的每个 curl 命令中,替换以下占位符:

    • my_domain 替换为您的 CodeArtifact 域名。

    • 111122223333 替换为您的 CodeArtifact 域所有者的 ID。

    • us-west-2 替换为您的 CodeArtifact 域所在的区域。

    • my_repo 替换为您的 CodeArtifact 存储库名称。

    curl --request PUT https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/com/mycompany/app/my-app/1.0/my-app-1.0.jar \ --user "aws:$CODEARTIFACT_AUTH_TOKEN" --header "Content-Type: application/octet-stream" \ --data-binary @my-app-1.0.jar
    重要

    必须在 --data-binary 参数的值前面加上一个 @ 字符。将值放在引号中时,@ 必须包含在引号内。

  3. 使用以下 curl 命令将 POM 发布到 CodeArtifact 存储库:

    curl --request PUT https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/com/mycompany/app/my-app/1.0/my-app-1.0.pom \ --user "aws:$CODEARTIFACT_AUTH_TOKEN" --header "Content-Type: application/octet-stream" \ --data-binary @my-app-1.0.pom
  4. 此时,Maven 构件将位于您的 CodeArtifact 存储库中,状态为 Unfinished。为了能够使用程序包,程序包必须处于 Published 状态。您可以通过向程序包上传 maven-metadata.xml 文件来将程序包从 Unfinished 切换为 Published,或者调用 UpdatePackageVersionsStatus API 来更改状态。

    1. 选项 1:使用以下 curl 命令将 maven-metadata.xml 文件添加到您的程序包中:

      curl --request PUT https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/com/mycompany/app/my-app/maven-metadata.xml \ --user "aws:$CODEARTIFACT_AUTH_TOKEN" --header "Content-Type: application/octet-stream" \ --data-binary @maven-metadata.xml

      以下是 maven-metadata.xml 文件的内容示例:

      <metadata modelVersion="1.1.0"> <groupId>com.mycompany.app</groupId> <artifactId>my-app</artifactId> <versioning> <latest>1.0</latest> <release>1.0</release> <versions> <version>1.0</version> </versions> <lastUpdated>20200731090423</lastUpdated> </versioning> </metadata>
    2. 选项 2:使用 UpdatePackageVersionsStatus API 将程序包状态更新为 Published

      aws codeartifact update-package-versions-status \ --domain my_domain \ --domain-owner 111122223333 \ --repository my_repo \ --format maven \ --namespace com.mycompany.app \ --package my-app \ --versions 1.0 \ --target-status Published

如果您只有构件的 JAR 文件,则可以使用 mvn 将可使用的程序包版本发布到 CodeArtifact 存储库。如果您无法访问构件的源代码或 POM,此方法会很有用。有关详细信息,请参阅发布第三方构件