持续集成和发布工具(CI/CD)
gitlab部署:一、gitlab部署1.gitlab安装:首先配置yum源:vim /etc/yum.repos.d/gitlab.repo[gitlab]name=gitlab-cebaseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releaseverenabled=1gpgcheck=0配置好yu...
需要用到的工具: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前端进行验证:
在开发端计算机上传项目代码(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端口
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服务器添加项目:
2.4 Jenkins服务创建任务:创建一个自由风格的软件项目
把我们上面拷贝gitlab的ssh代码仓库扔过来
注意:下面填的是jenkins服务器端生成的私钥
注意:从gitlab代码仓库拷贝的时候要http协议地址,然后再切回ssh
至此,Jenkins就可以从gitlab上获取到代码了。但是还无法自动发布。并且/var/lib/jenkins/workspace 目录生成。
2.5 系统设置:(需要安装插件)
2.6 我们接下来接着打开上面的项目构建触发器:下面http的地址拷贝并保存到一个地方,一会gitlab中需要用到
点击高级,生成一个token,并保存下来,一会gitlab中需要用到
2.7 接着写构建的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
在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直接就勾到并实现自动发布了!!!
如有错误之处欢迎指出,谢谢大家。
更多推荐
所有评论(0)