持续集成和发布工具(CI/CD)

需要用到的工具:git & gitlab & jenkins

gitlab的安装和部署:

一、gitlab部署
1.gitlab安装:
首先配置yum源:

vim /etc/yum.repos.d/gitlab.repo

[gitlab]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever
enabled=1
gpgcheck=0

配置好yum源后,yum repolist后直接安装

yum list |grep gitlab       //查看有没有gitlab包
yum install -y  gitlab-ce  //直接安装
gitlab-ctl reconfigure     //gitlab初始化
gitlab-ctl status  //查看gitlab状态

修改gitlab的配置文件:

gitlab-ctl stop  //修改配置文件之前停止gitlab
vim /etc/gitlab/gitlab.rb    
external_url 'http://192.168.48.132'      //修改为本机url
gitlab-ctl reconfigure   //改完后重新配置
gitlab-ctl start   //启动gitlab

然后浏览器直接输入ip进行访问:
修改密码
输入两次修改你的密码之后,用root直接登录即可,登录成功即可看到以下界面:
登陆成功
然后选择create a project,看下图添加即可
命名项目
完成后点击Create project,至此,我们的一个项目就添加完成了。
然后就会出现下图的界面:
创建成功
接着我们来添加邮箱和上传公钥:

添加邮箱
添加邮箱
添加后需要到自己的邮箱里认证,认证成功后下面会出现已认证图标!
下面我们来进行公钥上传:

ssh-keygen -t rsa -f /root/.ssh/id_rsa  -C "smartdevops@126.com" -N ''  //在客户端生成一个密钥对,此处为了免密登录到github
cat /root/.ssh/id_rsa.pub   //将屏幕上输出的公钥拷贝到github上,点击setting,SSH and GPG keys,然后New SSH key

添加自己生成的公钥
然后就可以在开发端克隆这个仓库到本地了
在这里插入图片描述

[root@localhost ~]# git config --global user.name "smartdevops"
[root@localhost ~]# git config --global user.email "smartdevops@126.com"
[root@localhost ~]# git clone git@IP:root/myfirstproject.git
[root@localhost ~]#cd myfirstproject
[root@localhost myfirstproject]# touch README.md
[root@localhost myfirstproject]# vim README.md 
[root@localhost myfirstproject]# git add README.md
[root@localhost myfirstproject]# git commit -m "add README"
[root@localhost myfirstproject]# git push -u origin master

然后在Gitlab服务器Web前端进行验证:
gitlab前端
在开发端计算机上传项目代码(Linux)

[root@localhost myfirstproject]# vim hello.py 
[root@localhost myfirstproject]# git add hello.py
[root@localhost myfirstproject]# git commit -m "add hello.py"
[root@localhost myfirstproject]# git push -u origin master

至此,就已经成功提交到gitlab服务器上了

Jenkins的安装和部署:

1、Jenkins部署:

1.1 Jenkins安装包获取:

wget -O/etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo  //获取jenkins源
ls /etc/yum.repos.d/
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key   

1.2 Jenkins部署:

yum install -y jenkins
rpm -ql jenkins

/etc/sysconfig/jenkins //默认使用的是TCP 8080端口,如有冲突可以在此文件中修改端口。

systemctl start jenkins    //启动jenkins
systemctl status jenkins   //查看jenkins状态

输入自己的IP访问jenkins的8080端口
解锁jenkins

less /var/lib/jenkins/secrets/initialAdminPassword   //复制粘贴到管理员密码处即可

自定义插件
新手入门
1.3 使用admin管理员登录:
创建用户
1.4实例配置:
实例配置
然后就可以使用了
开始使用
2.Jenkins与gitlab进行集成:
2.1 Jenkins服务器生成SSH密钥对:

ssh-keygen -t rsa -C "smartdevops@126.com   //把生成的公钥拷贝出来

2.2 添加Jenkins服务器公钥到Gitlab Web前端:
生成密钥对
2.3 Gitlab服务器添加项目:
添加项目
创建项目
复制SSH
2.4 Jenkins服务创建任务:创建一个自由风格的软件项目
创建任务
把我们上面拷贝gitlab的ssh代码仓库扔过来
源码管理
管理
凭证
注意:下面填的是jenkins服务器端生成的私钥
私钥
私钥
注意:从gitlab代码仓库拷贝的时候要http协议地址,然后再切回ssh
gitlab版本
构建测试
测试成功
至此,Jenkins就可以从gitlab上获取到代码了。但是还无法自动发布。并且/var/lib/jenkins/workspace 目录生成。
2.5 系统设置:(需要安装插件)
安装插件
安装插件

2.6 我们接下来接着打开上面的项目构建触发器:下面http的地址拷贝并保存到一个地方,一会gitlab中需要用到
构建触发器
点击高级,生成一个token,并保存下来,一会gitlab中需要用到
高级
生成token
2.7 接着写构建的shell:
执行shell

#!/bin/bash
SOURCE_DIR=/var/lib/jenkins/workspace/${JOB_NAME}/
DEST_DIR=/usr/share/nginx/html    
REMOTE_IP=192.168.48.133       //推到需要发布代码的服务器中 ,这里需要用到免密登录
/usr/bin/rsync -avpgolr --delete-before $SOURCE_DIR root@$REMOTE_IP:$DEST_DIR

执行shell
在jenkins服务器中生成的公钥拷贝到web服务器中:

ssh-copy-id root@192.168.48.133   //把公钥推到web代码发布端

2.8 jenkins系统管理-安全配置中,允许所有用户有可读可写权限:
匿名用户权限授予
最后一步直接点保存即可!

2.8 在Gitlab服务器配置Web Hook:
配置之前需要设置允许钩子和服务访问本地网络:
允许钩子访问本地网络
配置钩子:如果钩子不配置也可以手动在Jenkins端点击立即构建进行代码发布
配置钩子
增加钩子
点击测试,提示确保你的项目已经提交,我们来git clone 到开发端,然后add、commit、push再次测试

万事大吉了?还没,接下来我们需要做两件事:
第一:在jenkins服务器端切换到jenkins用户推送公钥到

[root@localhost ~]#su - jenkins
[root@localhost ~]#ssh-keygen
[root@localhost ~]#ssh-copy-id root@需要发布代码的服务器   //必须是jenkins用户生成的公钥

第二:修改/etc/passwd里的jenkins用户的默认bash改成/bin/bash

usermod -s /bin/bash jenkins

至此,可以在开发端push代码了,jenkins直接就勾到并实现自动发布了!!!

如有错误之处欢迎指出,谢谢大家。

  • 10
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值