• Git&Gitlab开发流程与运维管理


     

     

     

     

     

     

    Git&Gitlab开发流程与运维管理

     

     

     

     

     

     

     

    作者

    刘畅

    时间

    2020-10-31

     

     

     

     

    实验系统版本centos7.5

    主机名称

    ip地址

    配置

    安装软件

    controlnode

    172.16.1.120

    4/8G/60G

    dockergitgitlab

    slavenode1

    172.16.1.121

    2/2G/60G

    dockergitRunner

    注:本文档docker的部署就不赘述了,可以参考docker部署文档。

     

     

     

     

     

     

     

     

    目录

    1 Git分布式版本控制系统 1

    1.1 git简介 1

    1.2 git部署 2

    1.3 Git客户端配置使用者 3

    1.4 Git工作区 4

    1.5 Git常用命令 4

    1.6 Git分支管理 6

    1.7 Git分支与上线发布流程 7

    2 Gitlab图形页面版本控制系统 7

    2.1 Gitlab简介 7

    2.2 Gitlab部署(docker方式) 8

    2.3 Gitlab基本配置 9

    2.4 Gitlab常用管理命令 16

    2.5 Gitlab使用流程 17

    2.6 gitlab两种克隆方式 24

    2.7 Gitlab备份与恢复 26

    2.8 Gitlab CI/CD初探 28

    3 补充 34

    3.1 git clone指定branchtag 34

    3.2 tag 34

    3.3 Linux发行版,存放CA证书文件的位置可能是下面这些 36

    3.4 gitlab windos客户端(gitbash、海龟svn) 36


    1 Git分布式版本控制系统

    前言:

    自动化运维架构

    wps1 

    1.1 git简介

    1 Git是什么

    目前世界上最流程的开源分布式版本控制系统。

     

    2 什么是版本控制系统

    版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理。

    是一种文件存储系统。

     

    3 集中式与分布式版本控制系统

    wps2 

     

    分布式相比集中式有以下好处:

    (1) 集中式,如果服务器宕机,无法进行代码提交、版本管理。

    (2) 分布式,可以在本地进行版本管理,你可以选择合适的时候将本地版本推送到远程服务器。

    (3) 分布式比集中式数据安全性高,例如集中式,服务器故障数据丢失风险大。

    1.2 git部署

    172.16.1.120节点上操作

    1 安装

    # yum install git -y

    说明:git只是一个工具,并没有守护进程。

     

    2 git 创建仓库

    为方便开发者交换数据,分布式版本控制系统一般会准备一台服务器充当“中央服务器”,开发者一般借助SSH实现与这台服务器通信。

    (1) 添加一个用户,用于ssh连接认证(不添加,使用root用户也行,因为安全性,不建议这么做)

    # useradd git

    # echo "git@123456" | passwd --stdin git

     

    (2) 新建一个项目仓库

    [root@controlnode ~]# su - git

    [git@controlnode ~]$ mkdir -p demo.git

    [git@controlnode ~]$ cd demo.git/

    # 说明:".git"结尾代表该文件夹是一个git仓库,是一种规范,拉取仓库是没有该后缀的。

    [git@controlnode ~]$ git init --bare

    [git@controlnode demo.git]$ pwd

    /home/git/demo.git

    [git@controlnode demo.git]$ ls

    wps3 

    # 看不到仓库中具体的文件

     

    (3) 在开发者电脑使用git命令拉取这个项目仓库代码

    172.16.1.121节点上操作

    1) 安装git

    # yum install git -y

    2) 交互式认证

    # git clone git@172.16.1.120:/home/git/demo.git

    wps4 

    命令说明:

    git clone # git拷贝命令

    git@172.16.1.120 # ssh远程到git用户

    :/home/git/demo.git # 远程主机git用户下的git仓库地址

     

    # ls -la demo/.git/

    wps5 

    wps6 

     

    3) SSH密钥免交互式认证

    有时提交代码频率挺高,每次输入密码挺麻烦,可以配置SSH密钥对实现免交互认证。

     

    生成ssh密钥对(一路回车)

    # ssh-keygen

     

    id_rsa.pub公钥内容添加到git服务器git账号/home/git/.ssh/authorized_keys

    # ssh-copy-id git@172.16.1.120

     

    携带id_rsa私钥进行SSH认证

    # git clone git@172.16.1.120:/home/git/demo.git

    1.3 Git客户端配置使用者

    1 配置使用者信息

    # git config --global user.name liuchang

    # git config --global user.email liuchang@qq.com

     

    2 查询使用者信息

    # git config --list

     

    3 删除使用者信息

    # git config --global --unset user.name

    # git config --global --unset user.email

    1.4 Git工作区

    wps7 

    git有三个常用的工作区

    (1) 工作区:添加、删除和编辑文件

    (2) 暂存区:标记文件等待提交

    (3) 仓库区(本地):对文件进行版本管理

    1.5 Git常用命令

    wps8 

     

    1.6 git工作流程(同样适用gitlab)

    wps9 

    1克隆远程版本库

    # git clone <url>

    2 配置使用者信息

    # git config --global user.name <用户名>

    # git config --global user.email <邮箱地址>

    3 新建开发分支并进入该分支

    # git branch <分支名>

    # git checkout <分支名>

    4 将当前分支下修改的文件添加到暂存区

    # git add .

    5 提交当前分支的暂存区到仓库区

    # git commit -m "<描述信息>"

    6 查看当前分支的历史提交记录

    # git log

    7 将当前分支的本地代码推送到远程服务器

    # git push <remote> <branch>

    8获取当前分支别人提交的最新代码

    # git pull <remote> <branch>

     

    注意:

    (1) 不同分支之间的数据是不同的。

    (2) 创建新的分支时,新分支会继承master分支的所有数据。

    (3) 将其它分支文件mergemaster分支,如果文件名相同,会覆盖master分支中的文件。

    (4) git pull | git push <url branch> master分支下<url branch>默认都是origin master。在pull

    push的时候先切换到相应的本地分支。

     

     

     

    1.6 Git分支管理

    1 在实际的项目开发中,一个项目会存在多个分支,这些分支大致分为两类:

    (1) master 主分支,最终上线分支,具有质量保证的、可正常运行的分支,禁止直接代码提交。

    (2) develop 测试分支,用于合并feature分支。

    (3) release 预发布分支,由feature分支合并,测试通过后合并到master分支

    (4) feature 新功能开发分支,开发完合并到develop,进行集成测试。

     

    2 分支管理有常用命令

    (1) git branch -a

    # 查看分支(你当前所在的分支会用"*"号标起来)-a表示远程仓库的存在的分支

    (2) git branch <branch>

    # 新建分支

    (3) git branch -D <branch>

    # 删除分支

    (2) git checkout <branch>

    # 切换到指定分支或者标签

    (3) git merge <branch>

    # 合并指定分支到当前分支

    1.7 Git分支与上线发布流程

    wps10 

    2 Gitlab图形页面版本控制系统

    2.1 Gitlab简介

    1 GitLab是一个开源的图形代码版本管理系统,使用Git作为代码版本控制工具,并在此基础上集成开发了很多企业级实用功能。例如:

    (1) 图形页面

    (2) 角色权限控制

    (3) Issue问题跟踪

    (4) 在线代码编辑

    (5) 项目wiki

    (6) CI/CD集成发布

    (7) 等等

     

    2 Git有三个类

    (1) Git

    # 本地版本控制工具。

    (2) GithubGitee

    # 公共代码托管仓库,对互联网用户开放。

    (3) GitLab

    主要用于企业内部自建代码版本管理系统。

    2.2 Gitlab部署(docker方式)

    172.16.1.120节点上操作

    1 启动容器

    # mkdir /opt/gitlab

    # GITLAB_HOME=/opt/gitlab

    # docker run --detach

    --hostname gitlab.lc.com

    --publish 443:443 --publish 80:80 --publish 2222:22

    --name gitlab

    --restart always

    --volume $GITLAB_HOME/config:/etc/gitlab

    --volume $GITLAB_HOME/logs:/var/log/gitlab

    --volume $GITLAB_HOME/data:/var/opt/gitlab

    gitlab/gitlab-ce:latest

     

    说明:本地目录和容器目录的对应关系

    wps11 

     

    补充:

    (1) 查看gitlab版本号

    # docker exec -it gitlab bash

    root@gitlab:/# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

    13.5.1

    (2) 由于gitlab的镜像比较大(2GB左右),为了方便以后部署和gitlab

    备份数据还原时保持版本的一致性,这里将gitlab镜像导出来。

    # docker save -o gitlab-ce-13_5_1.tar gitlab/gitlab-ce:latest

    # docker load -i gitlab-ce-13_5_1.tar

     

    2 访问gitlab

    (1) 在浏览器中输入"http://172.16.1.120/"地址

    (2) 修改root用户密码

    wps12 

    说明:

    密码最少为8位,我这里的密码为 12345678

     

    (3) 登录gitlab

    wps13 

     

     

    2.3 Gitlab基本配置

    1 Gitlab涉及的组件

    [root@controlnode ~]# docker exec -it  gitlab bash

    root@gitlab:/# gitlab-ctl service-list

    alertmanager*

    gitaly*

    gitlab-exporter*

    gitlab-workhorse*

    grafana*

    logrotate*

    nginx*

    postgres-exporter*

    postgresql*

    prometheus*

    puma*

    redis*

    redis-exporter*

    sidekiq*

    sshd*

    root@gitlab:/# exit

    exit

    [root@controlnode ~]#

     

    2 系统配置

    (1) 个人设置

    1) 设置中文

    wps14 

     

    (2) 全局设置(管理中心->设置->通用)

    (1) 了解git访问协议

    可见性与访问控制

    wps15 

     

    (2) 关闭注册

    注册限制

    wps16 

     

    (3) 关闭头像(该头像会引用第三方网站的图片,会导致gitlab变慢)

    帐户和限制

    wps17 

     

    (4) 设置登录页面信息

    登录限制

    wps18 

     

    wps19 

     

    3 配置SMTP发送邮件

    (1) 修改配置参数

    # vim /opt/gitlab/config/gitlab.rb

    gitlab_rails['time_zone'] = 'Asia/Shanghai'

    gitlab_rails['smtp_enable'] = true

    gitlab_rails['smtp_address'] = "smtp.163.com"

    gitlab_rails['smtp_port'] = 25

    gitlab_rails['smtp_user_name'] = "hyjy2504164765@163.com"

    gitlab_rails['smtp_password'] = "linux123"

    gitlab_rails['smtp_domain'] = "163.com"

    gitlab_rails['smtp_authentication'] = "login"

    gitlab_rails['smtp_enable_starttls_auto'] = true

    gitlab_rails['smtp_tls'] = false

    gitlab_rails['gitlab_email_from'] = 'hyjy2504164765@163.com'

     

    (2) 重启gitlab容器

    # docker restart gitlab

     

    (3) 测试邮件功能

    [root@controlnode ~]# docker exec -it gitlab bash

    root@gitlab:/# gitlab-rails console

    wps20 

    irb(main):001:0> Notify.test_email('2504164765@qq.com', 'gitlab.lc.com', 'test').deliver_now

    wps21 

    irb(main):002:0> exit

    root@gitlab:/# exit

    exit

    [root@controlnode ~]#

     

    (4) 查看邮件

    wps22 

     

     

    4 配置HTTPS

    (1) 配置自签证书

    1) 解压配置文件

    [root@controlnode ~]# mkdir -p cfssl_dir

    [root@controlnode ~]# cd cfssl_dir/

    [root@controlnode cfssl_dir]# tar -xzf /root/cfssl.tar.gz

    [root@controlnode cfssl_dir]# ls -l

    wps23 

    [root@controlnode cfssl_dir]# mv cfssl* /usr/bin/

     

    2) 自签证书脚本

    # cat certs.sh

    cat > ca-config.json <<EOF

    {

      "signing": {

        "default": {

          "expiry": "87600h"

        },

        "profiles": {

          "server": {

             "expiry": "87600h",

             "usages": [

                "signing",

                "key encipherment",

                "server auth",

                "client auth"

            ]

          }

        }

      }

    }

    EOF

     

    cat > ca-csr.json <<EOF

    {

        "CN": "gitlab",

        "key": {

            "algo": "rsa",

            "size": 2048

        },

        "names": [

            {

                "C": "CN",

                "L": "Beijing",

                "ST": "Beijing"

            }

        ]

    }

    EOF

     

    cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

     

    cat > gitlab.lc.com-csr.json <<EOF

    {

      "CN": "gitlab.lc.com",

      "hosts": [],

      "key": {

        "algo": "rsa",

        "size": 2048

      },

      "names": [

        {

          "C": "CN",

          "L": "BeiJing",

          "ST": "BeiJing"

        }

      ]

    }

    EOF

     

    cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server gitlab.lc.com-csr.json | cfssljson -bare gitlab.lc.com

     

    # 注意修改脚本中的域名为gitlab.lc.com

     

    [root@controlnode cfssl_dir]# ls -l

    wps24 

     

    (2) 上传自签证书到/etc/gitlab/ssl目录

    [root@controlnode cfssl_dir]# mkdir -p /opt/gitlab/config/ssl/

    [root@controlnode cfssl_dir]# cp -a gitlab.lc.com.pem gitlab.lc.com-key.pem /opt/gitlab/config/ssl/

     

    (3) 修改配置文件指定证书

    [root@controlnode cfssl_dir]# vim /opt/gitlab/config/gitlab.rb

    external_url 'https://gitlab.lc.com'

    # 访问使用的域名或者IP

    nginx['enable'] = true

    nginx['redirect_http_to_https'] = true

    # 设置开启自动将HTTP跳转到HTTPS

    nginx['redirect_http_to_https_port'] = 80

    nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.lc.com.pem"

    nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.lc.com-key.pem"

     

    (4) 重启gitlab容器

    # docker restart gitlab

     

    (5) 修改本地windowshosts文件

    C:WindowsSystem32driversetchosts

    172.16.1.120 gitlab.lc.com

     

    (6) 使用火狐浏览器访问(方便查看证书的信息) gitlab.lc.com

    当在浏览器中输入gitlab.lc.com后会自动跳转到https://gitlab.lc.com/users/sign_in

    证书信息如下:

    wps25 

    wps26 

    2.4 Gitlab常用管理命令

    gitlab-ctl

    # Gitlab管理工具

    # gitlab-ctl status 查看gitlab服务状态

    # gitlab-ctl reconfigure 重新加载gitlab配置

    gitlab-rails

    gitlab-redis-cli

    # 访问Redis数据库

    gitlab-psql

    # 访问PGSQL数据库

    gitlab-rake

    # 备份与恢复

    gitlab-backup

    # 12.1版本以后增加的备份与恢复工具

     

    wps27 

    2.5 Gitlab使用流程

    1 创建用户

    (1) 管理中心—用户—新用户

    wps28 

     

    (2) 创建用户完成后该用户会收到更改密码邮件,点击邮件中的链接即可

    wps29 

     

     

    wps30 

    说明:liuchang用户密码修改为:liuchang@123456

     

    (3) 密码修改完成后会发邮件通知你密码更改成功

    wps31 

     

    2 创建群组

    (1) 群组—您的群组—新建群组

    群组有三种访问权限

    1) Private

    # 只有组成员才能访问,企业内部一般都用这个。

    2) Internal

    # 只要登录的用户就能看到,一般用于对IT部门公开的项目。

    3) Public

    # 不用登录也能看到,一般用于开源项目。

     

     

     

     

     

     

     

     

    wps32 

     

    3 在群组里创建项目

    群组—您的群组product—新建项目

     

    wps33 

     

    wps34 

     

    wps35 

    点击"添加自述文件"链接,添加自述文件,提交到master主分支。

    自述文件内容为this is mall system project.

     

    4 群组邀请成员

    (1) 群组—您的群组—product—成员

    wps36 

     

    Gitlab用户在群组中的五种权限

    (1) Guest

    # 可以创建issue、发表评论,不能读写版本库。

    (2) Reporter

    # 可以克隆代码,不能提交,QA(品质保证)PM(产品经理)可以赋予这个权限。

    (3) Developer

    # 可以克隆代码、开发、提交、pushRD(研发工程师)开发者可以赋予这个权限。

    (4) Maintainer

    # 可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD

    # 责人可以赋予这个权限。

    (5) Owner

    # 可以设置项目访问权限 - 删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限。

     

    (2) 邀请成功后被邀请用户会收到邮件提示

    wps37 

     

    (3) liuchang用户登录gitlab

    1) 只能看到自己所在组的项目

    wps38 

    2) 创建login.html文件并提交到新的dev分支

    wps39 

     

    wps40 

    3) 查看dev分支

    wps41 

     

     

     

     

     

     

     

     

    2.6 gitlab两种克隆方式

    wps42 

    172.16.1.121节点上操作

    1 修改/etc/hosts文件

    # vim /etc/hosts

    172.16.1.120 gitlab.lc.com

     

    2 基于HTTP基本认证,Gitlab用户名和密码

    # git clone https://gitlab.lc.com/product/mall.git

    wps43 

    报错原因:

    gitlab使用的是自签证书,客户端不认识这个https证书,需要把自签CA

    证书导入到当前机器。

     

    解决办法:

    (1) 将自签CA证书手动导入ca-bundle.crt

    # cat ca.pem >>/etc/pki/tls/certs/ca-bundle.crt

    (2) 再次通过http方式拉取代码

    # git clone https://gitlab.lc.com/product/mall.git

    wps44 

     

    3 基于SSH认证,使用密钥对

    (1) 修改配置文件指定gitlab对外暴露SSH端口

    172.16.1.120节点上操作

    [root@controlnode ~]# vim /opt/gitlab/config/gitlab.rb

    gitlab_rails['gitlab_shell_ssh_port'] = 2222

    # gitlab容器内ssh 22端口对外映射的端口是2222

     

    重启gitlab容器

    [root@controlnode ~]# docker restart gitlab

     

    可以发现gitlabssh克隆url地址发生了变化

    wps45 

     

    (2) ssh-keygen生成密钥对

    这台机器在上面的操作过程中已经生成了密钥对,这里就不生成了。

     

    (3) gitlab liuchang用户添加ssh公钥

    点击用户头像->设置->SSH密钥->添加公钥(id_rsa.pub)

    wps46 

     

    密钥添加成功后户发送邮件通知liuchang用户

    wps47 

     

    (4) 测试:git clone免认证

    # git clone ssh://git@gitlab.lc.com:2222/product/mall.git

    2.7 Gitlab备份与恢复

    172.16.1.120节点上操作

    1 配置gitlab备份自动清理参数

    [root@controlnode ~]# docker exec -it gitlab bash

    root@gitlab:/# vim /etc/gitlab/gitlab.rb

    gitlab_rails['manage_backup_path'] = true

    gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

    # 备份数据存放路径

    gitlab_rails['backup_keep_time'] = 604800

    # 备份数据多少天后清除,单位秒,604800=7

     

    root@gitlab:/# ls /var/opt/gitlab/backups/ -ld

    wps48 

     

    # 重新加载配置

    root@gitlab:/# gitlab-ctl reconfigure

     

    2 手动备份

    (1) 备份数据

    root@gitlab:/# gitlab-rake gitlab:backup:create

    root@gitlab:/# ls -l /var/opt/gitlab/backups/

    wps49 

     

    (2) 备份配置文件

    root@gitlab:/# gitlab-ctl backup-etc

    wps50 

    root@gitlab:/# ls -l /etc/gitlab/config_backup/

    wps51 

     

    3 自动备份

    通过定时任务实现

    [root@controlnode ~]# crontab -l

    */5 * * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null

    * 02 * * 2-6 /usr/bin/docker exec gitlab /usr/bin/gitlab-rake gitlab:backup:create &>/dev/null

    * 02 * * 2-6 /usr/bin/docker exec gitlab /usr/bin/gitlab-ctl backup-etc &>/dev/null

     

    # 因为程序员大多都是在半夜上传代码,所以定时备份时间选在每周2到周六6的凌晨2点进行。

    # 备份建议,备份路径放到共享文件系统中,保留周期为1-3年。

     

    4 还原备份

    由于某种原因,原gitlab服务器损坏,在一台新的服务器上搭建gitlab并回复之前的备份。

    (1) 使用rpm包部署gitlab

    1) 安装rpm

    # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.5.1-ce.0.el7.x86_64.rpm

    # yum install gitlab-ce-13.5.1-ce.0.el7.x86_64.rpm

     

    2) 启动gitlab

    # gitlab-ctl reconfigure

    # 查看gitlab服务是否正常启动(这些服务都是开机自启动的)

    wps52 

    # 在浏览器中输入"http://172.16.1.120/"url地址即可访问。

     

    (2) 还原

    1) 拷贝备份文件

    # cp -a /tmp/1604330662_2020_11_02_13.5.1_gitlab_backup.tar /var/opt/gitlab/backups/

    # chown git.git /var/opt/gitlab/backups/1604330662_2020_11_02_13.5.1_gitlab_backup.tar

    2) 停写库服务

    # gitlab-ctl stop unicorn

    # gitlab-ctl stop puma

    # gitlab-ctl stop sidekiq

    3) 恢复数据

    # gitlab-rake gitlab:backup:restore BACKUP=1604330662_2020_11_02_13.5.1

    4) 恢复配置文件

    # cd /tmp/

    # tar -xf gitlab_config_1604330642_2020_11_02.tar

    # cp -a /tmp/etc/gitlab/* /etc/gitlab/

    5) 重新加载gitlab配置文件

    # gitlab-ctl reconfigure

    6) 访问验证

    在浏览器中输入"https://gitlab.lc.com/" url地址,使用liuchang用户依然可以

    登录,登录后发现项目数据都还原回来了。

    2.8 Gitlab CI/CD初探

    1 介绍

    (1) 持续集成(Continuous IntegrationCI)

    代码合并、部署、自动化测试都在一起,不断地执行这个过程,并对结果反馈。

    (2) 持续交付(Continuous DeliveryCD)

    是一种软件工程方法,让软件的产出过程在一个短周期内完成,以保障软件可

    以稳定、持续的保持在随时可以发布的状态。与持续集成相比,持续交付偏重

    点在于可交付的产物。

    (3) 持续部署(Continuous DeploymentCD)

    通过自动化部署的手段将软件频繁的交付,部署到期望的环境。

    (4) Gitlab CICD架构

    wps53 

     

    2 安装Runner

    172.16.1.121节点上操作

    安装文档:

    https://docs.gitlab.com/runner/install/linux-repository.html

     

    (1) linux服务器rpm包方式安装

    1) 安装

    # For RHEL/CentOS/Fedora

    # curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | bash

    # yum install gitlab-runner -y

    2) 注册

    # gitlab-runner register

    wps54 

    步骤描述:

    A 输入gitlab访问地址,例如https://gitlab.lc.com

    B 输入token(从gitlab管理中心->概览->Runner获取)

    C 输入描述

    D 输入标签,流水线脚本根据标签来使用runner,如果多个,例如web,deploy

    E 输入executor,这个是要用什么方式来执行脚本,输入shell

     

    注册相关命令:

    gitlab-runner register # 交互配置注册信息

    gitlab-runner list # 保存在配置文件中的所有运行程序

    gitlab-runner verify # 检查注册的runner是否可以连接

    gitlab-runner unregister --url https://gitlab.lc.com --token H73N-dpz9VLEHs7yF4JT

    # 取消已注册的runner

     

    (2) linux服务器Docker服务器安装

    1) 安装

    # docker run -d --name gitlab-runner --restart always

    -v /srv/gitlab-runner/config:/etc/gitlab-runner

    -v /var/run/docker.sock:/var/run/docker.sock

    --add-host=gitlab.lc.com:172.16.1.120

    gitlab/gitlab-runner:latest

    2) 注册(免交互)

    注意:需要在gitlab-runner容器中导入CA证书

    [root@slavenode1 ~]# docker exec -it gitlab-runner bash

    root@0050270bc606:/# gitlab-runner register

    --non-interactive

    --url "https://gitlab.lc.com"

    --registration-token "H73N-dpz9VLEHs7yF4JT"

    --description "slavenode1"

    --tag-list "web,php"

    --executor "shell"

    --run-untagged="true"

    --locked="false"

     

    wps55 

     

    3 root用户登录到gitlab对注册的runner进行解锁

    wps56 

     

    4 gitlab-runner配置免交互认证(使用容器runner测试)

    172.16.1.121节点上操作

    [root@slavenode1 ~]# docker exec -it gitlab-runner bash

    root@0050270bc606:/# su - gitlab-runner

    gitlab-runner@0050270bc606:~$ ssh-keygen

    gitlab-runner@0050270bc606:~$ ssh-copy-id root@172.16.1.121

     

    5 172.16.1.121节点上安装用于测试的nginx服务

    [root@slavenode1 ~]# yum install nginx -y

    [root@slavenode1 ~]# systemctl start nginx

    [root@slavenode1 ~]# systemctl enable nginx

     

    6 使用liuchang用户登录gitlab

    (1) dev分支下创建新文件".gitlab-ci.yml",内容如下

    stages:

    - build

    - test

    - deploy

    build:

        stage: build

        tags:

        - php

        script:

        - echo "代码编译..."

    test:

        stage: test

        tags:

        - php

        script:

        - echo "测试代码..."

    deploy:

        stage: deploy

        tags:

        - php

        script:

        - echo "部署项目..."

        - scp login.html root@172.16.1.121:/usr/share/nginx/html/

     

    流水线脚本说明:

    1) stagesCI步骤

    2) job:具体执行逻辑,例如build

    3) tagsrunner标签

    4) scriptshell命令

    5) 最后一步scp还需要runner主机与目标主

     

    wps57 

     

     

     

     

     

     

     

     

     

    (2) 提交".gitlab-ci.yml"文件后会自动触发CICD流水线

    说明:只要dev分支上有文件被修改就会触发CICD流水线脚本

    1) 流水线

    wps58 

    2) 作业

    wps59 

     

    (3) 访问nginx服务

    wps60 

     

    3 补充

    3.1 git clone指定branchtag

    0 克隆代码

    # git clone ssh://git@gitlab.lc.com:2222/product/mall.git

    # gitlab上的liuchang用户

    # cd mall

     

    1 查看branch

    # git branch -a

    * master

      remotes/origin/HEAD -> origin/master

      remotes/origin/dev

      remotes/origin/master

     

    2 使用指定branch

    # git checkout dev

    Branch dev set up to track remote branch dev from origin.

    Switched to a new branch 'dev'

     

    3 clone指定branchtag

    # git clone -b dev ssh://git@gitlab.lc.com:2222/product/mall.git

    # git clone -b dev_v1.0 ssh://git@gitlab.lc.com:2222/product/mall.git

    # 克隆tag到本地,分支名会显示"* (no branch)",但是能看到tag

    3.2 tag

    0 克隆代码

    # git clone ssh://git@gitlab.lc.com:2222/product/mall.git

    # gitlab上的liuchang用户

    # cd mall

    # git checkout dev

    # git branch

    * dev

      master

     

    1 我们可以创建一个tag来指向软件开发中的一个关键时期,比如版本号更新的时候可以建

    一个“v2.0”“v3.1”之类的标签,这样在以后回顾的时候会比较方便。tag的使用很简单,主

    要操作有:查看tag、创建tag、验证tag以及共享tag

     

    2 创建tag

    (1) 创建轻量级tag,这样创建的tag没有附带其他信息

    # git tag dev_v1.0

     

    (2) 带信息的tag-m后面带的就是注释信息,这样在日后查看的时候会很有用

    # echo "this is index html" > index.html

    # git add .

    # git commit -m "index.html"

    # git tag -a dev_v2.0 -m 'second version'

     

    (3) 共享tag

    我们在执行git push的时候,tag是不会上传到服务器的,比如现在的gitlab,创

    taggit push,在gitlab网页上是看不到tag的,为了共享这些tag,你必须

    # git push origin dev_v1.0

    或者将所有tag一次全部pushgithub

    # git push origin --tags

     

    3 查看tag

    (1) 查看tag,列出所有tag,列出的tag是按字母排序的,和创建时间没关系

    # git tag

    dev_v1.0

    dev_v2.0

     

    (2) 查看指定版本的tag

    # git tag -l 'dev_v*'

    dev_v1.0

    dev_v2.0

     

    (3) 显示指定tag的信息

    # git show dev_v2.0

    wps61 

     

    3 删除tag

    (1) 删除本地tag

    # git tag -d dev_v1.0

     

    (2) 删除gitlab远端指定tag

    # git push origin :refs/tags/dev_v1.0

     

    4 创建一个基于指定tag的分支

    # git checkout -b dev_v2.0-1 dev_v2.0

     

    5 注意(创建tag必须要在需要打tag的分支下进行,查看tag查看的是全局所有的tag(可以在任意分支下查看所有的tag))

    使用git checkout tag即可切换到指定tag,例如:git checkout dev_v1.0切换到tag历史

    记录会处在分离头指针状态,这个时候修改是很危险的,在切换回主线时如果没有合并,

    之前的修改提交基本都会丢失,如果需要修改可以尝试git checkout -b branch tag创建一

    个基于指定tag的分支,例如:git checkout -b dev_v2.0-1 dev_v2.0这个时候就会在分支

    上进行开发,之后可以切换到主线合并

    3.3 Linux发行版,存放CA证书文件的位置可能是下面这些

    /etc/pki/tls/certs/ca-bundle.crt

    /etc/ssl/certs/ca-certificates.crt

    /etc/ssl/ca-bundle.pem

    /etc/ssl/cert.pem

    /usr/local/share/certs/ca-root-nss.crt

     

    3.4 gitlab windos客户端(gitbash、海龟svn)

    wps62 

    gitbash可以通过ssh-keygen命令生成密钥对,用于和gitlab免交互ssh方式拉取代码。

    海龟svn需要url的方式拉取gitlab上的代码,由于windows上没有自签的ca证书,会

    报无法验证证书的有效性而无法拉取代码,在网上试了将自签ca证书导入到(cmd[mmc])

    "受信任的根证书颁发机构"也不行。

  • 相关阅读:
    设计模式的征途—4.抽象工厂(Abstract Factory)模式
    设计模式的征途—10.装饰(Decorator)模式
    设计模式的征途—1.单例(Singleton)模式
    设计模式的征途—5.原型(Prototype)模式
    设计模式的征途—6.建造者(Builder)模式
    OOAD利器之UML基础
    设计模式的征途—8.桥接(Bridge)模式
    设计模式的征途—3.工厂方法(Factory Method)模式
    设计模式的征途—2.简单工厂(Simple Factory)模式
    设计模式的征途—7.适配器(Adapter)模式
  • 原文地址:https://www.cnblogs.com/LiuChang-blog/p/14704138.html
Copyright © 2020-2023  润新知