Gitlab+Jenkins+Docker+项目、实现一套完整的自动化上线服务

    科技2022-08-06  129

    目录

             环境

             安装Gitlab

             安装Jenkins

             Jenkins和Gitlab的结合

             开始整合Jenkins

             Docker部署LNMP

             Jenkins配置通过ssh发送文件到LNMP主机

             推送项目到Gitlab

             执行Jenkins构建任务实现自动发布

             访问项目web端

             总结

     

    环境

    Gitlab节点:192.168.253.110             Jenkins节点:192.168.253.130

    测试环境我就用两台服务器了,项目我放在jenkins这台服务器上。系统版本是centos 7.5的。

    安装Gitlab

    嗨!Gitlab的安装往这看 ~~> Docker搭建公司内部私有云平台 -- Gitlab

    [root@gitlab ~]# docker run -it -d --name gitbab -p 80:80 docker.io/gitlab/gitlab-ce 674e5e8a3e35cb2ec95c385e7130082e1fef0d55494b953b7bd88d039473683c

    安装Jenkins

    当然安装Jenkins的教程这里也有 ~~> Jenkins的安装及中文展示 ,不过这里我想自己动手再操作一遍。

    1)下载java环境,上传jenkins包

    [root@jenkins ~]# yum -y install java-1.8.0 lrzsz java环境 [root@jenkins ~]# ls jenkins-2.222.4-1.1.noarch.rpm 我用的是这个版本

    2)安装并启动jenkins

    [root@jenkins ~]# rpm -ivh jenkins-2.222.4-1.1.noarch.rpm 警告:jenkins-2.222.4-1.1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID d50582e6: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:jenkins-2.222.4-1.1 ################################# [100%] [root@jenkins ~]# systemctl start jenkins [root@jenkins ~]# setenforce 0 [root@jenkins ~]# systemctl stop firewalld

    3)浏览器http:ip + 8080 进行访问

    [root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword 252fd6734a17467684cce9591eba7229

    4)配置下载插件加速(默认的插件下载源在国外,下载特别慢)

    [root@jenkins ~]# vim /var/lib/jenkins/hudson.model.UpdateCenter.xml <?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url> #改为国内的网站 </site> </sites> [root@jenkins ~]# cd /var/lib/jenkins/updates/ [root@jenkins updates]# sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json [root@jenkins updates]# sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json [root@jenkins ~]# systemctl restart jenkins

    5)下载中文插件

    重启即可!!

    Jenkins和Gitlab的结合

    1)我们在Gitlab上创建一个项目用来存放我们的代码

    2)我们克隆项目仓库到本地,测试是否可以克隆。

    在windows上创建一个空目录,用来存放项目仓库 解释一下:

    这里我的git是windows版本的 ~~> 这是windows版的包 , Linux版的git ~~> 在这里

     我在桌面新建的目录,用来放项目

    注:首次克隆会提示输入gitlab的登录的账号和密码

    3)查看是否成功

    4)在项目中上传一行代码做测试(我新建了一个txt文件)

    5)做本地提交,把代码提交到gitlab中wordpress项目中

    6)在wordpress的这个项目中看是否成功

    开始整合Jenkins

    1)在jenkins节点安装git插件和git环境

    [root@jenkins ~]# yum -y install git

          1.1)web端安装git插件

    2)在Jenkins创建任务

    配置gitlab的项目仓库的URL地址和登录gitlab的账号密码,填写完毕后保存

    3)开始构建任务

      3.1)点击这次构建任务,查看控制台输出

    !!此时的Jenkins和Gitlab就结合成功了

    Docker部署LNMP

    解释一下:这里我的项目是wordpress,需要用到Lnmp的环境。

    1)自己构建lnmp的docker镜像,这里有构建镜像的包 ~~> 点我点我

    [root@jenkins ~]# tar xzf lnmp.tar.gz [root@jenkins ~]# cd lnmp [root@jenkins lnmp]# docker build -t lnmp . [root@jenkins ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE lnmp latest 57e3c3e09aab 9 seconds ago 443 MB docker.io/centos latest 0d120b6ccaa8 7 weeks ago 215 MB

    2)启动一个lnmp的容器

    [root@jenkins ~]# docker run --name wordpress -itd -p 81:80 -v /opt/html/:/usr/local/nginx/html lnmp 1e62d99e01c2c20b4e529afffc01e11dea54e7e2d1a2f80333a3b1c99589390a [root@jenkins ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1e62d99e01c2 lnmp "/usr/bin/supervis..." 6 seconds ago Up 6 seconds 0.0.0.0:81->80/tcp wordpress

    Jenkins配置通过ssh发送文件到LNMP主机

    1)jenkins上需要安装Publish Over SSH插件,通过此插件jenkins可以把工作空间的文件发送到远程主机上

    2)配置插件,添加远程主机,将LAMP主机添加进来

    3)到首页,去配置任务

    !!  至此任务配置完毕!执行任务就会自动发送文件到远程主机了

    推送项目到Gitlab

    解释一下:这里我项目上的博客,当然也可以上其他的。

    1)在电脑上解压安装包,复制包内容粘贴到本地仓库

    2)对本地仓库进行提交,推送到Gitlab上

    3)查看gitlab是否推送成功

    执行Jenkins构建任务实现自动发布

    1)构建任务

    2)在控制台查看是否构建成功

    访问项目web端

    1)浏览器输入http:// + ip + 81

    总结

               费了一天的时间做了这个出来,感觉还不错,这里我用的项目是博客,伙伴们也可以用其他的项目,写作不易啊!!

    Processed: 0.010, SQL: 8