基础环境介绍
系统使用的是centos7.9
内核使用的是5.16.13-1.el7.elrepo.x86_64
容器使用的是26.1.4
docker-compose使用的是 v2.29.0
链路图
devops
配置git环境插件
部署好jenkins后开始配置 jenkins连接git,这里需要jenkins有连接git的插件。在已安装的插件中寻找git。
在可用的插件里找到 git plugin
在可用的插件里找到 Git Parameter
在页面看到有git插件后 进入容器也需要再验证一下,命令行直接输入git 看看是否有很多命令出来。
jenkinsdata]# docker exec -it bb4 /bin/bash
jenkins@bb4419a0ac15:/$ git
git git-lfs git-receive-pack git-shell git-upload-archive git-upload-pack
jenkins@bb4419a0ac15:/$ git
这里git插件验证完成,没啥问题了。
配置jenkins里的jdk和maven环境变量
公司大部分都是用的java项目打包的
这里服务器上有jdk和maven ,直接把文件目录移动过去就好了。
cp -r /usr/local/jdk/ /data/jenkinsdata/
cp -r /root/maven/ /data/jenkinssdata/# 记得授权app权限 这里容器内是用app启动的
chown -R app:app maven jdk
配置jdk的变量
进入容器查看jdk的路径
maven]# docker exec -it bb4 /bin/bash
jenkins@bb4419a0ac15:/$ ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
jenkins@bb4419a0ac15:/$ cd /var/jenkins_home/jdk/
jenkins@bb4419a0ac15:~/jdk$ ls
COPYRIGHT README.html THIRDPARTYLICENSEREADME.txt include jmc.txt legal man src.zip
LICENSE THIRDPARTYLICENSEREADME-JAVAFX.txt bin javafx-src.zip jre lib release
jenkins@bb4419a0ac15:~/jdk$ pwd
/var/jenkins_home/jdk
在页面配置jdk环境变量
1、这里不要选择自动安装,已经把jdk目录复制到宿主机的卷上了。
2、这里写的路径是上面进入容器后的路径。
配置maven的变量
进入容器查看maven的路径
jenkins@bb4419a0ac15:~/maven$ pwd
/var/jenkins_home/maven
在页面配置maven环境变量
1、这里不要选择自动安装,已经把maven目录复制到宿主机的卷上了。
2、这里写的路径是上面进入容器后的路径。
配置一个test项目
目的:是要 jenkins能够从gitlab拉取代码,并且完成打包编译的操作。
第一步构建项目
新建任务
这里名称自定义起一个,选择自由风格创建。
页面选择刚创建的test0920v1项目工程
第二步配置gitlab地址及凭证
这里点击 源码管理 开始配置私有仓库gitlab地址,这里会报错因为没有配置凭证
添加账号密码
选择刚添加的账号密码。
注意 这里需要jenkins容器所在宿主机可以连接gitlab,这里连接gitlab的账号有权限拉取代码。如果配置没有问题后 页面不会出现报错信息。
第三步拉取代码查看是否成功
点击项目 立即构建
控制台输出
查看日志信息
进入容器查看本次是否把代码拉取下来了,进入目录查看代码文件,看到是有文件的,说明拉取代码成功。
jenkins@bb4419a0ac15:~/maven$ cd /var/jenkins_home/workspace/test0920v01
jenkins@bb4419a0ac15:~/workspace/test0920v01$ pwd
/var/jenkins_home/workspace/test0920v01
jenkins@bb4419a0ac15:~/workspace/test0920v01$ ls
Jenkinsfile README.md docker pom.xml src
第四配置maven编译代码
选择到build steps --> maven目标
选择刚才添加的maven
编写编译代码的命令,保存退出点击立即构建。
注意这里写命令的时候 不要写mvn了 clean install -Dmaven.test.skip=true -U 直接写mvn后面的参数就好了,如果这里 写成 mvn clean install -Dmaven.test.skip=true -U 会报错。
点击构建查看日志,这里我就不再重复截图了。
这里看到日志是编译成功了
进入服务器查看是否打包成功,查看到是有jar包的,再次验证成功。
jenkins@bb4419a0ac15:~/workspace/test0920v01/target$ pwd
/var/jenkins_home/workspace/test0920v01/target
jenkins@bb4419a0ac15:~/workspace/test0920v01/target$ ls
classes datax-db.jar datax-db.jar.original generated-sources maven-archiver maven-status
第五步 把打包好的jar包发送到服务器上
推送到目标服务器上 还需要ssh插件,Publish Over SSH , SSH
上面插件安装完成后开始配置ssh插件
这里先配置一个远程服务器。(这里如果点击没有反应,重启一下容器)
这里选择高级选项点击输入密码
点击测试密码,显示success没有问题了。
开始配置Job
选择构建后操作,这里因为上面安装好了插件,这里才有
找到构建后操作
下面要写容器内打包的相对路径,查看容器内的路径
jenkins@bb4419a0ac15:~/workspace/test0920v01$ ls
Jenkinsfile README.md docker pom.xml src target
jenkins@bb4419a0ac15:~/workspace/test0920v01$ cd target/
jenkins@bb4419a0ac15:~/workspace/test0920v01/target$ ls
classes datax-db.jar datax-db.jar.original generated-sources maven-archiver maven-status
这里路径是target\*.jar 目录下的jar文件
查看任务日志 已经执行了推送步骤
查看目标服务器是否有文件,这里显示目标服务器上已有jar包。
[root@docker-010050111111-cm5 target]# pwd
/opt/target
[root@docker-010050111111-cm5 target]# ls
datax-db.jar
第六步 在代码中配置docker目录
在代码根目录里增加一个docker目录,创建一个dockerfile文件。
FROM harbor.xxx.xxx.com/base/ubuntu:20.04
WORKDIR /optENV project=$project
ENV env_huanjing=$env_huanjing
ENV pp_agent_id=$pp_agent_id
ENV jacoco="-javaagent:/data/jacoco/org.jacoco.agent-0.8.5-runtime.jar=includes=*,output=tcpserver,address=*,port=18524"
ENV pp_agent="-javaagent:/data/pp-agent/pinpoint-bootstrap.jar -Dpinpoint.applicationName=tihuan_project-tihuan_app_env"
ENV java_opts="-Xms1012m -Xmx2072m -XX:-UseGCOverheadLimit -Dspring.cloud.nacos.config.group=FUSION_GROUP -Dspring.cloud.nacos.server-addr=10.50.xxx.17:8848,10.50.xxx.18:8848,10.50.xxx.19:8848 -Dspring.cloud.nacos.config.namespace=ad938948-cc3e-4bcc-b458-f0af9548eeef"# app
ADD *.jar .
CMD /usr/local/jdk/bin/java -jar ${pp_agent} ${jacoco} ${java_opts} -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=utf-8 -Dspring.profiles.active=${app_env} -Dspring.cloud.nacos.discovery.ip=${app_serverip} -Dspring.cloud.nacos.discovery.port=${app_port} datax-db.jar
创建docker-compose.yml 文件
services:datax-db:build:context: ./dockerfile: Dockerfileimage: datax-db:v1.0.0container_name: datax-dbports:- 8080:8080
这里添加了两个docker相关的文件,一个是dockerfile打包镜像,另外一个是 docker-compose文件,后构建后操作 把命令推送到目标服务器。
cd docker
mv ../target/*.jar ./
docker-compose down
docker-compose up -d --build
以上内容根据每个人的不同的镜像及环境修改,编辑完后开始点击立即构建,会把代码及文件推送至目标服务器,并在目标服务器上打包镜像及运行容器。
在目标服务器上查看已运行的容器。