【Docker/GitLab/Jenkins】(下)

简介: 【Docker/GitLab/Jenkins】(下)

五、jenkins主要的一些配置


bb02547d2bbd406d9a2add7bec05225b.png

系统配置中配置jdk,maven路径

bb02547d2bbd406d9a2add7bec05225b.png

全局工具配置,配置jdk,maven,git路径和上面的路径要保持一致


d3b006d5f87641a09de45418a9cb84c6.png


f37806b6f41c4c4aa6bf1b46eaca58d8.png



29f8610bb5cb44e0ab852606079eb024.png


凭据配置,有些页面无法出来页面,可以通过http://ip:port/credentials/进行访问


4a8608577d374cf5bcd345cb9a249e8d.png

b357759ce87e439aab46cbf7c56314c8.png


52c507d1b61a472bbb9c5c406914b176.png

插件看个人需要


10542b38ffa24c78b019b3eddb78729e.png


配置时间,脚本命令行中执行

b62db6442a234944a324b4a7c6cdd117.png

点击进入脚本命令行将以下命令运行即可。

system.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')


六、项目配置


创建项目


eacac8c100b14bc08d6168c84f3cb113.png

f223d365a43c439a9f863e11fe262204.png

配置项目

3dd4eb967a684018b8835d7653096b4d.png

ca6973fc50e14e10b8c1c37be6b20c75.png

f5b0c0458e3c45119423802aceaba9dd.png

3314614dbea14131a0bf2c2e302776c4.png

2145879810914fc8a35ff027ebcf24f0.png

编写shell脚本

###!/bin/bash
### 制定打包模块
arr=(community-starters/community-xxx-starter:8081)
###加前缀
suffix="-"${BUILD_ENV}
###自定义网络
ip_param=''
echo "当前环境"${BUILD_ENV}
###如果执行dev环境,走以下流程
if [ ${BUILD_ENV} == "dev" ];then
### 如果是在本机上安装就使用内网ip,这样速度会快很多,内网ip查询:ifconfig -a
    echo 'export DOCKER_HOST="tcp://xxx.17.0.1:8010"'
    export DOCKER_HOST="tcp://xxx.17.0.1:8010"
    ###通过命令docker network create --driver bridge --subnet=xxx.30.0.0/16 common-network创建自定义网段,docker network inspect common-network进行查看,配置的时候,不要以0结尾,如以下配置即可:
    ip_param='--ip xxx.30.0.2'
