【问题标题】:Azure DevOps ( On-premises ) | Configuration Build Process & Docker Image creation for Nexus RepositoryAzure DevOps(本地)| Nexus Repository 的配置构建过程和 Docker 映像创建
【发布时间】:2019-09-05 07:38:42
【问题描述】:

我是 Azure DevOps 和 Nexus 存储库主题的新手。 我的代码在 Azure DevOps On-premises 上提交。 Azure DevOps 和 Azure 注册表的工作方式也很好。

但现在我在配置 Nexus 上遇到困难,我需要这个教程吗? https://devblogs.microsoft.com/devops/nexus-build-extension-for-team-services/

如果是,我从哪里获取此属性的信息:

  • 存储库 ID
  • 组 ID
  • 工件 ID
  • 神器版本,..

因为配置需要这些属性。 在我与我的 Nexus 同事交谈后,他的意思是它看起来像 Maven 配置。

所以也许方式是错误的?

总结我想要达到的目标:

在 Azure DevOps On-premises 中提交我的代码后,我想配置一个构建过程来创建一个 docker 映像,并将其移动到 nexus 存储库中。

亲切的问候,

未知

【问题讨论】:

  • 嗨,现在怎么样了?答案是否可以解决您的问题和困惑?如果是,您可以accept the answer 这样其他 SO 用户将能够看到该解决方案是否有效。如果您仍然遇到一些问题,请发表评论,以便我们仍然可以为您提供帮助。

标签: azure-devops nexus azure-devops-extensions


【解决方案1】:

不,没有错。

我们已经在 Github 中开放了这个扩展的源代码,请看这个vsts-nexus repos。

在分析代码之前,我们需要知道它的逻辑。在这个扩展中,我们使用 Nexus 2.x Rest API 实现了将文件上传到 Nexus Repository Manager 的功能,URI 是:

https://local:8081/service/local/artifact/maven/content?r={xx}&g={xx}&a={xx}&v={xx}&p={xx}&c={xx}" > xxx.jar

在此 URI 中,rrepositoryIdggroupIdaartifactIdvartifactVersionc 是 @98765433@4,@98765433@4是packaging。这就是为什么你的同事认为它看起来像 Maven 配置的原因,因为我们使用这个 API 作为扩展的逻辑。

查看此脚本文件:NexusTask.ts

var nexusUploadUrl = Util.addUrlSegment(serverEndpointUrl, 'service/local/artifact/maven/content');
tl.debug('nexusUploadUrl=' + nexusUploadUrl);
     ...
     ...
     ...
var formData = {
    // Pass a simple key-value pair
    r: repositoryId,
    g: groupId,
    a: artifactId,
    v: artifactVersion,
    c: classifier,
    p: packaging,
    e: extension,
    // Pass data via Streams
    my_file: fs.createReadStream(fileName)
};

var postData: any = { url: nexusUploadUrl, formData: formData, strictSSL: !trustSSL };

这是脚本的一小部分。您可以清楚地了解扩展使用的 API 及其参数。

所以,这个扩展和任务没有错,只是它的逻辑是使用 Nexus 2.x API。

但是,您需要注意的是,此扩展程序目前仅支持 Nexus 2.x。如果您使用的是 Nexus 3.x,您最好使用 Maven pom.xml 文件通过 Nexus 的 Maven 支持将工件上传到 Nexus。

由于您想要构建一个 docker 镜像然后将其上传到 Nexus,您可以使用 Docker 任务构建 docker 镜像,然后使用此任务或 Maven 将此镜像上传到 Nexus。

【讨论】:

  • Liang -MSFT:感谢您分享有关这方面的知识。 :) :) :) 我会检查并尝试。
  • 欢迎 :-) 你也可以尝试使用 Nexus 3.x API 来推送图片:curl -v -F r={repostory} -F e={extension} -F g={group id} -F a={artifact id} -F v={version} -F p={packaging} -F file={file path} -u {username}:{password} http://localhost:8081/repository/{repostory}/
  • @Unknown 你好,结果如何?你能成功实现你想要的一切吗?这张票你还有什么困惑吗?请随时在这里提问。
猜你喜欢
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 2022-07-14
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多