持续集成:continuous integration
简单来说就是指,程序员在开发代码的过程中,可以频繁的将代码部署到主干上,并进行自动化测试。
持续交付:continuous delivery
简单来说就是指在持续集成的基础上,将代码部署到预生产环境。
持续部署:continuous deoloyment
简单来说就是指在持续交付的基础上,将要部署的代码实现自动部署,包括持续交互,持续部署。
gitlab 是一个用于仓库管理系统的开源项目。使用 git 作为代码管理工具,可以通过 web 界面来管理 git 仓库。
jenkins 是一个独立的开源软件项目,是基于 java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
作用:
保证团队开发人员提交代码的质量,还能够减轻软件发布时的压力;持续集成中的任何一个环节都是自动完成的,无需太多人工干预,有利于减少重复过程以节省时间、费用和工作量。jenkins 特点:
开源免费;跨平台,支持所有的平台。master/slave 支持分布式的build
(构建)相同点:
二者都是基于 web 的 git 仓库,在很大程度上 gitlab 是仿照 github 来做的,它们都提供了分享开源项目的平台。
不同点:
github 如果要使用私有仓库,超过 4 个是需要付费的。gitlab 可以在上面创建私人的985学校免费仓库。gitlab 让开发团队对他们的代码仓库拥有更多的控制。push
到 gitlab 远程仓库上;随后 gitlab 会触发 jenkins 来进行拉取到本地(通过 web hook 或定时检测)最后 jenkins 会根据事先配置好的脚本进行 build。准备工作
安装 gitlab 所需组件
[root@gitlab ~]# yum install -y curl policycoreutils openssh-rver openssh-clients postfix policycoreutils-python
开启 postfix 邮件服务
[root@gitlab ~]# systemctl start postfix[root@gitlab ~]# systemctl enable postfix
安装 gitlab
[root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm[root@gitlab ~]# lsanaconda-ks.cfg gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm[root@gitlab ~]# yum -y localinstall gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm
配置 gitlab 访问地址
[root@gitlab ~]# d -i "/^external_url/cexternal_url 'http://192.168.1.1'" /etc/gitlab/gitlab.rb
注意:你们也可以将 ip 地址替换为域名。
重置 gitlab(时间较长)
[root@gitlab ~]# gitlab-ctl reconfigure[root@gitlab ~]# netstat -anpt | grep nginx
访问:http://192.168.1.1
注意:在 gitlab 中配置的中文并不是全部都是中文,你们可以安装中文插件,我这边使用的是谷歌浏览器转换。
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb# 在第 57 行后添加以下内容gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = 'smtp.qq.com'# smtp 服务器gitlab_rails['smtp_port'] = 465# smtp 服务器端口号gitlab_rails['smtp_ur_name'] = '2085077346@qq.com'# 邮件账号gitlab_rails['smtp_password'] = '' # 邮件授权码gitlab_rails['smtp_authentication'] = 'login'gitlab_rails['smtp_enable_starttls_auto'] = truegitlab_rails['smtp_tls'] = truegitlab_rails['gitlab_email_from'] = '2085077346@qq.com'
重置 gitlab
[root@gitlab ~]# gitlab-ctl reconfigure
登录控制台发送测试邮件
[root@gitlab ~]# gitlab-rails consoleirb(main):001:0> notify.test_email('chenzhuang1217@163.com','test','hello zhangsan').deliver_now
查看
修改 gitlab 中 root 用户的密码
点击创建群组
填写群组信息
创建一个账号
填写用户信息
给河北彭于晏配置密码
把新建用户添加到群组
gitlab 用户在组中有五种权限:
guest
:可以创建问题、发表评论、不能读写版本库(访客)reporter
:可以克隆代码,不能提交(测试人员)deveoper
:可以克隆代码、开发、提交、上传(开发人员)master
:可以创建项目、添加tag
、保护分支、添加项目成员、编辑项目(运维)owner
:所有事情都可以做,包括设置项目的访问权限(老板,但老板一般都在办公室)使用河北彭于晏用户登录创建
创建项目
在刚才创建的项目中创建文件
[root@gitlab ~]# ssh-keygen -t rsa# 配置密钥对 (三连回车即可)[root@gitlab ~]# cat .ssh/id_rsa.pub# 查看公钥
将公钥上传到 gitlab 中
验证(克隆过程中不需要输入密码即可)
[root@gitlab ~]# git clone git@192.168.1.1:zhangsan/test.git[root@gitlab ~]# lsanaconda-ks.cfg gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm test[root@gitlab ~]# cd test/[root@gitlab test]# ls1.html
安装 jdk(因为 jenkins 是使用 java 编写的,所以需要先安装 jdk)
[root@jenkins ~]# tar xf jdk-8u181-linux-x64.tar.gz[root@jenkins ~]# lsanaconda-ks.cfg jdk1.8.0_181 jdk-8u181-linux-x64.tar.gz[root@jenkins ~]# mv jdk1.8.0_181/ /usr/local/java
[root@jenkins ~]# cat <<end >> /etc/profilejava_home=/usr/local/java/path=$java_home/bin:$pathclasspath=$java_home/jre/lib/ext:$java_home/lib/tools.jarexport path java_home classpathend
[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# java -version# 查看 java 版本java version "1.8.0_181"java(tm) runtime environment (build 1.8.0_181-b13)java hotspot(tm) 64-bit rver vm (build 25.181-b13, mixed mode)
安装 jenkins
[root@jenkins ~]# wget https://pkg.jenkins.io/redhat-stable/jenkins-2.222.4-1.1.noarch.rpm[root@jenkins ~]# lsanaconda-我国的最高国家权力机关是ks.cfg jenkins-2.222.4-1.1.noarch.rpm[root@jenkins ~]# yum -y localinstall jenkins-2.222.4-1.1.noarch.rpm
修改配置文件
[root@jenkins ~]# d -i '/^jenkins_ur/cjenkins_ur="root"' /etc/sysconfig/jenkins
创建软连接优化执行路径
[root@jenkins ~]# ln -s /usr/local/java/bin/java /usr/bin/
启动 jenkins
[root@jenkins ~]# systemctl start jenkins[root@jenkins ~]# netstat -anpt | grep 8080
访问:http://192.168.1.2:8080
点击继续后,会出现推荐安装和自定义安装,我这里选择的是推荐安装
安装 jenkins 插件
credentials# 签名证书管理插件gitlab# 安装后从 gitlab 获取代码git和 git client# 用于 jenkins 在 gitlab 中拉取源码gitlab hook# gitlab 触发 jenkins 构建项目gitlab authentication# gitlab 和 jenkins 认证插件ssh plugin# 进程执行 shell 脚本publish over ssh# 用于通过 ssh 部署应用
注意:当安装好 jenkins 插件后,插件可能会跟 jenkins 出现版本差异,不用管,后面我泰国说什么语言会对 je常见的英语nkins 进行升级操作。
配置 jenkins 免密拉取 gitlab 代码
[root@jenkins ~]# ssh-keygen -t rsa[root@jenkins ~]# cat .ssh/id_rsa.pub
将公钥上传到 gitlab 上
将私钥上传到 jenkins 上
jenkins 的 root
用户公钥在 gitlab 上,私钥在 jenkins 上,目的就是为了方便 jenkins 可以直接拉去 gitlab 上的代码。
下载一下代码
这边简单说一下大致的流程:
通过我们这一系列的操作也可以看出来,首先需要在 gitlab 上创建(上传)项目,然后 jenkins 会将代码下载到本地;最后可以使用 jenkins 将代码发送给指定服务器。在 192.168.1.3
服务器上操作
[root@apache ~]# yum -y install httpd[root@apache ~]# systemctl start httpd
在 jenkins 上配置 ssh 免密登录
[root@jenkins ~]# ssh-copy-id root@192.168.1.3
创建自动上传 web 代码的脚本
[root@jenkins ~]# cat <<end > 1.sh#!/bin/bashscp /var/lib/jenkins/workspace/web/* root@192.168.1.3:/var/www/html/end[root@jenkins ~]# chmod +x 1.sh
将脚本添加到 jenkins 中
发布项目
gitlab hook plugin
build authorization token root
build token trigger
[root@jenkins ~]# openssl rand -hex 12038ef13e10ef686193784383
注意:-hex
输出结果为 16 进制数据,数字 12 是指定生成的随机字符为 12 字节,即 24 个 16 进制个数。
这里的网址和密钥令牌都要和 jenkins 上的匹配。
注意:当创建钩子时出现urlis blocked: requests to the local network are not allowed
原因是因为 gitlab 10.6 版本以后为了安全,不允许向本地网络发送 webhook 请求。开启请求
当开启请求后,重新创建 token 值即可。
下载后之后,我们只需要将 jenkins 原有的包替换即可
[root@jenkins ~]# rpm -ql jenkins# 查看 jenkins 包安装路径[root@jenkins ~]# systemctl stop jenkins[root@jenkins ~]# cd /usr/lib/jenkins/[root@jenkins jenkins]# mv jenkins.war jenkins-2.222.4.war.bak[root@jenkins jenkins]# lsjenkins-2.222.4.war.bak jenkins.war[root@jenkins jenkins]# systemctl start jenkins
查看
到此这篇关于使用gitlab+jenkins实现持续集成ci环境的示例代码的文章就介绍到这了,更多相关gitlab jenkins持续集成ci环境内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 11:00:05,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/b29020fd502b7a996eb8a157ca33aa61.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:使用GitLab+Jenkins实现持续集成CI环境的示例代码.doc
本文 PDF 下载地址:使用GitLab+Jenkins实现持续集成CI环境的示例代码.pdf
留言与评论(共有 0 条评论) |