赞
踩
实验环境
主机 | 服务 | 备注 |
192.168.1.1 | Git、GitLab、Maven | 内存4G,可联网 |
192.168.1.4 | Git、Jenkins、Maven | 内存4G,可联网 |
192.168.1.6 | Nexus、Maven | 内存3G,可联网 |
实验目的
当在GitLab上使用mvn生成Java项目代码后,通过Git上传到GitLab的项目仓库中,Jenkins会通过构建触发器,触发对GitLab项目进行打包,最后将jar包上传到Nexus
搭建环境
搭建GitLab/Maven
192.168.1.1
准备Java环境
- tar zxf jdk-8u201-linux-x64.tar.gz
- mv jdk1.8.0_201/ /usr/local/java
- vim /etc/profile # 文件末尾添加
- export JAVA_HOME=/usr/local/java
- export JRE_HOME=/usr/local/java/jre
- export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
- export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
- rm -rf /usr/bin/java
- source /etc/profile
- java -version # 验证
安装Maven
- tar zxf apache-maven-3.6.0-bin.tar.gz
- mv apache-maven-3.6.0 /usr/local/maven
- echo "export PATH=$PATH:/usr/local/maven/bin" >> /etc/profile
- source /etc/profile
- mvn -v # 验证
安装GitLab
- # 安装git
- yum -y install git
- # 安装GitLab
- rpm -ivh gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm
配置GItLab启动
- # 修改配置文件中访问GitLab页面的url
- vim /etc/gitlab/gitlab.rb
- # 修改
- external_url 'http://192.168.1.1'
-
- # 编译配置GitLab并启动
- gitlab-ctl reconfigure # 第一次需要很长时间
- gitlab-ctl start # 启动gitlab
- firewall-cmd --add-port=80/tcp # 放行80端口供web设置管理
登录GitLab的web管理界面设置
访问http://192.168.1.1
第一次访问需要设置管理用户密码,默认管理用户root,密码最少8位
使用管理用户登录
搭建Jenkins/Maven
192.168.1.4
准备Java环境
- tar zxf jdk-8u201-linux-x64.tar.gz
- mv jdk1.8.0_201/ /usr/local/java
- vim /etc/profile
- # 文件末尾添加
- export JAVA_HOME=/usr/local/java
- export JRE_HOME=/usr/local/java/jre
- export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
- export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
-
- rm -rf /usr/bin/java
- source /etc/profile
- java -version # 验证
安装Maven
- tar zxf apache-maven-3.6.0-bin.tar.gz
- mv apache-maven-3.6.0 /usr/local/maven
- echo "export PATH=$PATH:/usr/local/maven/bin" >> /etc/profile
- source /etc/profile
- mvn -v # 验证
安装Jenkins
- # 安装git
- yum -y install git
- # 安装Jenkins
- rpm -ivh jenkins-2.204.3-1.1.noarch.rpm
- # 启动Jenkins
- systemctl start jenkins
- # 放行jenkins端口
- firewall-cmd --add-port=8080/tcp
进入web页面安装Jenkins基本插件
访问http://192.168.1.4:8080
在1.4命令行查看解锁Jenkins密码
输入密码后,如果出现此界面
安装推荐插件
等待安装完成(很长很长时间)
安装加速神奇,Jenkins默认使用google来搜索插件的下载,而且插件也在国外网站,这里将updates目录中的default.json内的url换为百度(搜索引擎)和清华(下载插件地址),前提必须出现过以上界面才会有updates目录
- #cd /var/lib/jenkins/updates/
- # sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
- #sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
然后需要重启Jenkins
systemctl restart jenkins
此时web页面会显示断开,重新连接登录恢复下载即可
中间需要重新输入解锁Jenkins密码
安装完成后,创建管理用户
配置全局工具
进入全局配置管理
配置环境中的maven,设置系统文件,将路径填写为安装maven后的配置文件路径
配置Java环境,路径同样是安装过Java的环境,版本为1.8
配置Git环境,路径写为Git命令所在路径,命令行执行which git
配置maven安装目录,如果本机没有也可以选择自动安装
搭建Nexus(Maven私服)
192.168.1.6
- tar zxf jdk-8u201-linux-x64.tar.gz
- mv jdk1.8.0_201/ /usr/local/java
- vim /etc/profile
- # 文件末尾添加
- export JAVA_HOME=/usr/local/java
- export JRE_HOME=/usr/local/java/jre
- export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
- export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
-
- rm -rf /usr/bin/java
- source /etc/profile
- java -version # 验证
安装Maven
- tar zxf apache-maven-3.6.0-bin.tar.gz
- mv apache-maven-3.6.0 /usr/local/maven
- echo "export PATH=$PATH:/usr/local/maven/bin" >> /etc/profile
- source /etc/profile
- mvn -v # 验证
安装Nexus
- mkdir /usr/local/nexus
- tar zxf nexus-3.14.0-04-unix.tar.gz -C /usr/local/nexus/
启动Nexus
启动较慢,耐心等待
- /usr/local/nexus/nexus-3.14.0-04/bin/nexus start
- firewall-cmd --add-port=8081/tcp
- netstat -anpt | grep 8081
配置Nexus的仓库
管理用户登录,管理账户admin,默认密码admin123
添加代理仓库
地址为aliyun的仓库地址,最下方创建即可
http://maven.aliyun.com/nexus/content/groups/public/
为新添加的aliyun仓库设置查找列表,后期使用jar包时就是依次使用各个仓库下载
配置Jenkins和GitLab中Maven使用Nexus私服下载jar包
在Nexus的web界面中仓库私服地址
在192.168.1.4服务器上配置
- vim /usr/local/maven/conf/settings.xml
- # 添加私服仓库地址
- # 添加到<mirrors></mirrors>之间:
- <mirror>
- <id>nexus conf</id>
- <name>nexusconf</name>
- # 这里的地址为Nexus的地址及端口号
- <url>http://192.168.1.6:8081/repository/maven-public/</url>
- <mirrorOf>*</mirrorOf> # 拦截所有jar包下载到私服
- </mirror>
在192.168.1.1服务器上配置
- vim /usr/local/maven/conf/settings.xml
- # 添加到<mirrors></mirrors>之间:
- <mirror>
- <id>nexus conf</id>
- <name>nexusconf</name>
- <url>http://192.168.1.6:8081/repository/maven-public/</url>
- <mirrorOf>*</mirrorOf>
- </mirror>
准备项目
192.168.1.4(Jenkins)
安装插件
GitLab/GitLab Hook插件安装
Maven/Maven integration插件安装
192.168.1.1(GitLab)
新建项目仓库
这里直接使用管理用户来创建
创建名为kgcapp的项目仓库
在GitLab中添加本机的公钥值
在GitLab(1.1)本地的命令行中生成密钥对
- [root@gitlab ~]# ssh-keygen
- Generating public/private rsa key pair.
- Enter file in which to save the key (/root/.ssh/id_rsa):
- Created directory '/root/.ssh'.
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /root/.ssh/id_rsa.
- Your public key has been saved in /root/.ssh/id_rsa.pub.
- The key fingerprint is:
- SHA256:N1WUQ0i1zfZ9Z5dA68c8aSzrn3EnCmkT8fSw0cisF98 root@gitlab
- The key's randomart image is:
- +---[RSA 2048]----+
- | ..*=. |
- | oo+++ |
- | . Xoo.+|
- | *.B=o=|
- | S = +ooXE|
- | . = =.=|
- | = ...o|
- | . o.. .=|
- | ...o |
- +----[SHA256]-----+
- [root@gitlab ~]# cat .ssh/id_rsa.pub
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuGX4w7NPm8FQ7OBJM7yJszkY1g7leMyfRiYieCJeGhXn
- Klzch1b0eqGCfTBulRyUnNwEAC+CQDHoifnjMS4yyrV7oyUi0ezET6h1KZlvsGqnqrncyswFcfNrjxU8tNt
- XLtA8Vto9dhii3XU8JdEK42SGLOgsBAJvWsMFJphA4p0aRSG12ACxl+PxrYlKbOezEie5DtMkCKAEXlaUC2
- dgsYYsP8eIJcn4ZOnU9gAjqPhkiYDqiAUoL3A9AuBXCY78/rdd1nPDqJh4aBCMUouE/CyGrkBCbX0Qapxwr
- e/i9IdubdmXaH/j5m9CKVUuNeKKaJ6sflt6BPDwPAWHlQWPJ root@gitlab
将公钥值复制到GitLab中
192.168.1.4(Jenkins)
配置邮箱
在最下方找到Jenkins URL的地方,填写自己的邮箱
找到扩展邮箱,smtp为qq的服务器,如果是163则将qq改为163,高级中的密码是邮箱的授权码
邮件通知中的设置和扩展邮箱类似,然后保存
再次进入系统设置中,在最下方找到测试邮件,填写一个邮箱,点击“test configuratioin”即可测试,如果报错,检查以上设置,有可能会因为保存不成功
新建任务并配置
新建任务名为kgcapp
与GitLab中的名称对应,在生产环境中不易被混淆
对kgcapp任务进行配置
描述信息
源码管理
复制GitLab项目的SSH地址
为了访问GitLab添加凭证(红色报错正常,添加正确的凭证就好了
创建凭证,其中的key是GitLab在本地生成的私钥,可以通过私钥与GitLab上的公钥来连接Jenkins和GitLab
红色报错消失了
构建触发器
选择当gitlab上有新的代码更新时,进行构建
然后进入高级选项
生成一串token值,用来对GitLab中的项目代码进行操作,所以这个值要放到GitLab中,用于验证允许Jenkins来拿取代码,稍后会做
Build
当拿取到代码后,使用mvn clean deploy进行构建代码
Post Steps
构建命令结束后,继续执行一部分shell命令
构建后操作
设置收件人邮箱地址,且发送邮件时,携带log文件
设置邮件触发器,当构建成功/失败/不稳定时,都通知收件人和管理员
192.168.1.1(GitLab)
192.168.1.1中设置Jenkins中的token值,用来触发Jenkins构建
GitLab默认情况下不允许通过本地网络触发构建,以下这步是为了设置允许本地网络构建,如果不设置允许会在添加token时报错
设置允许之后,就可以设置GitLab项目与Jenkins的构建触发器连接了
进入项目中选择设置
图中的URL是在Jenkins中的项目路径,这个路径在构建触发器的那里可以看到,复制即可,token则是刚才在Jenkins的管理界面中生成的token值,也是同样的位置,然后点击下方add webhook
add成功后显示下图
生成测试代码
192.168.1.1(GitLab)
生成Java项目,以上这步虽然采用了私库中的阿里云maven库,但还是在生产项目时卡了半天,不知道原因,就等就对了
- mvn archetype:generate -DgroupId=cn.kgc.kgcapp -DartifactId=kgcapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
- archetype:指定操作类型,generate是产生项目的意思,老版本为create
- -DarchetypeArtifactId:表示创建项目框架
- maven-archetype-quickstart:代表java项目
- maven-archetype-webapp:代表web项目
- -DinteractiveMode=false:不采用交互模式,不需要人为操作
执行成功后会在当前目录生成名为kgcapp的一个目录,进入目录,生成一个测试的Java项目
cd /root/kgcapp
ls
pom.xml src # 可以看到这两个文件即可
修改pom.xml,可以使上传到Nexus(1.6)私服中
- cd /root/kgcapp
- vim pom.xml
- # 倒数第一行上面添加以下,意思为添加本项目的上传仓库位置
- <distributionManagement>
- <snapshotRepository>
- <id>nexus</id>
- # 快照存储库,按照Maven的目录结构,这个库用于存放开发时的不稳定版
- <name>Snapshot Repository</name>
- <url>http://192.168.1.1:8081/repository/maven-snapshots/</url>
- </snapshotRepository>
- <repository>
- <id>nexus</id>
- # 发布存储库,这个库用于稳定后的版本
- <name>Releases Repository</name>
- <url>http://192.168.1.1:8081/repository/maven-releases/</url>
- </repository>
- </distributionManagement>
192.168.1.4(Jenkins)
编辑Maven配置文件,加入允许Nexus上传的认证验证信息
必须是在Jenkins中来添加认证,因为在执行构建mvn clean deploy 时,是用的Jenkins本地的maven配置文件,所以需要在Jenkins中配置Nexus的认证
- vim /usr/local/maven/conf/settings.xml
- <server>
- <id>nexus</id> # 这里的id和pom文件中的一致
- <username>admin</username> # 用户密码是Nexus仓库可以登录的,这里会使用管理用户
- <password>admin123</password>
- </server>
192.168.1.1(GitLab)
现在将Java项目上传到GitLab中
- cd /root/kgcapp
- git init
- git add .
- git config --global user.email "mupeifeiyi@gmail.com"
- git config --global user.name "feiyi"
- git commit -m "kgcapp"
- git remote add origin git@192.168.1.1:root/kgcapp.git
- git push -u origin master
验证
192.168.1.1(GitLab)
在GitLab的web页面中,进入kgcapp项目,可以看到本机上传到仓库的src目录和pom.xml文件
192.168.1.4(Jenkins)
Jenkins的web页面中的项目会自动开始运行,直到打包上传到私服中,进入项目查看终端输出
192.168.1.6(Nexus)
查看私服的两个仓库maven-snapshots和maven-releases
因为自己的配置,知道是上传到了maven-releases仓库中
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。