> 文章列表 > GitLab与jekins结合构建持续集成(cl)环境(1)

GitLab与jekins结合构建持续集成(cl)环境(1)

GitLab与jekins结合构建持续集成(cl)环境(1)

目录

持续集成概述:

流程:

什么是CI,什么是CD

jenkins概述:

jenkins特点:

gitlab概述:

gitlab特点:

github和GitHub的区别:

相同点:

不同点:

Git的相关概念:

搭建gitlab


持续集成概述:

持续集成(Continuous Integration,简称CI)是一种将开发团队的代码频繁地自动合并、构建和测试的实践。其目的在于快速发现和修复代码问题,确保开发团队对软件产品持续交付。

流程:

  1. 代码管理。开发人员使用版本控制系统(如Git)管理主干代码库和分支代码库。
  2. 触发构建。当代码库中有新的变更提交时,持续集成服务器会自动触发构建过程。这个过程可以由代码仓库的hook机制,在代码被commit/push到远端时调用。也可以通过定时方式来进行构建操作,以便于定期更新构建结果。
  3. 自动化构建。持续集成服务器会自动从代码库拉取最新代码,并执行构建脚本。构建脚本的具体内容包括代码编译、打包、部署等操作,具体的脚本内容是根据不同项目的需求而定。
  4. 代码静态分析。在构建过程中,持续集成服务器还会执行代码静态分析以检查潜在的代码错误、安全漏洞等问题。
  5. 单元测试和集成测试。接下来进行单元测试和集成测试,主要是验证从新提交的代码与已有代码库的兼容性和正确性。
  6. 报告反馈。持续集成服务器会将构建过程中的错误、测试结果以及代码指标(如代码覆盖率、静态分析结果等)呈现到一个易于阅读的报告中,这些报告可以使团队更好地了解开发过程中出现的问题。
  7. 部署操作。如果构建,测试和分析都成功完成,则可以将最新代码部署到生产环境或其他目标环境中。

总之,持续集成的流程可帮助团队快速检测代码问题并进行修复,减少代码冲突时间和重复劳动,提高软件交付质量和效率。

什么是CI,什么是CD

CI和CD是软件开发中持续集成和持续交付的缩写。

CI代表持续集成(Continuous Integration),是一种实践,旨在通过自动化构建、测试和代码静态分析等过程,频繁地将代码变更合并到共享存储库中。其目的是快速发现和修复代码问题,确保开发团队对软件产品持续交付。其中,持续指的是在整个开发周期中经常性地进行集成。

CD代表持续交付(Continuous Delivery)和持续部署(Continuous Deployment)。持续交付是一种实践,它将 CI 的结果自动发布到一个暂存区域中,等待进一步的人工测试和批准,然后再将其发布到生产环境中。而持续部署则是将所有 CI 和 CD 步骤无缝集成在一起,以自动化地发布代码到生产环境中。

jenkins概述:

Jenkins是一种开源的自动化服务器软件,最初是Hudson项目的分支。它提供了构建、测试和部署软件项目的持续集成(CI)和持续交付(CD)功能

Jenkins可以自动化执行各种任务,如构建代码、运行测试、检查代码质量等。通过使用丰富的插件生态系统,Jenkins能够与许多其他工具和技术集成,包括Docker、Git、GitHub、SVN、Maven等等。

jenkins特点:

  1. 高度可扩展。Jenkins有一个强大的插件框架,使得用户可以自由地选择需要的功能并将其添加到Jenkins中。

  2. 易于设置和使用。Jenkins的安装和配置非常简单,并且有良好的文档和社区支持。

  3. 自动化构建和测试。Jenkins可以自动从版本控制库中获取代码,进行编译、构建、测试和发布等操作。

  4. 安全性。Jenkins提供了一系列的安全功能来保护您的构建环境和数据,如用户身份验证、访问控制等。

  5. 多平台支持。Jenkins可以在Windows、Linux和Mac OS X等多个操作系统上运行。

gitlab概述:

GitLab是一个基于Git版本控制系统的、用于存储和管理代码的Web托管服务。它提供了代码仓库管理、问题追踪、CI/CD等一系列软件开发所需的功能。

gitlab特点:

  1. 完整的Git工作流程管理。GitLab自带有完整的Git工作流程管理,可以方便地管理代码库的分支、合并、提交等操作。

  2. 内置CI/CD功能。GitLab内置了强大的CI/CD工具,可以让用户轻松地配置和管理持续集成和持续部署过程。

  3. 集成的项目管理。除了基本的Git操作以外,GitLab还包含了项目管理、问题跟踪、Wiki、代码审查、安全性扫描等功能,允许团队更加高效地协同开发。

  4. 在线编辑器。GitLab带有在线编辑器,允许您在浏览器中直接编辑文件,而无需在本地环境中安装Git客户端。

  5. 强化的安全性管理。GitLab提供了多重身份验证(MFA)、LDAP、SAML、TFA等多种安全性管理方式,保证应用程序和数据的安全性。

github和GitHub的区别:

