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中,r
是repositoryId
,g
是groupId
,a
是artifactId
,v
是artifactVersion
,c
是classifier
,p
是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。