jenkins+gitlab实现手动和自动同步

  • Post author:
  • Post category:其他




jenkins介绍:


CI&CD:


持续集成注重将各个开发者的工作集合到一个代码仓库中,通常每天会进行几次, 主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。

持续交付的目的是最小化部署或发布过程中团队固有的摩擦, 它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下)。

持续部署是一种更高程度的自动化,无论何时代码有较大改动, 都会自动进行构建/部署。


Jenkins:


Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。



jenkins安装:

准备:

gitlab:192.168.42.143

jenkins:192.168.42.168

nginx:192.168.42.172



jenkins和gitlab手动同步

  1. 官方文档:
https://www.jenkins.io/zh/doc/
  1. 下载jenkiins:
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.222-1.1.noarch.rpm

  1. 安装jenkins
复制jenkins包到虚拟机/usr/src下
cd /root
yum -y install jenkins-2.222-1.1.noarch.rpm
  1. 如果是最小安装则需要安装java
 yum -y install java
  1. 安装完成后,需要修改端口号,因为jenkins和gitlab在一起使用
 vim /etc/sysconfig/jenkins
 	JENKINS_USER="root"    (用户修改为root)
	JENKINS_PORT="8081"     (端口修改为8081)
  1. 开启jenkins服务
 systemctl start jenkins 
  1. 登录到jenkins

    http://192.168.42.168:8081
  2. 在/var/lib/jenkins/secrets/initialAdminPassword下查找密码
cat /var/lib/jenkins/secrets/initialAdminPassword
2a96cbceac684a359cff081143ceabcf
  1. 解决jenkins缓慢的方法:
vim /var/lib/jenkins/updates/default.json
修改第一行:www.google.com 改为 www.baidu.com
  1. 修改完成后,重启jenkins
