一、jenkins介绍
jenkins和持续集成的关系
Jenkins 是实现持续集成(CI)最流行的自动化工具,它负责自动构建、测试和部署代码,确保团队能频繁且可靠地集成代码变更。
持续集成和敏捷开发的关系
敏捷开发是一种"快速迭代、灵活应对变化"的 开发方法,强调小步快跑、持续交付。
持续集成是一种"自动合并代码、立即测试"的 技术手段,确保代码随时能正常工作。
它们的关系就像:
敏捷是"怎么干活"(方法论),持续集成是"怎么保证干得好"(工具支持)。
敏捷说:"我们要每周交付新功能!" 持续集成说:"放心,每次改代码我都自动检查,不会翻车。"
没有持续集成的敏捷 → 容易代码混乱,迭代越快bug越多。
没有敏捷的持续集成 → 能保证质量,但可能跟不上快速变化的需求。
最佳搭档:敏捷靠持续集成实现"又快又稳",持续集成靠敏捷发挥最大价值。
流程整合
持续集成、持续交付
CI(持续集成) = 频繁集成代码 + 自动化测试(确保代码质量)
CD (继续交付)= 自动化发布(持续交付:手动点发布;持续部署:全自动发布)
Devops和CICD(持续集成、持续交付的)关系
DevOps 是一种软件开发和运维(IT运营)的文化、实践与工具的结合体,旨在通过自动化、协作和持续改进,缩短软件开发周期,提高交付效率和质量。
CI/CD 是 DevOps 的核心技术实践,是实现 DevOps 目标(快速交付、高质量)的关键工具链。
DevOps 是更广泛的文化和方法论,包含 CI/CD 但不仅限于此。
二、jenkins准备
getlab、gethub区别
用 GitHub:想玩开源、蹭社区、轻量协作(我个人理解:就是一个社区仓库,可以把想公开的项目放上去,且基础的版的github不支持自托管)。
用 GitLab:要免费私有库、自托管、或全套 DevOps(我个人理解:公司一般用这个管理项目,因为他支持部署在公司内部,私有化部署,保证代码安全)。
对比项 | GitHub | GitLab |
---|---|---|
私有仓库 | 免费但协作人数受限 | 完全免费,不限协作人数 |
CI/CD | 需配置 GitHub Actions | 内置强大 CI/CD(开箱即用) |
自托管 | 付费(Enterprise Server) | 免费(社区版 CE) |
企业级功能 | 依赖插件 | 原生支持(安全扫描、K8s 集成) |
适用场景 | 开源/小团队 | 企业私有项目/完整 DevOps 流程 |
jenkins持续集成流程图
环境准备
名称 | ip地址 | 需要安装的软件 |
代理托管服务器 | 192.168.157.148 | gitlab-12.4.2 |
持续集成服务器 | 192.168.157.159 | Jenkins-2.190.3, JDK1.8, Maven3.6.2, Git, SonarQube |
应用测试服务器 | 192.168.157.150 | jdk1.8,tomcat8.5 |
三、gitlab
gitlab安装
gitlab用来托管代码服务。
一、安装相关依赖和基本配置
yum -y install policycoreutils openssh-server openssh-clients postfix
二、启动ssh服务&设置为开机启动(很多机器都设置了)
systemctl enable sshd && sudo systemctl start sshd
查看是否设置成功或查看是否已设置
systemctl status sshd
三、设置postfix开机自启,并启动,postfix支持gitlab发信功能(启动这个时,主机名不要是ip,必须有主机名)
systemctl enable postfix && systemctl start postfix
查看是否启动
systemctl status postfix
四、如果开启了防火墙,开放ssh以及http服务,然后重新加载防火墙列表(没开启防火墙救不用设置)
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
下载和安装(二进制方式安装)
五、下载git包,二进制方式传达/home/jenkins文件夹
二进制传到/home/jenkins目录
ll /home/jenkins
gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
安装
rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rp
[root@k8s-master jenkins]# rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
警告:gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID f27eab47: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:gitlab-ce-12.4.2-ce.0.el6 ################################# [100%]
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
#上面提示让我们修改/etc/gitlab/gitlab.rb,可以修改访问端口
vi /etc/gitlab/gitlab.rb
external_url 'http://gitlab.example.com' ---> external_url 'http://192.168.157.148:82'
#nginx['listen_port'] = nil ---> nginx['listen_port'] = 82
#分别是修改了访问ip和端口,启动gitlab是用nginx启动的,所以nginx的端口也修改为82
六、重载加载配置及启动gitlab
gitlab-ctl reconfigure #这个过程会很慢
gitlab-ctl restart
如果有防火墙,需要放开82端口
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload
浏览器访问:http://192.168.157.148:82
第一次登录需要设置新密码,账号是root。登录成功如下:
设置中文
gitlab新增组、用户和项目
创建组,并保存
创建用户
设置如下,其他参数可用默认值
保存后,在这里设置用户密码
组添加用户成员
新增用户并且分配权限:
Guest:可以创建issue、发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限
Developrr:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限
Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限
Owner:可以设置项目访问权限-VisibilityLevel、删除项目、迁移项目、管理组成员,开发组组长可以赋予这
个权限
该用户就可以登录了,第一次登录也是要重置密码。