Gitlab+Jenkins+SonarQube 实现CICD(三),jenkins集成gitlab

jenkins集成gitlab

安装插件

安装后重新jenkins才会生效。

插件名称插件作用
Authentication Tokens API允许在Jenkins中存储认证的凭据
Git Client Plugin允许Jenkins使用Git
Git Plugin允许Jenkins集成Git
Gitlab Plugin允许Gitlab触发Jenkins构建并在Gitlab中显示
Gitlab Authentication plugin允许在Jenkins中存储认证的凭据
Authentication Tokens APIgitlab 身份验证插件

安装git客户端

jenkins所在的服务器需要安装git客户端,否则jenkins配置拉取代码报错。

  1. 安装git

    yum -y install git 	
    
  2. 查看版本

    git --version
    

创建一个freestyle项目

  1. 点击新建item,如图:
    在这里插入图片描述

  2. 填写项目信息
    填写项目名称,选择freestyle project,点击确定,如图:
    在这里插入图片描述

  3. 填写项目基本信息,并设置副本数
    在这里插入图片描述

  4. 设置git
    我使用的是ssh方式,也可以使用账号密码的方式,都行。
    在这里插入图片描述

  5. 在jenkins所在服务器上生成秘钥。

    ssh-keygen
    

    一路回车后,查看私钥,如图:

    cat ~/.ssh/id_rsa
    

在这里插入图片描述

  1. 将生成的秘钥填入
    在这里插入图片描述

    在这里插入图片描述

  2. 将公钥配置到gitlab的root账户下

     cat ~/.ssh/id_rsa.pub
    

    在这里插入图片描述
    使用root登录gitlab,将公钥填入
    在这里插入图片描述

  3. 选择配置好的秘钥,点击应用。
    在这里插入图片描述

  4. 点击构建,构建完成后点击工作空间,如果代码存在则配置成功!

在这里插入图片描述
在这里插入图片描述

点击工作空间之后右侧出现gitlab的代码,证明拉取成功!

部署html项目

我这里先部署一个html项目作为jenkins入门,熟悉jenkins的工作过程,后续再部署springboot项目和前端vue项目,我的ywxd-portal项目中只有一个html页面和一张图片。

  1. 进入项目配置中,将要触发的脚本放入构建步骤中。

    sh -x /home/jenkins_script/ywxd-portal.sh
    

    在这里插入图片描述

  2. 编写脚本
    我的jenkins脚本都放在/home/jenkins_script 目录下,我的脚本名为:ywxd-portal.sh

#!/usr/bin/bash
DATE=$(date +%Y-%m-%d-%H-%S)
web_server="10.0.10.11"
jenkins_tmp=/home/jenkins_tmp
target_base=/home/java-project/ywxd-portal
# 1.进入项目目录,将项目内容进行打包
get_code(){
    cd ${WORKSPACE} && \
    tar czf ${jenkins_tmp}/ywxd-portal-${DATE}.tar.gz ./*
}
# 2.将内容通过scp拷贝至web集群组
scp_web_server(){
    for hosts in ${web_server}
    do
	scp ${jenkins_tmp}/ywxd-portal-${DATE}.tar.gz root@${hosts}:${target_base}/tmp
	ssh root@${hosts} "mkdir -p ${target_base}/code/web-${DATE} && \
			tar xf ${target_base}/tmp/ywxd-portal-${DATE}.tar.gz -C ${target_base}/code/web-${DATE}
			rm -rf ${target_base}/web && \
			ln -s ${target_base}/code/web-${DATE} ${target_base}/web"
    done
}
deploy(){
    get_code
    scp_web_server
}
deploy
  1. 脚本中的文件夹我会事先创建好

    mkdir -r /home/jenkins_tmp
    

    目标服务器中

    mkdir  -r /home/java-project/ywxd-portal/tmp
    
  2. 构建项目
    根据脚本执行,会将html代码拷贝到我的11服务器上,然后通过nginx映射,在浏览器就可以访问了,后续再修改直接构建就可完成部署。

回滚

  1. 安装插件Git Parameter

  2. 配置参数化构建,安装图中设置
    在这里插入图片描述

  3. 添加选项参数,部署或者回滚
    在这里插入图片描述

  4. 指定拉取的tag为选择的版本,点击应用

    在这里插入图片描述

  5. 修改脚本

#!/usr/bin/bash
DATE=$(date +%Y-%m-%d-%H-%S)
web_server="10.0.10.11"
jenkins_tmp=/home/jenkins_tmp
target_base=/home/java-project/ywxd-portal
NAME=${DATE}-${git_version}
# 1.进入项目目录,将项目内容进行打包
get_code(){
    cd ${WORKSPACE} && \
    tar czf ${jenkins_tmp}/ywxd-portal-${NAME}.tar.gz ./*
}
# 2.将内容通过scp拷贝至web集群组
scp_web_server(){
    for hosts in ${web_server}
    do
        scp ${jenkins_tmp}/ywxd-portal-${NAME}.tar.gz root@${hosts}:${target_base}/tmp
        ssh root@${hosts} "mkdir -p ${target_base}/code/web-${NAME} && \
                        tar xf ${target_base}/tmp/ywxd-portal-${NAME}.tar.gz -C ${target_base}/code/web-${NAME}
                        rm -rf ${target_base}/web && \
                        ln -s ${target_base}/code/web-${NAME} ${target_base}/web"
    done
}
deploy(){
    get_code
    scp_web_server
}
rollback(){
    for hosts in ${web_server}
    do
        back_file=$(ssh root@${hosts} "find ${target_base}/code/ -maxdepth 1 -type d -name "web-\*-${git_version}"")
        ssh root@${hosts} "rm -rf ${target_base}/web && \
                        ln -s ${back_file} ${target_base}/web"
    done
}

if [ $deploy_env == "deploy" ];then
        if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
            echo "你已经部署过该${git_version}版本"
            exit 1
        else
            deploy
        fi
elif [ $deploy_env == "rollback" ];then
        rollback
fi
  1. 验证
    点击构建,如果构过的,会报错,提示部署过改版本,点击回滚,则会将软连接链接到上一版本的code上。这样简单的html项目就完成了自动化部署
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值