实验环境:
Git/Maven :192.168.116.102
Gitlab: 192.168.116.107
Jenkins 192.168.116.103
Nexus 192.168.116.104
实验目的:
在 Maven中生成一个jar 包,将其解压后上传至 gitlab (kgcapp)项目中,然后 Jenkins 将其从 gitlab中拉取至 Jenkins 项目中,然后将其代码上传至私服
Gitlab 与 Jenkins 要形成一个 自动触发Jenkins 项目的关系(GItlab 有代码改动,触发 Jenkins)
1.安装 Maven服务器
- 安装 Git
[root@localhost ~]# yum -y install git
- 安装 Maven
[root@localhost ~]# tar -zxf apache-maven-3.6.0-bin.tar.gz
[root@localhost ~]# mv apache-maven-3.6.0 /usr/local/maven
[root@localhost ~]# ln -s /usr/local/maven/bin/* /usr/local/bin/
- 修改 maven 镜像为 aliyun
参考:https://blog.csdn.net/RunzIyy/article/details/104793293
- 创建一个 java 项目
mvn archetype:generate -DgroupId=cn.kgc.kgcapp -DartifactId=kgcapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
- 将 kgcapp 生成一个 Git 库
[root@localhost kgcapp]# pwd
/root/kgcapp
[root@localhost kgcapp]# git init
初始化空的 Git 版本库于 /root/kgcapp/.git/
[root@localhost kgcapp]# ls
pom.xml src
参考以下
https://blog.csdn.net/RunzIyy/article/details/104716987
- 创建 kgcapp(空项目)
- 查看 kgcapp 项目地址
- 安装Jenkins
- 创建Maven项目
首页 --》 名称 --》 建立一个 Maven项目
- 源码管理–》 采用 Git 源码
Git URL 为 Gitlab kgcapp 地址:git@192.168.116.107:root/kgcapp.git
添加凭证: 选择SSH key 验证、指定 ID、指定 登录用户为root ,在 Gitlab 生成秘钥对,将私钥填入指定位置
- 构建触发器( 通过 webhook 来触发本地项目)
- webhook 是微服务中的 API ,也称为反向 API ,也就是说前端不主动发送请求,完全又后端推送)
- 通过这个触发器来实现, GItlab 发送代码改动,触发项目执行
- 以下这个地址为 webhook 地址,待会会用到
- 点击高级,生成秘钥值
- 在 Gitlab 中添加 webhook
在保存时会报错,是因为 Gitlab 默认不允许,向外发出web请求
解决报错:
在这里插入图片描述
再次添加 webhook
- 构建环境,勾选 在控制台输出 时间戳
- 预构建起环境, 指定 打包命令
[root@localhost ~]# mkdir /usr/local/nexus/
[root@localhost ~]# tar -zxf nexus-3.14.0-04-unix.tar.gz -C /usr/local/nexus/
[root@localhost ~]# ls /usr/local/nexus/
nexus-3.14.0-04 sonatype-work
- 启动私服
[root@localhost ~]# /usr/local/nexus/nexus-3.14.0-04/bin/nexus start
WARNING: ************************************************************
WARNING: Detected execution as "root" user. This is NOT recommended!
WARNING: ************************************************************
Starting nexus
-
登录 nexus 地址
http://192.168.116.104:8081
账户: admin
密码: admin123
-
查看 仓库的 网络地址
指定 私服的地址
[root@localhost ~]# cd kgcapp/
[root@localhost kgcapp]# vim pom.xml
# 在倒数第二行添加
<distributionManagement>
<snapshotRepository>
<id>nexus</id>
<name>Snapshot Repostitory</name>
<url>http://192.168.116.104:8081/repository/maven-snapshots/</url>
</snapshotRepository>
<repository>
<id>nexus</id>
<name>Snapshot Repository</name>
<url>http://192.168.116.104:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
6.Jenkins 服务器 修改 maven 配置文件
- 添加登录用户
[root@localhost ~]# vim /usr/local/maven/conf/settings.xml
# 在 </server> 上面添加
<servers>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
7.Git 上传代码
- 需要先为 Gitlab 添加 本地的公钥
[root@localhost kgcapp]# git config --global user.name "root"
[root@localhost kgcapp]# git config --global user.email "root@admin.cn"
[root@localhost kgcapp]# git add .
[root@localhost kgcapp]# git commit -m 'kgcapp'
[root@localhost kgcapp]# git remote add origin git@192.168.116.107:root/kgcapp.git
[root@localhost kgcapp]# git push origin master
在 Jenkins 执行 或者 修改代码触发触发器