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