jenkins+gitee+docker 当前或远程服务器部署springboot项目

  Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。现记录一下本人使用jenkins+gitee在当前和远程服务器自动构建一个springboot项目,并使用docker打包成镜像进行部署,废话不多说,开搞

  1. 拥有一台服务器,本人使用的是阿里云的linux的服务器。服务器安装Docker,Maven,Git,Jenkins,JDK并配置好环境变量
    Jenkins安装参考:https://blog.csdn.net/quwujin/article/details/112533165
    Git安装参考:https://www.cnblogs.com/zhi-leaf/p/10978538.html
    Maven安装参考:https://www.cnblogs.com/zhi-leaf/p/6323081.html
    JDK安装参考:https://www.cnblogs.com/zhi-leaf/p/10315125.html
    Docker安装参考: https://blog.csdn.net/z1353095373/article/details/107102745

  2. 将自己的springboot项目push到gitee仓库,拿到项目的url


    gitee-1.png
  1. Jenkins配置
    (1) 服务器Jenkins安装好之后,在浏览器访问服务器ip:(jenkins端口号),出现以下界面
    jenkins-1.png

    输入cat /var/lib/jenkins/secrets/initialAdminPassword获取密码,复制粘贴到管理员密码,点击继续
    (2) 之后出现下面的界面,选择安装推荐的插件或者选择插件来安装都可以,需要的插件可以在配置完jenkins后在自行下载
    jenkins-2.png

    (3) 插件安装完以后,出现创建管理员的界面,依次操作就好
    jenkins-3.png

    jenkins-4.png

    jenkins-5.png

    (4)配置完成后,可以看到jenkins的功能界面,下图是我已经创建过两个任务
    jenkins-6.png

4.jenkins插件的安装
(1) 安装插件的路径

jenkins-7.png

jenkins-8.png

(2) 需要安装的插件
Git 插件:拉取代码
Gitee 插件: 开启webhook,push代码后自动构建,下面会讲配置过程
Maven Integration plugin 插件:maven打包
Publish Over SSH 插件:远程服务器连接
(3)工具环境配置
jenkins-9.png

配置JDK
JDK.png

配置git
git.png

配置maven
maven.png

对应的*_HOME在环境变量中都可查看vim /etc/profile
(4) 配置ssh
ssh.png

拉到最下面
1.png

2.png

  1. 创建任务
    (1)在jenkins主页面,点击New Item创建一个新任务


    5-1.png

    (2)配置git


    5-2.png

    (3)配置gitee,
    5-3.png

    5-4.png

    复制url和密码,打开gitee仓库,在管理 - WebHooks - 添加webHook,将url和密码填入对应的输入框


    5-5.png

    (4) 配置maven
    5-6.png

(5) 如果是将项目部署到jenkins所在的服务器(不需要看6),脚本自行百度搜索编写,贴出我自己的

5-7.png
#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/home/project
# 源jar路径  
SOURCE_PATH=/var/lib/jenkins/workspace
#项目名称
PROJECT_NAME= xxx
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME= xxx
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
 
DATE=`date +%Y%m%d%H%M`
 
# 最新构建代码 移动到项目环境
function transfer(){
    echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME.jar 迁移至 $BASE_PATH ...."
        cp $SOURCE_PATH/$PROJECT_NAME/$SERVER_NAME/target/$SERVER_NAME-1.0-SNAPSHOT.jar $BASE_PATH/$SERVER_NAME.jar
    echo "迁移完成"
}
 
# 备份
function backup(){
    if [ -f "$BASE_PATH/$SERVER_NAME.jar" ]; then
        echo "$SERVER_NAME.jar 备份..."
            cp $BASE_PATH/$SERVER_NAME.jar $BASE_PATH/backup/$SERVER_NAME-$DATE.jar
        echo "备份 $SERVER_NAME.jar 完成"
    else
        echo "$BASE_PATH/$SERVER_NAME.jar不存在,跳过备份"
    fi
}
 
# 构建docker镜像
function build(){
    #清除旧容器
    if [ -n "$CID" ]; then
        echo "存在$SERVER_NAME容器,CID=$CID"
        echo "停止旧容器"
        docker stop $SERVER_NAME
        echo "删除旧容器"
        docker rm $SERVER_NAME
    fi

    # 清楚旧镜像
    if [ -n "$IID" ]; then
        echo "存在$SERVER_NAME镜像,IID=$IID"
        echo "删除镜像"
        docker rmi $IID
    fi

    #构建镜像
    echo "开始构建镜像"
    cd $BASE_PATH
    docker build -t $SERVER_NAME .
    echo "构建镜像成功!"


    # 运行docker容器
    echo "创建并启动$SERVER_NAME容器..."
    docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8085:8085 $SERVER_NAME
    echo "$SERVER_NAME容器启动完成"
}
 
# 运行docker容器
function run(){
    backup
    transfer
    build
}
 
#入口
run    

(6) 如果是部署到远程服务器(5可略过)
我自己将maven打包出来的jar包传输到远程服务器的/home/source下面并将/home/source下的.jar复制到/home/project中(jenkins.sh)中实现.
/home/project添加两个文件,一个jenkins.sh脚本,一个DockerFile文件,构建成功将文件传输到远程服务器,会执行jenkins.sh脚本

cd /home/project
sh jenkins.sh

5-7.png

5-8.png

5-9.png

下面贴出我的两个文件,仅供参考
DockerFile文件:

#基础镜像
FROM openjdk:8-jdk-alpine

#镜像制作人
MAINTAINER yjy

VOLUME /tmp

ADD ./mall.jar mall.jar

#暴露运行的端口号
EXPOSE 8085

#执行jar包
ENTRYPOINT ["java","-jar","mall.jar"]

jenkins.sh文件

#操作/项目路径(Dockerfile存放的路劲)
BASE_PATH=/home/project
# 源jar路径
SOURCE_PATH=/home/source
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=mall
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk '{print $3}')
 
DATE=`date +%Y%m%d%H%M`

function transfer(){
    echo "最新构建代码 $SOURCE_PATH/$SERVER_NAME/target/$SERVER_NAME.jar 迁移至 $BASE_PATH ...."
        cp $SOURCE_PATH/$SERVER_NAME-1.0-SNAPSHOT.jar $BASE_PATH/$SERVER_NAME.jar
        echo "迁移完成"
}
 
# 构建docker镜像
function build(){
    #清除旧容器
    if [ -n "$CID" ]; then
        echo "存在$SERVER_NAME容器,CID=$CID"
        echo "停止旧容器"
        docker stop $SERVER_NAME
        echo "删除旧容器"
        docker rm $SERVER_NAME
    fi

    # 清楚旧镜像
    if [ -n "$IID" ]; then
        echo "存在$SERVER_NAME镜像,IID=$IID"
        echo "删除镜像"
        docker rmi $IID
    fi

    #构建镜像
    echo "开始构建镜像"
    cd $BASE_PATH
    docker build -t $SERVER_NAME .
    echo "构建镜像成功!"


    # 运行docker容器
    echo "创建并启动$SERVER_NAME容器..."
    docker run --name $SERVER_NAME -v $BASE_PATH:$BASE_PATH -d -p 8085:8085 $SERVER_NAME
    echo "$SERVER_NAME容器启动完成"
}
 
# 运行docker容器
function run(){
    transfer
    build
}
 
#入口
run 

  1. 开始构建


    6-1.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容