fi
### for 遍历
for mp in ${arr[*]}
do
  ###截取字符串获得module名称和端口
  path=${mp%:*}
  module=${path###*/}
  ###arr中配置了端口:8081    
  port=${mp###*:}
  ###arr中配置了,container_name=community-starters/community-xxx-starter-dev
  container_name=$module$suffix
  ###arr中配置了,image_name=community-starters/community-xxx-starter-dev
  image_name=$module$suffix
    echo "开始构建: "$container_name":"$port
    CID=$(docker ps -a | grep "$container_name")
    if [ "$CID" != "" ];then
            echo "删除现有容器"
            docker stop $container_name
            docker rm $container_name
    fi
    echo "移除镜像" : $image_name
    docker rmi $image_name
    cd $module
    echo "当前路径" :$(pwd)   
    echo "构建容器": $container_name
    docker build -t $container_name .
    echo "启动容器" : $container_name
    docker run --name $container_name --restart=always -d -p 8081:8081 -p 8082:8082-p 8083:8083 -e TZ=Asia/Bangkok -v /root/fragant/logs:/root/logs:z -v /etc/localtime:/etc/localtime:z -e SPRING_PROFILES_ACTIVE=qa -m 2G $image_name
    echo "连接容器网络" : $ip_param $container_name
    docker network connect $ip_param common-network $container_name
    echo "执行完成"
done


内网ip查询


537a64fb6bbd4684b25e6cdeffcb6631.png

项目结构

93e588546b7044cc840a2fb797cb05c6.png

编写Dockerfile

FROM openjdk:8-alpine
MAINTAINER community-xx-starter
ADD target/community-xx-starter.jar /community-xx-starter.jar
EXPOSE 8081
ENTRYPOINT ["sh","-c","java -jar -Dspring.profiles.active=qa /community-xx-starter.jar"]


进到服务器检出项目的目录,这个时候项目检出并没有打包成jar包,需要手动打包,命令如下:

mvn clean install


如果不成功的话可以尝试使用绝对路径进行调整,例如:

/opt/java/maven/bin/mvn clean install


打包jar包成功之后可以进行自动化部署了


2e0a2bd2440e4047a34fd464c0c9a2c7.png


说明:在弄CI流程的时候可能会出现各种问题,比如脚本执行卡住,这个时候可以将脚本中的命令一条条拿到服务器上面执行,排除命令的错误性。比如误删了某个文件,可以进行手动恢复,可参考:Linux系统:第十三章:centos误删文件如何恢复文件数据。比如项目部署成功无法访问,排查项目是否成功运行,对日志进行排查排除项目启动错误导致的无法访问,对网络进行排查排查安全出口和入口等问题。如果觉得jenkins配置太过麻烦,可参考gitlab的CI:Linux系统:第十五章:gitlab集成CI。


博主的心理话:这里还是要吐槽一下,这几天一直在弄二套CI流程(gitlab的ci和jenkins),踩坑无数,目前网络上面太多相同的文章了,搜索出来一页至少超过一半的文章,文章内容一模一样,剩下的就是排版乱的很,看都看不下去的那种,导致找到的解决方法的时间大大延长,希望未来这种环境能够有所改善。


七、jekins迁移到另一台服务器上


首先本服务器上面的jenkins运行正常,另一台服务器的jenkins也运行正常,需要知道二台服务器上面的安装目录


找到jenkins_home目录

find / -name jenkins_home


解压

sudo tar czvf jenkins.tar.gz *


复制压缩包到新服务器上面去,-i "qt_dev_cert.pem"表示访问目标服务器需要携带私钥,qt_dev_cert.pem表示当前目录下的私钥文件,root@xx.xx.xx.xx 表示root用户,xx.xx.xx.xx表示目标服务器的ip,/var/jenkins_home表示复制到那个目录下面。如果是密码登录则换成-p 密码即可。

scp -p "password" jenkins.tar.gz  root@xx.xx.xx.xx:/var/jenkins_home
------------------------------------------------------------------------------------
scp -i "qt_dev_cert.pem" jenkins.tar.gz  root@xx.xx.xx.xx:/var/jenkins_home


去另一台新服务器解压

tar zxf jenkins.tar.gz


将解压的文件复制到新服务器的jenkins_home目录里面即可

cp /var/jenkins_home /home/jenkins_home


相关文章
|
2月前
|
监控 jenkins 持续交付
Docker和Jenkins有什么不同
【10月更文挑战第18天】Docker和Jenkins有什么不同
|
2月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
140 1
|
2月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
2月前
|
jenkins Java 持续交付
Docker搭建jenkins环境
这篇文章详细介绍了如何利用Docker搭建Jenkins环境,包括拉取Jenkins镜像、配置端口映射及初始化设置的步骤。
225 0
Docker搭建jenkins环境
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
83 0
|
2月前
|
Ubuntu jenkins 持续交付
Ubuntu系统 用docker安装jenkins
Ubuntu系统 用docker安装jenkins
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
250 0
|
3月前
|
Docker 容器
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
|
4月前
|
JavaScript jenkins 持续交付
自动化部署与持续集成:使用Jenkins和Docker优化开发流程
【8月更文挑战第31天】在软件开发的世界里,时间就是一切。本文将引导你通过Jenkins和Docker的强大组合,实现自动化部署和持续集成,让你的开发流程如丝般顺滑。我们将从基础设置开始,逐步深入到构建管道,最终实现一键部署的梦想。准备好让你的开发效率飞跃,一起探索这个令人兴奋的旅程吧!
|
4月前
|
jenkins Shell 持续交付
自动化部署:使用Jenkins和Docker实现CI/CD
【8月更文挑战第31天】 本文旨在引导读者了解如何通过Jenkins和Docker来实现持续集成和持续部署(CI/CD),从而优化开发流程,提升工作效率。文章将详细介绍配置Jenkins服务器、创建Docker镜像以及设置自动化构建和部署的步骤。通过实际操作案例,我们将展示如何将代码变更快速部署到测试或生产环境,确保软件质量与发布速度的双重保障。

热门文章

最新文章