在Jenkins中,使用插件上传Maven构建的制品(如jar、war文件)到Nexus仓库是一个常见的CI/CD实践。以下是如何配置这一流程的步骤概述,主要涉及安装必要的插件、配置Maven项目以及设置Jenkins Job来执行部署操作。
1. 安装必要的Jenkins插件
- Maven Integration Plugin:如果你使用的是自由风格的项目,这个插件提供了Maven构建步骤的配置界面。对于Pipeline项目,这个插件不是必须的,因为可以直接在Pipeline脚本中使用Maven命令。
- Credentials Binding Plugin:用于在构建中安全地绑定凭据,如Nexus的登录凭证。
- Publish Over SSH 或 SSH Agent Plugin(如果Nexus通过SSH访问):如果需要通过SSH上传文件到远程服务器。
2. 在Nexus中创建仓库和用户
- 登录到Nexus Repository Manager。
- 创建一个适合存放你的Maven制品的仓库,如Hosted或Group类型。
- 创建或配置一个用户,拥有上传权限,并记下其用户名和密码(或API密钥),稍后将在Jenkins中用作凭据。
3. 配置Jenkins Job
3.1 在自由风格项目中配置
- 源码管理:配置Git或其他SCM,指向你的Maven项目仓库。
- 构建触发器:根据需要配置触发条件,如Poll SCM(定时检查代码更新)。
- 构建环境:如果使用SSH访问Nexus,配置SSH Keys。
- 构建步骤:
- 添加“Invoke top-level Maven targets”,在“Goals”中输入
clean deploy
或deploy -DskipTests
(跳过测试)。 - 配置Maven安装和根POM路径(如果有必要)。
- 在“高级…”选项中,配置Maven设置文件(如果使用了自定义settings.xml),并在“Global MAVEN_OPTS”中添加认证信息,如
-DrepositoryId=nexus -Durl=https://nexus.example.com/repository/maven-releases/ -Dusername=your_username -Dpassword=your_password
。但更推荐使用Jenkins凭据管理。
- 添加“Invoke top-level Maven targets”,在“Goals”中输入
3.2 在Pipeline项目中配置
pipeline {
agent any
environment {
MAVEN_SETTINGS_PATH = '/path/to/settings.xml' // 如果需要自定义settings.xml
NEXUS_CREDENTIALS_ID = 'nexus_credentials_id' // 凭据ID
}
stages {
stage('Build') {
steps {
withMaven(maven: 'Maven_3', mavenSettingsConfig: MAVEN_SETTINGS_PATH) { // 或者直接使用默认Maven配置
sh 'mvn clean deploy -DskipTests'
}
}
}
}
post {
always {
// 可以在这里添加上传或通知步骤
}
}
}
4. 配置凭据
- 在Jenkins的“Credentials”管理页面,添加一个“Username with password”类型的凭据,存储Nexus的用户名和密码。记得记下凭据ID(如上面的
NEXUS_CREDENTIALS_ID
)。
5. 高级配置
- 如果你的Maven项目需要特定的settings.xml(例如包含Nexus的服务器配置),确保在Job配置或Pipeline中正确引用了它。
- 为了安全,确保Maven的部署配置(如repositoryId、url等)不在源代码中硬编码,而是通过安全的方式(如settings.xml或Jenkins凭据)提供。
完成以上步骤后,每当有新的提交触发构建,Jenkins将会编译项目并自动将制品上传到Nexus仓库中。