环境筹备
- centos 7
- Java 1.8
- Maven 3.6.3
- Docker 20.10.17
- Gitlab gitlab-ce:14.0.5-ce.0
- Jenkins 2.60.3(强烈建议,其余版本有坑)
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:2.46.3
能够尝试在命令中退出
-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:2.46.3 # 抉择镜像
- 挂载
-
执行命令
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:2.46.3
- 查看 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,为凭证的惟一标识符,只有保障惟一不反复即可。
- 形容用于标识这个凭证是干什么的,例如图中的
[email protected]
,就意思为xiaoYan 主机
的账号密码
- 依照上一步,咱们同样增加一条用于 gitlab 认证的凭证记录
-
再次进入
Manager Jenkins
,点击进入系统配置
。而后始终下拉到最初,找到SSH Servers
配置项,点击新增。依照下图批示配置结束后,点击保留退出即可。- name: 给主机起一个名字
- Hostname: 主机 ip
- Username: 主机用户名
- Remote Directory: 主机默认目录
- Passphrase / Password:主机用户明码
-
这次咱们来配置
全局工具配置
。首先配置全局默认 maven 配置文件,门路填写 jenkins 同主机上的 maven 配置文件门路
而后配置 Java 目录,如果呈现图中的提醒,示意主机的 Java 目录并没有挂载到 docker 容器的 Jenkins 中。所以须要咱们进行将
/usr/local/java
手动挂载到 Jenkins 中。(如果后面的命令没有错,这里不会呈现这种状况的。然而我本人执行的过程中命令有偏差,导致了 java 目录没有被正确挂载上)手动挂载 Docker 目录:https://segmentfault.com/a/11…
在配置 git 目录。在 jenkins 主机上执行whereis git
,失去git
命令所在目录。最初配置一下 maven 目录。
保留退出即可。
- 终于到了配置 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