zoukankan      html  css  js  c++  java
  • 第一章 Git+Gitlab介绍和安装

    一、持续集成简介

    1.软件开发生命周期

    软件开发生命周期又叫做SDLC(Software Development Life Cycle),它是集合了计划、开发、测试 和部署过程的集合。
    
    1.	需求分析
    这是生命周期的第一阶段,根据项目需求,团队执行一个可行性计划的分析。项目需求可能是公司内部或者客户提出的。这阶段主要是对信息的收集,也有可能是对现有项目的改善和重新做一个新的项目。还要分析项目的预算多长,可以从哪方面受益及布局,这也是项目创建的目标。
    
    2.	设计
    第二阶段就是设计阶段,系统架构和满意状态(就是要做成什么样子,有什么功能),和创建一个项目计划。计划可以使用图表,布局设计或者文者的方式呈现。
    
    3.	实现
    第三阶段就是实现阶段,项目经理创建和分配工作给开者,开发者根据任务和在设计阶段定义的目标进行开发代码。依据项目的大小和复杂程度,可以需要数月或更长时间才能完成。
    
    4.	测试
    测试人员进行代码测试 ,包括功能测试、代码测试、压力测试等。
    
    5.	进化
    最后进阶段就是对产品不断的进化改进和维护阶段,根据用户的使用情况,可能需要对某功能进行修改,bug修复,功能增加等。
    

    2、敏捷开发

    	敏捷开发(Agile Development) 的核心是迭代开发(Iterative Development) 与 增量开发 (Incremental Development) 。
    

    1) 迭代开发

    	对于大型软件项目,传统的开发方式是采用一个大周期(比如一年)进行开发,整个过程就是一次"大 开发";迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开 发",每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。
    

    2) 增量开发

    	软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。 
    

    3) 敏捷开发如何迭代

    	虽然敏捷开发将软件开发分成多个迭代,但是也要求,每次迭代都是一个完整的软件开发周期,必须按照软件工程的方法论,进行正规的流程管理。
    

    3.持续集成

    	持续集成( Continuous integration , 简称 CI )指的是,频繁地(一天多次)将代码集成到主干。 持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。通过持续集成,团队可以快速的从一个功能到另一个功能,简而言之,敏捷软件开发很大一部分都要归功于持续集成。在持续集成的过程当中主要包括以下步骤:提交、测试、构建(容器需要构建, 编译型语言编译)、部署及回滚。
    

    1) 持续集成要素

    1.一个自动构建过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预。 
    2.一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,一般使用SVN或Git。
    3.一个持续集成服务器, Jenkins 就是一个配置简单和使用方便的持续集成服务器。
    

    2) 持续集成的好处

    1、降低风险,由于持续集成不断去构建,编译和测试,可以很早期发现问题,所以修复的代价就少
    2、对系统健康持续检查,减少发布风险带来的问题
    3、减少重复性工作
    4、持续部署,提供可部署单元包
    5、持续交付可供使用的版本
    6、增强团队信心
    

    二、Gitlab私有代码仓库

    	GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
    	
    	GitLab和GitHub一样属于第三方基于Git开发的作品(私有仓库),GITLAB免费且开源(基于MIT协议),与Github类似, 可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器 上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放 在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。
    

    1.Git的部署

    1)Git的简介

    Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而是一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必有服务器端软件支持。
    

    2)Git的安装

    #1.安装
    [root@m01 ~]# yum -y install git
    
    #2.查看Git版本
    [root@m01 ~]# git --version
    git version 1.8.3.1
    
    #3.修改基本配置
    [root@m01 ~]# git config  --global user.name  "jh"
    [root@m01 ~]# git config  --global  user.email "974089352@qq.com"
    
    #4.查看配置
    [root@m01 ~]# git config  -l
    user.name=jh
    user.email=974089352@qq.com
    

    3)仓库简介

    	对应的就是一个目录,这个目录中的所有文件被git管理起来。以后会将一个项目的根目录,作为仓库。仓库中的每个文件的改动 都由git跟踪。
    

    4)新建本地仓库

    #1.新建仓库
    [root@m01 ~]# mkdir test
    
    #2.初始化空的 Git 版本库
    [root@m01 ~]# cd test/ 
    [root@m01 ~/test]# git init
    Initialized empty Git repository in /root/test/.git/
    
    #3.查看仓库
    [root@m01 ~/test]# ll -a
    total 0
    drwxr-xr-x  3 root root  18 Dec 22 19:33 .
    dr-xr-x---. 4 root root 215 Dec 22 19:33 ..
    drwxr-xr-x  7 root root 119 Dec 22 19:33 .git
    

    5)创建远程仓库

    #1.Github上创建仓库
    
    #2.Gitee上创建仓库(以此为例)
    

    选择语言,其他按照自己需求的来.
    

    6)链接远程仓库

    #1.通过HTTPS连接远程仓库
    [root@m01 ~/test]# git remote  add  origin https://gitee.com/jhno1/oldboy-jenkins.git
    
    ps: 点击克隆/下载选择HTTPS方式,复制链接
    
    #2.通过ssh方式连接
    1.生成公钥对
    [root@m01 ~]# ssh-keygen 
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:CLeRI42hKnREMfbbwLYXmrpmx4NvYHHJvgI8NMPkDaM root@m01
    The key's randomart image is:
    +---[RSA 2048]----+
    |  .*o            |
    | +o.++ .         |
    |=.=.==B.         |
    |EB.o.BB=.        |
    |= o +=ooS        |
    |.+ o...          |
    |  +.+ .          |
    |   =.*           |
       o.=..          |
    +----[SHA256]-----+    
    
    2.查看公钥
    [root@m01 ~]# cat  /root/.ssh/id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1EV7n0r+ma/6Lj5FKM1QaWy2w7au2qvvFY/+bmhcFv86b
    XXn3AVKgWhSrzqZPZzSkiuFAATzXqjGl8WJ9EYBamCgYqV/bzysS5BPI2f31zjkgX2XKNzcMHzXKw6GEG4X0
    0qVmwJq2ajSxSrnaLzZRpV9lTdDtSO8WIVZGxWRPiU3aZvq/tFW08fQBKKcV5AlY04WVlRCZZKpKhZ1opmGK
    oqmJ6nh/vJVeCohvrdMhjDtj6zvciHf3sJGAxY6zmH6PaeV+lZS+3pbGR24KIEdARoJuCpSw2NbBo40dn9Mn
    Apsl0K+l2L57Aw+kvmXXd886ZnIIMLwopKumEM4n+xeB root@m01
    
    3.复制公钥配置到Gitee仓库
    # 管理--> 部署公钥管理-->添加公钥
    
    4.返回克隆下载复制ssh链接执行
    [root@m01 ~/test]# git remote  add origin git@gitee.com:jhno1/oldboy-jenkins.git
    
    #查看远程连接
    [root@m01 ~/test]# git remote  -v
    origin	https://gitee.com/jhno1/oldboy-jenkins.git (fetch)
    origin	https://gitee.com/jhno1/oldboy-jenkins.git (push)
    
    #删除远程连接
    [root@m01 ~/test]# git remote rm origin
    

    2.Git文件的推送

    1)从远程仓库获取

    # 当本地没有代码仓库时
    [root@m01 ~/test]# git clone  https://gitee.com/jhno1/oldboy-jenkins.git
    Cloning into 'oldboy-jenkins'...
    Username for 'https://gitee.com': jhno1
    Password for 'https://jhno1@gitee.com': 
    remote: Enumerating objects: 6, done.
    remote: Counting objects: 100% (6/6), done.
    remote: Compressing objects: 100% (5/5), done.
    remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
    Unpacking objects: 100% (6/6), done.
    
    # 当本地已经有了代码仓库,现在需要同步远程仓库内容
    [root@m01 ~/test]# git pull origin master
    The authenticity of host 'gitee.com (212.64.62.183)' can't be established.
    ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
    ECDSA key fingerprint is MD5:27:e5:d3:f7:2a:9e:eb:6c:93:cd:1f:c1:47:a3:54:b1.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'gitee.com,212.64.62.183' (ECDSA) to the list of known hosts.
    remote: Enumerating objects: 6, done.
    remote: Counting objects: 100% (6/6), done.
    remote: Compressing objects: 100% (5/5), done.
    remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
    Unpacking objects: 100% (6/6), done.
    From gitee.com:jhno1/oldboy-jenkins
    

    2)将本地文件推送到远程

    #1.查看工作目录的状态
    [root@m01 ~/test]# git status  
    # On branch master
    # Untracked files:
        (use "git add <file>..." to include in what will be committed)
    #
    #	oldboy-jenkins/
    nothing added to commit but untracked files present (use "git add" to track)
    
    #2.创建新文件
    [root@m01 ~/test]# cd oldboy-jenkins/
    [root@m01 ~/test/oldboy-jenkins]# vim 1.txt
    <h1> 你是</h1>                                                                               
    "1.txt" [New] 1L, 17C written                                     
    
    #3.将文件添加到暂存区
    [root@m01 ~/test/oldboy-jenkins]# git add 1.txt
    [root@m01 ~/test/oldboy-jenkins]# git status
    # On branch master
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #	new file:   1.txt
    
    #4.提交更改,添加备注信息(此时将暂存区的信息提交到本地仓库)
    [root@m01 ~/test/oldboy-jenkins]# git commit  -m "zhehsi。。。"
    [master 729e679] zhehsi。。。
     1 file changed, 1 insertion(+)
     create mode 100644 1.txt
     
    #5. 将本地仓库的文件push到远程仓库(若 push 不成功,可加 -f 进行强推操作)
    [root@m01 ~/test/oldboy-jenkins]# git push  origin  master 
    Username for 'https://gitee.com': jhno1
    Password for 'https://jhno1@gitee.com': 
    Counting objects: 4, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 320 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    remote: Powered by GITEE.COM [GNK-5.0]
    To https://gitee.com/jhno1/oldboy-jenkins.git
       c671512..729e679  master -> master
    

    3)查看文件变化

    # 查看某个文件
    [root@m01 ~/test/oldboy-jenkins]# git diff 1.txt
    
    # 查看所有变化
    [root@m01 ~/test/oldboy-jenkins]# git diff
    

    3.Git分支

    # 查看分支
    [root@m01 ~/test/oldboy-jenkins]# git branch 
    * master
    
    # 查看远程分支
    [root@m01 ~/test/oldboy-jenkins]# git branch  -a
    * master
    
    # 创建分支
    [root@m01 ~/test/oldboy-jenkins]# git branch  test
    [root@m01 ~/test/oldboy-jenkins]# git branch  -a
    * master
      test
    
    # 切换分支
    [root@m01 ~/test/oldboy-jenkins]# git checkout  test 
    Switched to branch 'test'
    [root@m01 ~/test/oldboy-jenkins]# git branch -a
      master
    * test
    
    # 打标签
    [root@m01 ~/test/oldboy-jenkins]# git tag -a v1.1.5-stable -m "做了很多事" 
    [root@m01 ~/test/oldboy-jenkins]# git tag
    v1.1.5-stable
    
    # 查看标签内容
    [root@m01 ~/test/oldboy-jenkins]# git show v1.1.5-stable
    tag v1.1.5-stable
    Tagger: jh <974089352@qq.com>
    Date:   Tue Dec 22 20:26:52 2020 +0800
    做了很多事
    
    # 按照分支拉取代码
    [root@m01 ~/test/oldboy-jenkins]# git clone -b [分支名称] [git链接]
    
    # 按照标签拉取代码
    [root@m01 ~/test/oldboy-jenkins]# git clone [git链接]
    [root@m01 ~/test/oldboy-jenkins]# git tag [tag_name]
    
    

    4.远程仓库

    5.Gitlab的安装

    #1.安装相关依赖
    [root@m01 ~]# yum -y install policycoreutils openssh-server openssh-clients postfix
    
    #2.关闭防火墙
    [root@m01 ~]# systemctl disable firewalld
    
    #3.关闭selinux
    [root@m01 ~]# sed -i 's#enforcing#disabled#g' /etc/sysconfig/selinux
    
    #4.下载gitlab包,并且安装
    [root@m01 ~]# rz gitlab-ce-13.0.14-ce.0.el7.x86_64.rpm
    
    网站:https://about.gitlab.com
    
    #5.安装gitlab
    [root@m01 ~]# yum -y localinstall gitlab-ce-13.0.14-ce.0.el7.x86_64.rpm 
    
    #6.配置gitlab
    [root@m01 ~]# vim /etc/gitlab/gitlab.rb
    external_url 'http://10.0.0.61'
    nginx['listen_port'] = 80
    
    #7.刷新配置(默认启动)
    [root@m01 ~]# gitlab-ctl reconfigure
    
    #8. 启动gitlab
    [root@m01 ~]# gitlab-ctl start
    
    #9.登录
    10.0.0.61
    

    6.Gitlab添加组、创建用户、添加项目

    1)创建组

    	使用管理员 root 创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面进行设置权限, 不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的管理。
    

    2)创建用户

    3)将用户绑定用户组

    4)添加用户有5种角色

    1.	Guest:可以创建issue、发表评论,不能读写版本库 
    
    2.	Reporter:可以克隆代码,不能提交,QA、PM 可以赋予这个权限 
    
    3.	Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限 
    
    4.	Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个 权限  - Visibility Level、删除项目、迁移项目、管理组成员,开发组组 长可以赋予这个权限
    
    5.	Owner:可以设置项目访问权限 
    

    5)创建项目

  • 相关阅读:
    笨方法学python中执行argv提示ValueError: not enough values to unpack (expected 4, got 1)
    VMware workstation安装
    Redis bigkey分析
    MySQL drop table 影响及过程
    MySQL 大表硬连接删除
    ES elasticsearch 各种查询
    ES elasticsearch 各种聚合
    ES elasticsearch 聚合统计
    ES elasticsearch 实现 count单字段,分组取前多少位,以地理位置中心进行统计
    MySQL行溢出、varchar最多能存多少字符
  • 原文地址:https://www.cnblogs.com/jhno1/p/14946371.html
Copyright © 2011-2022 走看看