服务器搭建docker+jenkins

1.先装xshell,连接服务器

2.连接完服务器后,安装docker

命令:yum install docker

安装成功后,运行docker
命令:systemctl start docker
启动后,安装gitlab
命令:docker pull registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh

3.安装docker compose

命令:sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose

4.装Jenkins

命令:docker pull jenkins/jenkins

在home目录下创建一个jenkins_mount文件夹
/home/jenkins_mount(创建成功后的路径)
配置Jenkins
命令:docker run -d -p 10240:8080 -p 10241:50000 -v /home/jenkins_mount:/home/jenkins_home --name mYjenkins jenkins/jenkins

-v /home/jenkins_mount:/var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /home/jenkins目录

name jenkins 为容器起个名字

在这里插入图片描述
出现以下的情况,代表成功了

5.配置镜像加速

进入 cd /var/jenkins_mount/ 目录。

在这里插入图片描述
出现以下的内容,代表成功了
然后进到secrets
cd secrets
vi hudson.model.UpdateCenter.xml
修改url地址
按I进入编辑
将 url 修改为 清华大学官方镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

修改完后按ESC,然后:wq保存退出

6.解锁jenkins

进到cd /home/jenkins_home/secrets/initialAdmiPassword
目录,复制密钥。
打开jenkins地址
http://服务器地址:10240/
粘贴刚复制的jenkins密钥,创建用户名和密码
登录成功后,点击全局配置(manage credentials)

7.配置jenkins连git步骤

在这里插入图片描述
点击这里
新增一个,选择SHH
在这里插入图片描述

在这里插入图片描述

勾上后,点击ADD在这里插入图片描述
然后粘贴jenkins的密钥

8.jenkins生成密钥的过程

jenkins密钥生成过程
登录服务器,最好在home目录下输入命令
ssh-keygen -t rsa -C “80651222@qq.com”(邮箱随意填写)

生成后,进到目录cd /root/.ssh/
查看是否有id_rsa.pub文件
存在,输入命令
vi id_rsa.pub
然后复制密钥备用
最后保存
jenkins配置完毕

还需要把这个密钥粘贴到Git上,打开git登录后,点击用户名下方的setting,点击红色区域
在这里插入图片描述
把密钥复制粘贴下图红色区域
在这里插入图片描述
最后点击ADD key

保存成功

9.配置git自动推送

下载Gitlab Hook Plugin和Build Authorization Token Root Plugin插件

10.建立jenkins项目

建立一个自由风格的项目。
在这里插入图片描述
把git地址粘贴,credentials选择用户或者新增用户.

拉到构建触发器,打勾 build when a change (没有这个就是没有装到插件)
在这里插入图片描述

拉到下方,点击红色区域,生成token复制
在这里插入图片描述
打开git,点击项目,然后找到setting,webhooks,把复制的token粘贴保存
在这里插入图片描述
做到上面这一步后,Git有更新代码会推送到jenkins,进行自动构建。
未完。。。

11.手动部署
编辑jenkins的Demo项目
在general里选择参数化构建,红色部分要填写
在这里插入图片描述
在源码管理指定分支输入:${git} 这里git为上面字符参数的git 是指版本
在这里插入图片描述

#!/bin/bash
VERSION_ROOT=/www/devlop/version(服务器版本路径)
WWW_ROOT=/www/devlop/wwwroot(web服务器路径)
NODE_LIST="47.111.11.111"(服务器路径)
CTIME=$(date "+%Y-%m-%d")
USERNAME="root"
echo -e "发布的版本为:${git}"
echo -e "workspace目录为:${WORKSPACE}"
if [ -z "${git}" ];then
    echo -e "发布的版本号为空,请重新输入版本号后构建......"
    exit 1
else
    if [ ${status} == "Deploy" ];then
        for node in $NODE_LIST
        do
			cd ${WORKSPACE}
			tar zcvf ${git}.tar.gz ./application ./config ./route
			rsync -raz ${WORKSPACE}/${git}.tar.gz ${USERNAME}@$node:${VERSION_ROOT}/${git}/
			rm -rf ./${git}.tar.gz
			ssh ${USERNAME}@$node "tar zxvf ${VERSION_ROOT}/${git}/${git}.tar.gz -C ${WWW_ROOT}"
            #rsync -raz ${WORKSPACE}/ ${USERNAME}@$node:${VERSION_ROOT}/${git}/
            #ssh ${USERNAME}@$node "rm -rf ${WWW_ROOT}"
            #ssh ${USERNAME}@$node "ln -sv ${VERSION_ROOT}/${git} ${WWW_ROOT}"
            echo "发布成功......"
        done
    fi
    if [ ${status} == "Rollback" ];then
        echo "准备回退......" 
        for node in $NODE_LIST;do  
            #判断目标主机是否存在回滚的版本   
            ssh ${USERNAME}@$node "ls -ld ${VERSION_ROOT}/${git}/${git}.tar.gz"        
            res=$(echo $?)
            if [ $res == 0 ];then
                ssh ${USERNAME}@$node "tar zxvf ${VERSION_ROOT}/${git}/${git}.tar.gz -C ${WWW_ROOT}"
            else
                echo "回退版本:"${git}"不存在"                
                exit 2            
            fi       
        done
        echo "已成功回退到"${git}"版本......" 
    fi
fi

版权声明:本文为weixin_44242153原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。