zoukankan      html  css  js  c++  java
  • centos7下使用gitlab+shell实现CI/CD持续集成持续部署

                      centos7下使用gitlab+shell实现CI/CD持续集成持续部署

    流程解释:第一步ci客户端向gitlab服务器注册自己,建立通信,第二步,当项目分支代码收到变化时,自动触发yml脚本,yml脚本根据注册时带入的runner通知客户端deploy脚本更新代码,同时执行编译和部署过程,deploy脚本写代码集成相关操作,具体见下面的讲解

    CI部分

    第一步:准备三台虚拟机S,C1,C2,我这里的三台机子都是全新的,除了系统文件没有其他文件

    S:内存是4G用于装gitlab服务器 IP:192.168.95.131

    C1:内存是1G用于装gitlab-CI客户端1 IP:192.168.95.132

    C2:内存是1G用于装gitlab-CI客户端2 IP:192.168.95.133

    第二步:S上安装gitlab服务器

    安装依赖

    sudo yum install -y curl policycoreutils openssh-server openssh-clients

    sudo systemctl enable sshd

    sudo systemctl start sshd

    sudo yum install -y postfix

    sudo systemctl enable postfix

    sudo systemctl start postfix

    sudo systemctl start firewalld

    sudo firewall-cmd --permanent --add-service=http

    sudo systemctl reload firewalld

    windows下载安装包,下载地址是:

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

    并且上传至linux目录下 如/data/web-download

    cd  /data/web-download

    安装python依赖 -y的意思是所有问答都使用Y

    yum install -y policycoreutils-python

    安装 这里安装需要花一点时间,耐心等待一下

    rpm -i gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm

    出现了这个图案,代表安装完成

    安装 vim  

    yum install -y vim

    更换端口(这里写ip地址或者域名都可以,但是不能写localhost)

    vim  /etc/gitlab/gitlab.rb

    启动

    gitlab-ctl reconfigure (这里可能需要一点时间)

    重启:

    gitlab-ctl restart(这里也会可能需要一点时间,不是必须项)

    直接ip或者域名 +端口访问,如果访问不了,关闭防火墙或者防火墙开放端口

    查看防火墙状态

    systemctl status firewalld

    关闭防火墙

    systemctl stop firewalld

    再次访问 即可,第一次登陆需要重新设置密码

    新建组,新建项目

    到这里服务器已经创建好了,项目也创建好了

    第二步:C1上安装 gitlab-ci客户端

    安装 vim  

    yum install -y vim

    安装runner

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

    如果出现尝试其他镜像提示 可以ctrl+c 终止掉进程,然后更改镜像地址

    vim /etc/yum.repos.d/runner_gitlab-ci-multi-runner.repo

    将一下内容替换runner_gitlab-ci-multi-runner.repo原有的内容

    [gitlab-ci-multi-runner] 

    name=gitlab-ci-multi-runner

    baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ci-multi-runner/yum/el7

    repo_gpgcheck=0

    gpgcheck=0

    enabled=1

    gpgkey=https://packages.gitlab.com/gpg.key

    执行 yum install -y gitlab-ci-multi-runner 即可

    注册runner

    gitlab-ci-multi-runner register

    其中 urlgitlab 服务器的地址

    token是上面新建的项目token,从下图中可以获取token

    配置好后 刷新一下项目的runners,可以找到我们刚刚注册的runner,并且状态是绿色的

    如果不是绿色的 重启runner即可

    查看runner状态

    gitlab-ci-multi-runner verify

    重启所有runner
    gitlab-ci-multi-runner run

    重启单个runner
    gitlab-ci-multi-runner run-single --url http://IP:port/ --token runnerToken --executor shell

    编写 deploy文件

    gitlab-runner~/.local/bin/目录下新建deploy文件

    su gitlab-runner

    mkdir ~/.local/bin -p

    cd ~/.local/bin

    vim deploy

    复制以下内容到deploy文件

    #!/bin/bash

    if [ $# -ne 3 ]

    then

          echo "arguments error!"

          exit 1

    else

          deploy_path="/data/wwwroot/$3/$1/$2"

          if [ ! -d "$deploy_path" ]

          then

                  git clone "git@192.168.95.131:${1}/${2}.git" $deploy_path

          cd $deploy_path

                  git checkout $3

          else

                  cd $deploy_path

                  git pull

          fi

    fi

    以上脚本的意思是如果参数不是三个,打印参数错误

    如果目录没建立 git clone 并且git checkout

    如果存在 git clone

    添加脚本执行权限

    chmod +x ~/.local/bin/deploy

    切换到root身份 编辑/etc/profile文件 最末尾添加加入 path路径

    PATH="$HOME/.local/bin:$PATH"

    使文件生效

    source /etc/profile

    给gitlab-runner用户创建文件权限

    chown -hR gitlab-runner:gitlab-runner /data/wwwroot

    配置ssh登录

    su gitlab-runner

    mkdir  ~/.ssh

    cd   ~/.ssh

    ssh-keygen

    然后一直按enter

    查看id_rsa.pub文件 并复制 token

    在gitlab上创建一个runner-1用户,并将该用户添加到项目成员中(赋予该成员maintainer角色),这个runner用户是在CI客户端拉代码的,后面所有的CI客户端配置都需要用到它

    新增用户的步骤  https://blog.51cto.com/dl528888/1305656

    gitlab上,登录runner-1

    将刚刚复制的token设置到runner-1用户的ssh-keys

    创建文件 .gitlab-ci.yml test.txt ,前者用于CI解析,后者用于触发CI

    yml 内容如下

    stages:

      - deploy

    deploy1:

      stage: deploy

      tags:

        - test-runner-1

      only:

        - master

      script:

        - bash deploy java test-project master

    修改test.txt文件,查看CI 功能是否触发

    此时任务可能会报以下错误

    gitlab-runner身份下 执行以下命令

     cd ~/.local/bin

    ./deploy java test-project master

    第一次访问这个服务器的时候,有个命令行提示是要把sign添加进已知服务器列表,然后手工输入个yes

    同样的,在C2上做C1基本一致的的操作(除了基本配置一致,修改一下yml),这里不再一步一步的演示,至于单机版,就是讲CI客户端和gitlab服务端装在同一服务器上,操作基本一致,这里也不再赘述

    修改yml 文件(这里是指定两个runner并行部署)  其他均一致

     自行查看c1,cd服务器文件是否都成功修改?如果都修改了,代表CI功能实现

    CD部分

    c1,c2服务器上安装好jdk,maven,tomcat,mysql,具体可见文章:https://www.cnblogs.com/tjqBlog/p/9573459.html

    将一个常规的基于maven的spring web项目上传到gitlab服务器上,(我这里采用spring boot+mybatis的项目),

    修改yam文件如下,

    增加编译和部署生命周期

    设置编译生命周期目标

    设置部署生命周期目标

     提交修改,查看CI/CD运行轨迹,所有目标均为绿色代表CI/CD功能成功实现,

     这里的每种周期运行详情都可以点击进入查看,以下分别截图 deploy,build,ops,三个周期的详情

     

  • 相关阅读:
    Delphi 使用字符串时,一个注意地方
    Delphi 字符串 详解
    Delphi SEH研究
    Delphi 新语法之Helper
    Delphi 判断一个二进制数中有多少个1
    Delphi 数据的理解
    Delphi 对象构造浅析后续
    Delphi 关于错误E2154 Type '%s' needs finalization not allowed in variant record
    Delphi 新语法介绍之For In
    Delphi 关于错误E1038 Unit identifier '%s' does not match file name
  • 原文地址:https://www.cnblogs.com/tjqBlog/p/9556552.html
Copyright © 2011-2022 走看看