在流水线中使用 Nexus
Nexus 是存储、组织和分发制品的存储管理器。使用 Nexus 的开发者可以更好的控制开发过程中所需的工件。
本教程演示如何在 KubeSphere 流水线中使用 Nexus。
准备工作
-
准备一个 Nexus 实例。
-
准备一个GitHub 帐户。
-
创建一个企业空间、一个 DevOps 工程(例如,
demo-devops
)和一个帐户(例如,project-regular
)。project-regular
需要被邀请至 DevOps 工程中并赋予operator
角色。有关更多信息,请参考创建企业空间、项目、帐户和角色。
动手实验
步骤 1:获得 Nexus 上的仓库 URL
-
用
admin
帐户登录 Nexus 控制台,然后在顶部导航栏点击 。 -
转到仓库页面,您可以看到 Nexus 提供了三种仓库类型。
-
proxy
:远程仓库代理,用于下载资源并将其作为缓存存储在 Nexus 上。 -
hosted
:在 Nexus 上存储制品的仓库。 -
group
:一组已配置好的 Nexus 仓库。
-
-
点击仓库查看它的详细信息。例如:点击 maven-public 进去详情页面,并且查看它的 URL。
步骤 2:在 GitHub 仓库修改 pom.xml
-
登录 GitHub,fork 示例仓库到您的 GitHub 帐户。
-
在您的 learn-pipline-java GitHub 仓库中,点击根目录下的文件
pom.xml
。 -
在文件中点击 以修改
<distributionManagement>
代码片段。设置<id>
并使用您的 Nexus 仓库的 URL。 -
当您完成以上步骤,点击页面下方的 Commit changes。
步骤 3:修改 ConfigMap
-
使用
admin
帐户登录 KubeSphere Web 控制台,点击左上角的平台管理,选择集群管理。 -
在配置中心下面选择 配置。在 配置 页面上的下拉列表中选择
kubesphere-devops-system
,然后点击ks-devops-agent
。 -
在详情页面,点击下拉菜单更多操作中的编辑配置文件。
-
在显示的会话窗中,向下滚动,找到
<servers>
代码片段,输入下列代码:<servers> <server> <id>nexus</id> <username>admin</username> <password>admin</password> </server> </servers>
备注
<id>
是您在步骤 2 设置给 Nexus 的唯一标识符。<username>
是您的 Nexus 用户名。<password>
是您的 Nexus 的密码。您也可以在 Nexus 上面配置NuGet API Key
,以获得更高的安全性。 -
继续找到
<mirrors>
代码片段,然后输入一下代码:<mirrors> <mirror> <id>nexus</id> <name>maven-public</name> <url>http://135.68.37.85:8081/repository/maven-public/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors>
备注
<id>
是您在步骤 2 设置给 Nexus 唯一标识符。<name>
是 Nexus 仓库的名字。<url>
是您 Nexus 仓库的 URL。<mirrorOf>
是要镜像的 Maven 仓库。在本教程,输入*
镜像所有 Maven 仓库。有关更多信息请参考为仓库使用镜像。 -
当您完成,点击更新。
步骤 4:创建流水线
-
登出 KubeSphere Web 控制台,使用帐户
project-regular
登录。转到 DevOps 工程,然后在流水线页面点击创建。 -
在基础信息选项卡中,为流水线设置名字(例如,
nexus-pipeline
),然后点击下一步。 -
在高级设置选项卡中,点击创建以使用默认配置。
-
点击流水线进入它的详情页面,然后点击编辑 Jenkinsfile。
-
在出现的会话窗口中,在 Jenkinsfile 中输入如下内容。当您完成,点击确定。
pipeline { agent { node { label 'maven' } } stages { stage ('clone') { steps { git 'https://github.com/YANGMAO-ZHANG/learn-pipeline-java.git' } } stage ('build') { steps { container ('maven') { sh 'mvn clean package' } } } stage ('deploy to Nexus') { steps { container ('maven') { sh 'mvn deploy -DaltDeploymentRepository=nexus::default::http://135.68.37.85:8081/repository/maven-snapshots/' } } } stage ('upload') { steps { archiveArtifacts artifacts: 'target/*.jar', followSymlinks: false } } } }
备注
您需要用您自己的 GitHub 仓库地址替换原有的仓库地址。在deploy to Nexus
阶段的步骤中的命令中,nexus
是您在 ConfigMap 上设置在<id>
上的名字,同时http://135.68.37.85:8081/repository/maven-snapshots/
是您 Nexus 仓库的 URL。
步骤 5:运行流水线查看结果
-
您可以在图形编辑面板中看到所有的阶段和步骤,点击运行去运行流水线。
-
一段时间过后,你可以看到流水线的状态显示成功。点击成功的记录查看细节。
-
您可以点击查看日志查看更详细的日志。
-
登录 Nexus 点击浏览。点击 maven-public,可以看到所有依赖已经被下载好。
-
回到 Browse 页面,点击 maven-sanpshots。可以看到所有 JAR 包已经被上传到仓库。
反馈
这篇文章对您有帮助吗?
感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。