azure-devops - Azure DevOps(本地)| Nexus Repository 的配置构建过程和 Docker 映像创建
问题描述
我是 Azure DevOps 和 Nexus Repository 主题的新手。我的代码在 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 存储库中。
亲切的问候,
未知
解决方案
不,没有错。
我们已经在 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 中,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。
推荐阅读
- spring - Spring/MongoDB/Junit:使用 Fongo 进行单元测试时出现空指针异常
- javascript - 如何将输入值分配给复选框值,然后计算检查总数?
- node.js - 如何跟踪使用 nightwatch 和 selenium 异步渲染的许多元素?
- python - 如何获得变量输出的平均值?
- api - 使用 Web 地址的 API
- python - 有条件地合并数组的numpy方法是什么?
- haskell - Haskell 函数根据子列表的长度对整数列表的列表进行排序
- typescript - lodash 获取正确的类型
- php - htaccess 不拒绝 PHP 访问文件
- python - Google Cloud 中 Python 3 的类型包返回错误