• CentOS7安装GitLab和Jenkins构建CICD环境


    CI/CD自动集成-发布-部署

    • 持续集成:简称CI。持续集成(continuous integration)是指开发者在代码开发过程中,可以频繁将代码部署集成到主干,并进行自动化测试。持续集成的优点:快速发现错误,容易定位到错误。防止分支大幅度偏离主干。

    • 持续交付:简称CD。是指在持续集成的基础之上,将代码部署到预生产环境。持续交付可以看作是持续集成的下一步,无论如何更新,软件是随时随地可交付的。

    • 持续部署:CD 在持续交付的基础之上,把部署到生产环境的过程自动化。

    持续集成流程:

    1. 开发者将新版本 push 到 Gitlab

    2. Gitlab 随后触发 jenkins master 节点进行一次 build。(或者通过 web hook 定时检测)

    3. jenkins master 节点将这个 build 任务分配给若干个注册的 slave 结点中的一个,这个 slave 结 点根据一个事先设置好的脚本进行 build。这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等。这些原本需要手动完成的任务都可以交给 jenkins 来做。

    4. 我们在 build 中要迚行编译,这里使用了分布式编译器 distcc 来加快编译速度。

    CICD流程

    gitlab 创建代码项目--->gitlab 部署公钥--->jenkins 安装插件--->创建新项目--->绑定私钥--->添加触发器--->测试部署--->增加 Build Pipeline 插件以流程图的形式展示各个 Job 的顺序

    GitLab

    GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git项目仓库,可通过Web 界面进行访问公开的或者私人项目。Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变 得简单的框架。
    GitLab 拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问, 它非常易于浏览提交过的版本并提供一个文件历叱库。它还提供一个代码片段收集功能可以轻松实现代码 复用,便于日后有需要的时候进行查找。

    GitLab 中文网:https://www.gitlab.com/installation/#centos-7

    清华大学镜像站: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

    GitLab包含软件:

    alertmanager
    gitaly
    gitlab-exporter
    gitlab-workhorse
    grafana
    logrotate
    nginx
    node-exporter
    postgres-exporter
    postgresql
    prometheus
    redis
    redis-exporter
    sidekiq
    unicorn
    

    GitLab安装

    # 服务器节点内存需要大于4G
    # 安装依赖
    yum install -y policycoreutils-python
    
    # 上传rpm包
    rpm -ivh gitlab-ce-10.2.3-ce.0.el7.x86_64.rpm
    
    # 配置gitlab域名
    vim /etc/gitlab/gitlab.rb
    external_url 'http://192.168.1.63:9999'
    
    # 初始化gitlab,会重置为最原始的配置
    gitlab-ctl reconfigure
    
    # 查看状态
    gitlab-ctl status
    
    # 浏览器访问验证
    http://192.168.1.63/users/sign_in
    
    # 关闭 gitlab: 
    gitlab-ctl stop 
    
    # 启动 gitlab: 
    gitlab-ctl start 
    
    # 重启 gitlab: 
    gitlab-ctl restart
    
    # gitlab启动报warning: redis: unable to open supervise/ok: file does not exist;解决如下:
    systemctl restart gitlab-runsvdir
    
    # GitLab的配置文件
    /etc/gitlab/gitlab.rb 	//可以自定义一些邮件服务等 
    日志地址:/var/log/gitlab/ 	 // 对应各服务 服务地址:/var/opt/gitlab/ 	// 对应各服务的主目录 仓库地址:/var/opt/gitlab/git-data  //记录项目仓库等提交信息
    
    # 查看所有的logs; 按 Ctrl-C 退出
    sudo gitlab-ctl tail
    
    # 拉取/var/log/gitlab下子目录的日志
    sudo gitlab-ctl tail gitlab-rails
    
    # 拉取某个指定的日志文件
    sudo gitlab-ctl tail nginx/gitlab_error.log
    
    # 检查gitlab
    gitlab-rake gitlab:check SANITIZE=true --trace    
    

    GitLab汉化

    # 方式1
    # 汉化gitlib
    tar zxvf gitlab-patch-zh.tat.gz
    yum install -y git patch
    git   diff   v10.2.3   v10.2.3-zh   > ../10.2.3-zh.diff
    chmod -R 777 gitlab
    patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ../10.2.3-zh.diff
    
    # 方式2:
    # 下载汉化包并解压
    gitlab-12-3-stable-zh.zip
    
    # 备份原文件
    cp -rp /opt/gitlab/embedded/service/gitlab-rails{,.bak_$(date +%F)}
    
    # 将汉化包覆盖过去(也需要敲)
    cp -rf ./* /opt/gitlab/embedded/service/gitlab-rails
    
    # 重启gitlab,注意顺序,
    sudo gitlab-ctl start 
    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart
    

    GitLab卸载

    # 卸载gitlab
    gitlab-ctl stop
    rpm -e gitlab-ce
    ps aux | grep gitlab
    #杀掉第一个进程(就是带有好多.............的进程)
    kill -9 18777
    find / -name gitlab | xargs rm -rf
    

    GitLab使用

    设置gitlab用户root可以通过ssh公钥直接下载代码

    将代码发布到web服务器

    可以通过执行命令或脚本的方式迚行代码发布,我使用 root 用户在各个 web 服务器上发布代码。大 家也可以建立一些普通用户如果 www 或 apache 来发布。如果使用普通用户发布代码,要保持所有服务 器上的用户 id 一致,这样没有权限的问题

    使用git克隆代码,复制左侧链接.

    image-20200602170253358

    git clone http://192.168.1.63:9999/root/harry.git
    

    GitLab和GitHub的区别:

    相同点: 二者都是基于webGit仓库,在很大程度上 GitLab 是仿照 GitHub 来做的,它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布和合作开发项目的中心化于存储的场所。

    不同点:
    1、GitHub 如果要使用私有仓库,是需要付费的。GitLab可以在上面创建私人的免费仓库。
    2、GitLab 让开发团队对他们的代码仓库拥有更多的控制,相比于 GitHub,它有不少的特色:允许 免费设置仓库权限;允许用户选择分享一个 project 的部分代码;允许用户设置 project 的获取权限,进一步的提升安全性;可以设置获取到团队整体的改进进度通过 innersourcing让不在权限范围内的人访问不到该资源。

    总结:从代码私有性方面来看,有时公司并不希望员工获取到全部的代码,这个时候 GitLab无疑是更好的选择。但对于开源项目而言,GitHub 依然是代码托管的首选。

    Git使用

    git :是一种版本控制系统,是一个命令,是一种工具
    gitlib :是用于实现 git 功能的开发库
    github :是一个基于 git 实现的在线代码托管仓库,包含一个网站界面,向互联网开放
    gitlab :是一个基于 git 实现的在线代码仓库托管软件,一般用于在企业内部网络搭 git私服 注: gitlab-ce 社区版 ; gitlab-ee 是企业版,收费。

    # 安装git
    yum install -y git
    

    安装完成后,需要先配置自己的git环境。配置工作只需一次,以后升级时还会 沿用现在的配置。

    第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用 这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录。

    git常用命令

    git config --global user.name “name“ #设置全局用户名
    git config --global user.email   mail 	#设置全局邮箱
    git config --global   --list 	#列出用户全局设置
    git   add index.html 	#添加文件到暂存区
    git commit -m “描述内容“ 	#提交文件到工作区
    git status 	#查看工作区的状态
    git push 	#提交代码到 git 服务器上
    git pull 	#获取代码到本地
    git log 	#查看操作日志
    vim   .gitignore 	#定义忽略文件
    git reset --hard   HEAD^   #git 版本回滚, HEAD 为当前版本,加一个^为上一个,^^为上上一 个版本
    git reflog  # #获取每次提交的 ID,可以使用--hard 根据提交的 ID 迚行版本回退
    git reset --hard 5ae4b06 	#回退到指定 id 的版本
    git branch 	#查看当前所处的分支
    git checkout --   file 	#从服务器更新某个那文件覆盖本地的文件
    

    工作区和暂存区及分支概述:

    1、工作区就是编辑文件的目录区域,需要将工作区的修改好的文件 add 到暂存区才能提交到 git 服 务器,在工作区有多个文件的时候可以将一个戒多个文件添加至暂存区,再提交到 git 服务器即可。

    2、在服务器创建分支

    # 例:把修改过的 index.html 文件更新主版本中
    [root@harry63 test]# cd harry-web/
    [root@harry63 harry-web]# echo "bbs.harry.cn" >> index.html
    [root@harry63 harry-web]#   git add index.html 
    [root@harry63 harry-web]# git commit -m "add bbs.harry.cn" 
    [root@harry63 harry-web]# git push -u origin 	master   #上传到 master 主干下 origin [ˈɒrɪdʒɪn] 起源,根
    [root@harry63 harry-web]# rm -rf index.html 	#初除一些代码 [root@harry63 harry-web]# git reset --hard   HEAD   #回滚到最新版本 [root@harry63 harry-web]# ls
    
    查看 git 当前的版本: 
    [root@harry63 ~]# git --version 
    git version 1.8.3.1
    
    [root@harry63 harry-web]# git reflog 	#获取每次提交的 ID
    9c1e21a HEAD@{0}: commit: aaa cd9d1d5 HEAD@{1}: commit: add bbs
    b2866fd HEAD@{2}: clone: from http://192.168.1.63/harry/harry-web.git
    
    
    # 工作区和暂存区及分支概述
    # 1、工作区就是编辑文件的目录区域,需要将工作区的修改好的文件 add 到暂存区才能提交到 git 服 务器,在工作区有多个文件的时候可以将一个或多个文件添加至暂存区,再提交到 git 服务器即可。
    # 2、在服务器创建分支
    [root@harry63 harry-web]#   git branch bbs 	#创建一个分支 [root@harry63 harry-web]#   git checkout bbs   #切换到分支 bbs [root@harry63 harry-web]#   git branch 	#查看当前所处的分支
    [root@harry63 harry-web]#   vim a.txt 	#随意在里面写一些内容
    [root@harry63 harry-web]#   git add a.txt
    [root@harry63 harry-web]#   git commit -m "add a.txt“   #提交到暂存区中
    [root@harry63 harry-web]#   git push -u origin   bbs   #上传到分支 bbs 分支上
    

    Jenkins

    Jenkins 概述:是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

    官网地址:https://jenkins.io/

    rpm包下载地址:http://pkg.jenkins.io/redhat-stable/

    中文帮助:https://jenkins.io/zh/doc/book/installing/

    插件下载地址:http://mirror.xmission.com/jenkins/updates/update-center.json

    部署Jenkins:推荐方式2

    方式1:

    # 安装jenkins
    rpm -ivh jenkins-2.93-1.1.noarch.rpm
    
    # 修改配置文件,配置端口、用户及jdk(jdk如果没有则需要安装)
    vim  /etc/sysconfig/jenkins
    JENKINS_PORT=" 198 "
    JENKINS_USER="root"
    JENKINS_JAVA_CMD="/opt/cosmo/com/public/jdk_lin/1.8.0_171"
    
    # 修改配置文件
    vim  /etc/sysconfig/jenkins
    JENKINS_USER="root"
    
    # 启动
    /etc/init.d/jenkins start
    
    # 开机自启动
    chkconfig jenkins on
    
    # 查看管理员登录密码
    cat /var/lib/jenkins/secrets/initialAdminPassword
    

    方式2:

    # 下载jenkins的war包
    https://www.jenkins.io/download/
    
    # 上传war包至服务器,并启动
    java -jar jenkins.war --httpPort=8888
    
    # 后台启动
    nohup java -jar jenkins.war --httpPort=8888 > /dev/null 2>&1 &
    
    # 浏览器访问验证
    http://192.168.1.63:8888
    
    # 查看管理员登录密码
    cat /var/lib/jenkins/secrets/initialAdminPassword
    

    Jenkins插件下载:http://updates.jenkins-ci.org/download/plugins/

    安装插件方式选择:
    方法一(推荐):如果服务器可以上网,那边选择在线安装最好不过了,安装流程为: 系统管理(ConfigureSystem)----插件管理(Manage Jenkins)---选择需要的插件直接安装即可

    方法二:如果服务器不能上网,那么就只能离线安装,首先去http://updates.jenkins-ci.org/download/plugins/ 下载需要的 plugin,选择匹配的版本号,下载到本 地,然后打开:系统管理()---插件管理—高级---找到”上传插件”(浏览,找到扩展名为.hpi 的插件,上传之 后默认直接就安装了。重启 jenkins,安装的插件就可以使用了。

    image-20200602171256663

    Jenkins汉化

    安装这两个汉化插件

    image-20200602172506968

    重启jenkins

    配置Jenkins使用gitlib更新代码

    1. 导出GitLab项目
    2. 安装插件(Jenkins需要插件来支撑)
    Credentials Plugin(默认已经安装)    #签名证书管理插件
    Gitlab Plugin   #安装后从 gitlab 获取代码
    Git Plugin   和 Git Client Plugin 	#用于 jenkins 在 gitlab 中拉取源码
    GitLab Hook #gitlab 触发 jenkins 构建项目 #hook   [hʊk] 	钩子 ; plugin   ['plʌgɪn] 插件
    gitlab Authentication 	# gitlab 和 jenkins 认证相关的插件
    SSH Plugin 	#进程执行 shell 脚本
    Publish Over SSH   #用于通过 ssh 部署应用
    

    实现 gitlib 触发 Jenkins 自动部署

    在公司的测试环境当中,当开发人员向 gitlab 仓库提交代码后,gitlab 自动通知 jenkins 进行构建项目、代码质量测试然后部署至测试环境,这里先暂时部署到测试环境。对于生产环境,后期使用手动部署代码。

    安装 Gitlab Hook Plugin 插件:
    系统管理-管理插件-可选插件,安装这两个插件:Gitlab Hook PluginBuild Authorization Token RootBuild Token Trigger

    增加 Build Pipeline 插件以流程图的形式展示各个 Job 的顺序

  • 相关阅读:
    格式化HDFS出现java.io.IOException: Cannot create directory /opt/hdfs/name/current错误
    Hadoop集群安装教程(完全分布模式)——更新中
    将sql语句嵌入到c语言中——codeblocks
    centos虚拟机网络连接问题
    Linux虚拟机如何调整登录界面的分辨率——解决登录界面图标过大的问题
    Spring Cloud常用组件超时总结
    程序集加载与反射笔记
    ASP.NET分页
    显式向标识列插入数据
    JIT和程序的首次执行
  • 原文地址:https://www.cnblogs.com/fusheng11711/p/13030800.html
Copyright © 2020-2023  润新知