Jekins+Docker+GitLab+Springboot 一键部署持续集成
阅读原文时间:2021年04月20日阅读:1

先来安装必要软件

1.Docker

--------------------yum 安装 docker-----------------------------------

1、通过 uname -r 命令查看你当前的内核版本 高于3.1版本

uname -r

2、 使用 root 权限登录 Centos。确保 yum 包更新到最新。

yum -y update

3、 卸载旧版本(如果安装过旧版本的话)

yum remove docker docker-common docker-selinux docker-engine

4、 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

yum install -y yum-utils device-mapper-persistent-data lvm2

5、 设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6、 可以查看所有仓库中所有docker版本,并选择特定版本安装

yum list docker-ce --showduplicates | sort -r

7、 安装docker

sudo yum install -y docker-ce     #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1

8、 启动并加入开机启动

systemctl start docker

systemctl enable docker

9、 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

docker version

2.Jenkins(会有坑 推荐用yum方式安装)

1.Docker方式安装

1.docker pull jenkins

2.mkdir /home/jenkins          创建文件夹

3.ls -nd jenkins/                  查看文件权限

4.chown -R 1000:1000 jenkins/    给uid为1000的权限 (好像不设置权限启动不了报错:dockerjenkins Exited (1) 4 minutes ago mystifying_ritchie)

5.docker run -itd -p 8888:8080 -p 50000:50000 --name jenkins --privileged=true  -v /home/jenkins:/var/jenkins_home jenkins:latest

访问 ip:9090 进入欢迎页

使用docker安装jenkins可能会导致无法安装插件

使用tomcat运行jenkins可能会出现一堆问题,如,密码不生成,报一些奇葩异常,建议使用yum方式

1.roblem accessing /jenkins/. Reason: HTTP ERROR 404

在浏览器中手工输入:http://:

。不要访问"/jenkins"这个路径。

你可能会遇到这个问题 jenkins离线

打开

http://ip:port/pluginManager/advanced

选择高级最下面把连接换成这个

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

2.war/jar 包方式安装

这种直接用tomcat运行或者java -jar 运行,包去官网下载

我用war碰到了一个问题就是

密码不生成,找不到密码,也就进不去jenkins

3.安装Gitlab

1、配置yum

vim /etc/yum.repos.d/gitlab-ce.repo

复制以下内容:

 2、更新本地yum缓存

sudo yum makecache

3、安装GitLab社区版

sudo yum install gitlab-ce

GitLab常用命令

sudo gitlab-ctl start # 启动所有 gitlab 组件;

sudo gitlab-ctl stop # 停止所有 gitlab 组件;

sudo gitlab-ctl restart # 重启所有 gitlab 组件;

sudo gitlab-ctl status # 查看服务状态;

sudo gitlab-ctl reconfigure # 启动服务;

sudo vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;

gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;

sudo gitlab-ctl tail # 查看日志;

1、修改/mnt/gitlab/etc/gitlab.rb

 把external_url改成部署机器的域名或者IP地址

# external_url 'GENERATED_EXTERNAL_URL'

vim /mnt/gitlab/etc/gitlab.rb

2、修改/mnt/gitlab/data/gitlab-rails/etc/gitlab.yml

vim /mnt/gitlab/data/gitlab-rails/etc/gitlab.yml

找到关键字 * ## Web server settings * 

将host的值改成映射的外部主机ip地址和端口,这里会显示在gitlab克隆地址

 必要环境  jdk  maven -git

这些自行百度安装

开始构建

1.创建Springboot项目;这个就不说了

2.创建Dockerfile,我的位置如下

# 基于java:8镜像进行扩展

FROM java:8

# 定义数据卷位置---存放容器共享文件的位置

VOLUME /tmp

# 将maven打成的jar包复制到镜像目录中(相对路径---默认"."就是Dockerfile所在目录)

ADD pojectName.jar pojectName.jar

# 指定容器启动时,需要执行的命令(运行该jar程序)

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/pojectName.jar"]

3.建个sh脚本

位置:

appName="项目名称"
word="1"
echo "$word"
word=`docker ps -a -q --no-trunc --filter name=^/"$appName"$`
echo "$word"
if [ -z "$word" ];
then
    echo "当前不存在该容器,直接进行启动该操作-------------------------------------"
elif [ -n "$word" ];
then
    echo "当前已存在容器,停止并移除该容器-------------------------------------"
    /usr/bin/docker stop "$word"
    /usr/bin/docker rm "$word"
elif [ "$word" == "1" ];
then
    echo "查询的信息有误,执行默认操作-------------------------------------"
    /usr/bin/docker stop "$word"
    /usr/bin/docker rm "$word"
fi
#貌似这样才可以删除容器
cid=$(docker ps -a| grep "$CONTAINER_NAME" | awk '{print $1}')
if [ "$cid" != "" ]; then
    echo "--------删除容器-------$cid------------------------------"
   docker rm -f $cid
fi
# 删除没有版本号的镜像(看需求,可删可不删)
docker images|grep "$appName"|awk '{print $3}'|xargs docker rmi
#删除镜像
echo "--------删除镜像-------------------------------------"
docker images | grep "$appName"  | grep 'latest' | awk '{print $3}' | xargs docker rmi
#运行
/usr/bin/docker run -p 8888:8080 -d  "$appName"
echo "--------构建成功-------------------------------------"

4.打开jenkins进行配置

系统配置-全局工具配置

配置jdk

配置git

配置maven

都是配置命令位置或者环境变量,如图

5.新建一个任务

配置代码源头(也就是你的git的地址),配置git密码

配置意思 使用maven进行打包,最后执行命令。

6.保存,立即构建

等待构建完成。