环境准备
- centos 7
- Java 1.8
- Maven 3.6.3
- Docker 20.10.17
- Gitlab gitlab-ce:14.0.5-ce.0
Jenkins相关依赖环境安装
Java环境安装
虽然我们是采用docker的方式安装Jenkins,所有的依赖镜像都已经打包好了。但是我们在后续使用Jenkins的过程中,会采用Jenkins主机上的Java运行环境,所以我们还是要安装一下java JDK8、并且配置一下环境变量。
推荐教程:https://segmentfault.com/a/11...
maven环境安装
推荐教程:https://segmentfault.com/a/11...
部署docker安装
推荐教程:https://segmentfault.com/a/11...
Gitlab安装
推荐教程:https://segmentfault.com/a/11...
部署jenkins(基于docker)
我们可以自己在本机上部署jenkins,也可以使用docker进行部署,这次我们选择docker来部署。
备份一下
/usr/local/java
目录和/usr/local/apache-maven-3.6.3
目录里面的cp -r /usr/local/java /usr/local/java_bak cp -r /usr/local/apache-maven-3.6.3 /usr/local/apache-maven-3.6.3_bak
执行以下命令即可:
docker run -d -p 8001:8080 -p 8002:50000 -v /usr/local/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /etc/local/java:/etc/local/java -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3 --name jenkins jenkins/jenkins:latest
可以尝试在命令中加入
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai
,这样可以解决Jenkins时区不对的问题(待测试),也可以在部署后采用文中最后解决方案。
其中要注意的是:- 挂载
/usr/local/jenkinsHome
是jenkins的主目录 - 挂载
/etc/localtime
目录是为了容器内的jenkins与主机时间一致; - 挂载
/etc/local/java
是同步主机的java到容器中的jenkins(不然后面会有坑) - 挂载
/usr/local/apache-maven-3.6.3
是同步主机的maven到容器中的jenkins(不然后面会有坑)
下面是命令的解释:
docker run -d -p 8001:8080\ # 将容器中的端口8080,挂载到主机端口8001 -p 8002:50000\ # 将容器中的端口50000,挂载到主机端口8002 -v /usr/local/jenkins:/var/jenkins_home\ # 将容器中的目录/var/jenkins_home,挂载到主机目录/usr/local/jenkins -v /etc/localtime:/etc/localtime\ # 将容器中的目录/etc/localtime,挂载到主机目录/etc/localtime -v /etc/local/java:/etc/local/java\ # 将容器中的目录/etc/local/java,挂载到主机目录/etc/local/java -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3\ # 将容器中的目录/usr/local/apache-maven-3.6.3,挂载到主机目录/usr/local/apache-maven-3.6.3 --name jenkins\ # 给容器命名为jenkins jenkins/jenkins:latest # 选择镜像
- 挂载
执行命令
docker ps
,我们会发现jenkins
并没有被启动起来。这是因为我们刚才挂载的目录,jenkins容器并没有访问启动。所以,我们需要给挂载的目录给予权限。chown -R 1000:1000 /usr/local/java chown -R 1000:1000 /usr/local/apache-maven-3.6.3 chown -R 1000:1000 /usr/local/jenkins chown -R 1000:1000 /etc/localtime
重新执行下面命令,以启动jenkins。
docker run -d -p 8001:8080 -p 8002:50000 -v /usr/local/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /usr/local/java:/usr/local/java -v /usr/local/apache-maven-3.6.3:/usr/local/apache-maven-3.6.3 --name jenkins jenkins/jenkins:latest
进入Jenkins报错, 参看此教程: https://blog.csdn.net/DDJ_TES...
如果觉得Jenkins占用内存过大, 我们可以采用下面的方式限制jenkins占用内存大小:
# docker限制内存大小
docker update jenkins -m 3g --memory-swap -1
# 命令详解
--memory 或 -m 限制容器的内存使用量
--memory-swap 限制内存和 Swap 的总和,不设置的话默认为--memory的两倍
- 查看jenkins是否启动成功,执行命令
docker ps
,查看是否有jenkins
- 在浏览器访问
http://主机ip:8001
,如果出现下面页面表示成功
- 执行命令
docker logs jenkins
,复制日志文件中的密码。
- 浏览器访问
http://主机ip:8001
,到刚才复制的密码,粘贴到输入框中。
- 点击continue,出现以下页面,选择默认选项(安装推荐插件),继续即可。
- 等待插件安装完成,如果有安装失败的,多试几次就行。(也可以后面再安装)
- 插件安装完毕后,会自动进入到创建账号的页面。我们这里为了快速进行,直接选择
使用admin账户继续
。
- 设置jenkins的路径,我们默认继续即可
- 点击
开始使用jenkins
,即可进入jenkins管理面板
使用Jenkins部署Java项目
- 点击
Manage Jenkins
,进入jenkins管理
- 选择
Manage Plugins
,进入jenins插件管理
- 选择
Available
,进行插件搜索安装
- 搜索
maven
,勾选第一个Maven Integration
,最后选择Download now...restart
.
- 等待插件下载完成,最后选择
空闲时重启
即可
jenkins安装插件可能重启可能会出现挂掉的情况,这个时候我们只需要手动执行docker start jenkins
即可。 - 同理安装插件
Publish Over SSH
- 重启进入jenkins后,我们重新进入
Manager Jenkins
,点击进入管理用户
- 选择admin旁边的小齿轮,然后下滑找到
密码
项。修改密码,保存即可。
- 重登jenkins,点击进入
Manage Credentials
,进行全局账号密码配置
选择
添加一些凭证
,设置账号
、密码
等
- 其中id,为凭证的唯一标识符,只要保证唯一不重复即可。
- 描述用于标识这个凭证是干什么的,例如图中的
host@xiaoYan
,就意思为xiaoYan 主机
的账号密码
- 按照上一步,我们同样添加一条用于gitlab认证的凭证记录
再次进入
Manager Jenkins
,点击进入系统配置
。然后一直下拉到最后,找到SSH Servers
配置项,点击新增。按照下图指示配置完毕后,点击保存退出即可。
- name: 给主机起一个名字
- Hostname: 主机ip
- Username: 主机用户名
- Remote Directory: 主机默认目录
- Passphrase / Password:主机用户密码
这次我们来配置
全局工具配置
。
首先配置全局默认maven配置文件,路径填写jenkins同主机上的maven配置文件路径
注意: maven和jdk的home路径一定要看填写前面挂载到容器里面的地址, 这个地址可以随意, 只能与宿主机对应的maven,jdk正确挂载上即可.
然后配置Java目录,如果出现图中的提示,表示主机的Java目录并没有挂载到docker容器的Jenkins中。所以需要我们进行将/usr/local/java
手动挂载到Jenkins中。(如果前面的命令没有错,这里不会出现这种情况的。但是我自己执行的过程中命令有偏差,导致了java目录没有被正确挂载上)手动挂载Docker目录:https://segmentfault.com/a/11...
在配置git目录。在jenkins主机上执行whereis git
,得到git
命令所在目录。
最后配置一下maven目录和Jdk目录
保存退出即可。- 终于到了配置Java项目的时候了,点击
新建项目
- 选择
maven风格
,输入项目名称(这个名称会是jenkins下workspeace的工程目录)
- 添加描述
- 配置gitlab地址,其中
Credentials
选择我们之前在全局Credentials配置的gitlab认证,分支选择我们需要打包部署的分支。
- 配置
SSH Publishers
,即jar包打包的动作
- 配置
Build
,即构建需要的项目pom.xml文件,和打包命令。
- 保存退出,点击
立即构建
。等等出现绿色小对钩,即表示构建成功。
- 登录部署jar包的服务器,查看jar包有没有被正确的打包发送过指定得目录。java服务有没有被正确的启动起来。
踩坑
Jenkins时区不对,差8个小时,解决方案
# 进入容器
docker exec -it -u root jenkins bash
#修改容器时区
echo 'Asia/Shanghai' > /etc/timezone
# 查看修改后的容器时区
cat /etc/timezone
exit
# 重启jenkins容器
docker restart jenkins
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。