systemctl restart jenkins
  1. 出现**

    安装推荐插件

    **==和 **

    选择插件来安装

    ,**为了效率,选中


    选择插件来安装


    ,进到下一个界面,直接右上角的x。
  2. 复制插件包到虚拟机
 tar -zxf jenkins-plugins.tar.gz  -C .   (将jenkins差价解压到当前目录)
 cp -rp plugins/*  /var/lib/jenkins/plugins/     (将解压出来的文件复制到plugins下)
  1. 为了方便,修改jenkins的密码:

    右上角–admin点击下拉三角–Configure–Password字段–修改密码为123–save保存

    在这里插入图片描述

  2. 重启服务:

systemctl restart jenkins
  1. 为jenkins新建一个项目

    点击左上角logo–回到主页面–选择新项目“New Item”–填写项目名–选择项目类型“Freestyle project”–save保存

    在这里插入图片描述
  2. 这时就需要另一个软件gitlab,用来上传文件,jenkins再来同步

    (1.)安装git服务

    官方网站:https://about.gitlab.com

    安装前提软件
yum install curl policycoreutils openssh-server openssh-clients postfix -y

下载清华gitlab安装包

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

复制rpm包到/usr/src,yum安装

yum -y install gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

(2). 修改gitlab的配置文件:

vim /etc/gitlab/gitlab.rb
修改:
external_url 'http://192.168.42.143'              :修改为本机地址
保存退出

(3.)启动gitlab服务

gitlab-ctl reconfigure

(4.)可以用这条命令来查看状态

gitlab-ctl status

(5).gitlab服务管理命令(开启/关闭/重启)

gitlab-ctl start/stop/restart

(6.)登录gitlab

http://192.168.43.143

管理员:root

密码:初始配置新密码,最少8位

(7.)创建项目web

  • 点击上栏的扳手
  • 创建group:dev 登录gitlab–admin area–new group–填写组名:dev–往下拉create group

在这里插入图片描述

  • 创建用户 登录gitlab–admin area–new user–添加用户名、邮箱–create–点击右上角的edit–填写密码–往下拉save create完成

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  • 创建项目 登录gitlab–adminarea–new project–注意选择组:dev–create group

    在这里插入图片描述

(8.)创建ssh公钥

ssh-keygen -t rsa

(9.)查看本机和的公钥

cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjCzDpvLehHir7TfNDGLl3URhKFzq+VLDJgDs53W6boquWC25I2vaJdDw/xQl8GvcJE3gnnT9bD127XiN+I6tPqeo8Zwtyj3Pj1wuhXt6hjZBgIr/XECWuSPUvgTuY1LZchcCEmpZJSchpQNzHLAjHx8eGVzzxaXIVnRZB0YY0JgWhYbuaJzeuJ/yElkQIFcmCNPpSBuFHCk+GElyQfl66pZL3UwnOKtyxHR61EnDzZ/TLy9qmcZykJDc0tLaUzaK0gawYOUXfXKcYxN7pGQkt/8XKO2CZpDvofa0fx1CaQiGh7Ni9NzMfDItB6zzlAL+M9OWbVTvDDy7X1Z7RRQcf root@git

(10.)查看jenkins服务器的公钥

[root@jenkins ~]# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdP5p6UmKuXoME8Lk2BdzCtXDJ1cZ+6hdK/8y8EkvRaSM+4aTX612mJqF3Rzp89amZYy1Ru2UjYdorI7q47Gr+DlCpkGZ8SE6NNGsiMeM5Ol4Zzl+PwiHbccmVJtsHmNA76QKHEIK6ADUV5CFrPTkDxNQGPf7DL102W4pXYN/gX8KKQA5KpYwu0e6n6CZek7Q+YTwdM6PuTsNDQFuw8Rz1a8FUxrm6ldMBx1Hw7x8jZjjy4YunXhJOi0P3cZRc2jzqXAcRLPzvcuFlteAZ6RQAQw7D31ingq2q9Y2YEmrr7ZwJvko4t/azGMqtTmCMVvqEdv7uVY0nut3wp7CA5jfJ root@jenkins

(11.)复制gitlab和jenkins公钥,粘贴等到gitlab网站中

右上角–用户–settings–SSH Keys

(12.)在刚刚创建的项目web中,创建一个文件a.txt

在这里插入图片描述

在这里插入图片描述

(13.)在gitfulab服务器上下载刚刚创建的文件

git clone  git@192.168.42.143:dev/web.git

(14.)验证,查看是否有当前目录下是否有web,有的话进去,就会发现里面有我刚刚创建的文件a.txt

root@gitlab src]# cd web/
[root@gitlab web]# ls
a.txt

(14.)gitlab这个软件不止可以下载也可以上传(注意,上传,需要在我刚刚下载下来的web目录里上传)

[root@gitlab web]# git config --global user.email "zhangsan@qq.com"
[root@gitlab web]# git config --global user.name "zhangsan"
[root@gitlab web]# echo 123456 > new.txt
[root@gitlab web]# git add .
[root@gitlab web]# git commit -m "add new.txt"
[root@gitlab web]# git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 269 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.43.143:dev/web.git
   a379b36..c00b94e  master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

验证:登录到gitlab网页中查看是否有new.txt

在这里插入图片描述

  1. 还有 一件事,把gitlab服务器上的ssh公钥发送给jenkins服务器
[root@gitlab ~]# ssh-copy-id root@192.168.42.168
  1. 把jenkins私钥发送给gitlab服务器.
[root@jenkins ~]# ssh-copy-id root@192.168.42.143
  1. 配置jenkins上的web项目

    点击项目web—-点击左上侧的configure—-点击上面的Source Code Management—–选择第二个git(git@192.168.43.143:dev/web.git)—-点击下一行的Add–Jenkins—Username:root—password:填写本机的登录密码—-Add—save
    在这里插入图片描述

    在这里插入图片描述

  2. 把gitlab里的文件下载到jenkins服务器上

    选择web—-左侧点击”build now”—下面就会出现一个下载值—点击下载完成的目标—点击左侧的console output(输出到jenkins服务器上)

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  3. 验证,在jenkins服务器上查看/var/lib/jenkins/workspace目录,会有项目同名文件夹,保存git clone 的所有代码

[root@jenkins ~]# cd /var/lib/jenkins/workspace/
[root@jenkins workspace]# ls
   web  web@tmp
[root@jenkins web]# ls
   a.txt  new.txt



jenkins和gitlab自动同步

  1. 在gitee码云上下载一个项目代码(最好是网页代码,要不然测试的效果不好)
[root@localhost ~]# cd /root
[root@localhost ~]# git clone https://gitee.com/kangjie1209/monitor.git

  1. 在gitlab服务器上创建本地代码库
[root@gitlab ~]# mkdir /web         (创建本地库)
[root@gitlab ~]# cd /web/           (进入到本地库)
[root@gitlab web]# git init          (初始化git库)  
初始化空的 Git 版本库于 /web/.git/
[root@gitlab web]# git remote add origin git@192.168.42.143:/dev/web.git   (连接到gitlab的项目web)
[root@gitlab web]# git clone git@192.168.42.143:/dev/web.git   (下载项目web中的文件)
[root@gitlab web]# cd web                  (查看)
[root@gitlab web]# ls             
   new.txt  a,txt
[root@gitlab web]# cp -rf /root/monitor/* .     (将刚刚在码云上下载的项目代码复制到/web/web目录下) 
[root@gitlab web]# ls                          (查看是否复制过来)
12.txt                   img
404.html                 index.html
alerts.html              js
assets                   keyInfo.html
a,txt                    labels.html
buttons.html             LICENSE
calendar.html            list-view.html
charts.html              login.html
components.html          media
content-widgets.html     media.html
css                      messages.html
deviceManager.html       mstp_105_SuperAdmin.iml
dianfei.html             mstp_map.html
efficiencyAnalysis.html  other-components.html
energy_consumption.html  profile-page.html
file-manager.html        QHME.iml
fonts                    readme.md
form-components.html     real-time.html
form-elements.html       sa.html
form-examples.html       tables.html
form-validation.html     typography.html
images-icons.html        userMng.html
[root@gitlab web]# git add .                        (将本地目录下的所有文件存到暂存区)
[root@gitlab web]# git commit -m "initial commit"   (将暂存区的我那件提交到gitlab的项目web中)
[root@gitlab web]# git push -u origin master
  1. 在gitlab的项目web中查看是否上传了

    在这里插入图片描述
  2. 前面已经在jenkins新建项目了,此处不介绍
  3. 在nginx服务器上安装一台nginx
[root@nginx ~]# yum -y install epel-release
[root@nginx ~]# yum -y install nginx
  1. 在jenkins服务器上写就一个上传nginx脚本
[root@jenkins ~]# mkdir /scripts
[root@jenkins ~]# cd /scripts/
[root@jenkins scripts]# vim web.sh
#!/bin/sh
CODE_DIR=/var/lib/jenkins/workspace/web/
WEB_DIR=/usr/share/nginx
IP=192.168.192.168.42.172
TIME=`date +%F-%H-%M-%S`
cd $CODE_DIR && tar zcf /tmp/web-${TIME}.tar.gz  ./*
scp /tmp/web-${TIME}.tar.gz $IP:$WEB_DIR
ssh root@$IP "cd $WEB_DIR && mkdir web-$TIME"
ssh root@$IP "cd $WEB_DIR && tar xf web-${TIME}.tar.gz -C web-$TIME && rm -rf web-${TIME}.tar.gz"
ssh root@$IP "cd $WEB_DIR && rm -rf html && ln -s web-$TIME html"
  1. 将jenkins公钥传输到nginx
[root@jenkins scripts]# ssh-copy-id root@192.168.42.172
  1. 执行脚本
sh /scripts/web.sh
  1. 在jenkins网页上关联脚本,自动上传

    项目web – configure – build – Execute shell – sh /scripts/web.sh

    在这里插入图片描述
  2. jenkins关联gitlab,实现自动构建上传代码

    web项目– configure – build triggers – 勾选Build when a change is pushed to GitLab. GitLab CI Service URL: http://192.168.42.168:8081/project/web – 点击高级advanced– 选择Filter branches by name –在include填写master – 点击generate生成令牌(双击) – 复制令牌(df9555d065b03757d9a18f76eb513413)和触发器顶部url路径(http://192.168.42.168:8081/project/web)– save保存

    在这里插入图片描述

    在这里插入图片描述
  3. gitlab项目关联

    web项目 –点击左侧 settings – 点击左侧integrations – 把复制的令牌(df9555d065b03757d9a18f76eb513413)和url(http://192.168.42.168:8081/project/web)粘贴过来 – 点击最下面的add webhook

    在这里插入图片描述

    在这里插入图片描述
  4. 更新push代码,测试自动构建上传

    在gitlab上,修改代码或添加新的文件
   [root@gitlab web]# vim index.html
          <title>移动能效管理平台11111</title>     (修改这一行为移动能效管理平台11111)
   [root@gitlab web]#git add .
   [root@gitlab web]# git commit  -m "modify index.html"      
   [root@gitlab web]#git push -u origin master    

13.nginx网页测试

http://192.168.42.172

在这里插入图片描述



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