Azure DevOps ( On-premises ) |Nexus Repository 的配置构建过程和 Docker 映像创建



iam new with the topic Azure DevOps & Nexus Repository. 我的代码在本地 Azure DevOps 上提交。Azure DevOps和Azure注册表的工作方式很好。

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

当是时,我在哪里获得此属性的信息:

  • 存储库标识
  • 组标识
  • 项目标识
  • 神器版本,..

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

所以也许方式是错误的?

结论我想实现的:

在本地 Azure DevOps 中提交代码后,我想配置一个生成过程,用于创建 docker 映像,并将其移动到 nexus 存储库中。

亲切问候

未知

不,没有错。

我们已经在 Github 中打开了这个扩展的源代码,请参阅这个vsts-nexus存储库。

在代码分析之前,我们需要知道它的逻辑。在此扩展中,我们实现了使用Nexus2.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中,rrepositoryIdggroupIdaartifactIdvartifactVersioncclassifierppackaging。这就是为什么你的同事认为它看起来像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。

最新更新