相同点:

  1. itLab和GitHub都是基于Git版本控制系统的Web托管服务
  2. 均提供基于Git的版本控制功能,可以管理代码仓库、分支、合并等操作。

  3. 均提供了团队协作功能,包括讨论、问题跟踪、代码审查等。

  4. 均提供了内置CI/CD功能,支持自动化构建、测试和部署等操作。

  5. 均支持开源软件仓库和私有仓库,并且都有强大的社区支持和插件生态系统。

  6. 均可在多个平台上运行,包括Windows、Linux和Mac OS X等。

总之,GitLab和GitHub有很多类似的特性和功能,它们都为开发者提供了一个便捷的代码管理和协作平台。

不同点:

  1. 许可证:GitLab是基于MIT许可证的开源软件,而GitHub是专有软件,需要付费以获得高级功能。

  2. 部署方式:GitLab可以在自己的服务器上进行部署,而GitHub只能托管在GitHub官方网站上。

  3. CI/CD功能:两者的CI/CD功能略有不同。GitLab内置了强大的CI/CD工具,可以让用户轻松地配置和管理整个流程;而GitHub所提供的CI/CD功能则需将代码在第三方CI/CD工具中进行操作。

  4. 安全性:GitLab提供了多重身份验证、LDAP和SAML等安全性管理机制,保证应用程序和数据的安全性;而GitHub提供的安全措施相对较少。

总之,GitLab和GitHub在功能和特性上略有不同,因此在选择使用哪一个平台时需要根据项目需要进行选择。如果需要更多的定制化和自由度,可能更适合选择GitLab,而如果注重商业支持和社区支持,则GitHub会更加适合。

Git的相关概念:

Git是一个分布式版本控制系统,它使用一些特定的概念来管理代码库的工作。以下是Git中一些重要的概念:

  1. Repository(仓库):在Git中,代码托管和版本控制都是通过仓库来完成的。仓库通常包括两个类型:本地仓库和远程仓库。本地仓库保存在开发者的电脑上,而远程仓库则保存在服务器上。

  2. Commit(提交):提交是指向仓库中添加新文件或更改现有文件的过程。提交时必须附上提交消息,以便于其他开源社区和团队成员了解提交内容。

  3. Branch(分支):分支是基于主干(master)代码创建的可变副本。开发人员可以在其上进行更改,而不会影响到其他分支或主干。

  4. Merge(合并):合并是将一个分支或多个分支的更改合并到另一个分支或主干的过程。合并具有自动化算法,它使得开发者能够非常容易地将不同的分支代码合并到一起。

  5. Pull Request(拉取请求):在GitHub和GitLab等平台上,Pull Request是指开发者请求代码所有人(或经过代码所有人批准)查看并合并他们所做的更改的过程。它是开发者合作交流的主要手段之一。

  6. Tag(标签):标签是在代码库中打的标记,用于标示特定的提交版本。通常用于发布特定的版本时,方便开发者和用户查看特定版本的代码。

搭建gitlab

ip 角色 安装软件
192.168.100.5 gitlab gitlab
192.168.100.6 jekins jekins、apache
192.168.100.4 Apache apache
#配置阿里云仓库
wget http://mirrors.aliyun.com/repo/Centos-7.repo
mv Centos-7.repo /etc/yum.repos.d/
yum install -y epel-release#安装gitlab所需组件
yum -y install curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python.x86_64 #默认,使用postfx发送邮件
systemctl enable postfix --now#从本地下载gitlab包
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/#或者配置yum仓库vim /etc/yum.repo.d/gitlab.repo
[gitlab]
name=gitlab
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
repo_gpgcheck=0
enabled=1
gpgcheck=0yun -y install gitlab-ce#我选择的从本地下载,上传
#解包
rpm -ivh gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm [root@localhost ~]# rpm -ivh gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm 
警告:gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID f27eab47: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...1:gitlab-ce-15.9.4-ce.0.el7        ################################# [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 reconfigureFor a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.mdHelp us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=15-9#安装完成后修改访问地址
vim /etc/gitlab/gitlab.rb 
....
external_url 'http://192.168.100.10'
....#修改完后重置gitlab(时间较长,5分钟左右)
gitlab-ctl reconfigure#到最后看到gitlab Reconfigured!就OK了
#浏览器访问时内存要大于4G,不然内存不足会报501,另外注意防火墙规则
#初始密码在/etc/gitlab/initial_root_password 
cat /etc/gitlab/initial_root_password [root@localhost ~]# cat /etc/gitlab/initial_root_password 
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.Password: 0kevvItShgNxHYdvPywLB1hBDTtidJf7TWAlXvymKkU=# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.Password后边的是初始密码#初始化密码
gitlab-rake "gitlab:password:reset[root]"[root@localhost bin]# gitlab-rake "gitlab:password:reset[root]"
Enter password: 
Confirm password: 
Password successfully updated for user with username root.#密码必须8个以上的字符,最好为字母+数字or# 进入控制台
gitlab-rails console -e production
# 查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# 修改密码为lyh20030930
user.password='lyh20030930'
user.password_confirmation = 'lyh20030930'
# 保存
user.save!
#退出
exit

登录进来是这个样子

局部汉化: