• 测试GitLab-CI环境搭建


    GitLab-CI环境搭建

    欢迎加入测试交流群:夜行者自动化测试(816489363)进行交流学习QAQ

    成都-阿木木

    现在的中高级自动化测试,测试开发工程师等招聘需求上都有写,需要会CI/CD,你真的会搭建吗?测试CI/CD环境搭建,常见的环境有两种:

    • jenkins
    • gitlab-ci

    本专题为gitlab-ci环境搭建专题

    安装gitlab环境,gitlab我们在实际使用过程中,代码通过git提交到gitlab私有仓库,然后通过gitlab-runner运行我们的脚本,根据脚本的结果决定是否发送测试报告到相关负责人的邮箱。本次gitlab环境的搭建使用docker进行搭建,建议有一些docker基础知识的了解在看本教程。在一般测试工作中,gitlab环境通常是由运维提供,提供一个gitlab-runner给我们,我们只需要写好ci脚本即可。

    搭建过程如下:

    • 选择一台centos服务器(内存不小于4G)安装docker环境(其他服务器也可以,详情查看docker官方支持)安装教程

    • 安装docker-compose安装教程

    • 可选操作(修改国内下载镜像源,可以使用阿里云提供的镜像加速服务,不然下载会很慢)修改教程

    • 拉取gitlab-ce官方镜像,使用docker search gitlab,搜索最新的gitlab-ce,使用docker pull 拉取,我之前已经拉取过了,不在重新拉取

      • [root@chineseluo docker-compose-gitlab-ce]# docker search gitlab
        NAME                                         DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
        gitlab/gitlab-ce                             GitLab Community Edition docker image based …   3027                                    [OK]
        
        
      • [root@chineseluo docker-compose-gitlab-ce]# docker pull gitlab/gitlab-ce
        
      • 拉取成功之后,使用docker images 可以查看到你拉取的镜像

      • [root@chineseluo config]# docker images | grep gitlab-ce
        gitlab/gitlab-ce                      latest              3494787883fd        6 days ago          1.92GB
        
    • 新建一个目录,用于存放docker-compose.yml文件,我在此处新建了一个docker-compose-gitlab-ce的文件夹,然后新建了一个docker-compose.yml文件,在里面写入如下内容:

        web:
          image: 'gitlab/gitlab-ee:latest'
          restart: always
          hostname: 'gitlab.example.com'
          environment:
            GITLAB_OMNIBUS_CONFIG: |
              external_url 'http://gitlab.example.com:8929'
              gitlab_rails['gitlab_shell_ssh_port'] = 2224
          ports:
            - '8929:8929'
            - '2224:22'
          volumes:
            - '$GITLAB_HOME/config:/etc/gitlab'
            - '$GITLAB_HOME/logs:/var/log/gitlab'
            - '$GITLAB_HOME/data:/var/opt/gitlab'
      

      然后在该目录下使用docker-compose up -d命令,等待执行完,通过浏览器访问你的服务器地址+端口8929即可
      在这里插入图片描述
      输入密码和确认密码,这个密码是超级管理员密码,设置完成后,超管的账号密码为:root 和你设置的密码,登录
      在这里插入图片描述
      在这个面板中,有几个主要的功能:

      • Unlock more features with GitLab Ultimate:其他GitLab的付费功能,不关注
        • Create a project:创建项目,用来存储代码,访问问题,Wiki和其他功能
        • Create a group:建立群组,赋予群组成员不同的访问权限
        • add people:增加成员
        • Configure GitLab:配置GitLab

      到这里gitlab搭建的第一阶段就算完成了

    使用gitlab

    • 添加成员,输入nameUsernameEmail,修改一下权限,给这个用户一个管理员权限,后面我们需要配置gitlab-runner等操作。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • 由于我是在内网自己搭建的gitlab服务,邮箱发送不出去,所以,我们需要使用root用户修改一下我们新增用户的密码,可以设置简单一些,因为新用户登录会需要重置密码
      在这里插入图片描述
      在这里插入图片描述
    • 使用新添加的用户登录,登录进去之后修改密码,然后使用修改后的密码登录
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    安装配置gitlab-runner

    • 点击Configure GitLab

    在这里插入图片描述

    • 点击Overview下面的Runners
      在这里插入图片描述

    • 可以自行点击Install GitLab Runner中不同的Runner的安装方式,本文采用docker安装

    在这里插入图片描述

    • 安装runner过程:

      • gitlab-ce的服务器上或者其他安装了docker环境的服务器上,docker search gitlab-runner

        [root@chineseluo docker-compose-gitlab-ce]# docker search gitlab-runner
        NAME                                         DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
        gitlab/gitlab-runner                         GitLab CI Multi Runner used to fetch and run…   634                                     [OK]
        
        
      • 拉取gitlab-runner镜像:

        docker pull gitlab/gitlab-runner
        
      • 设置两个目录作为gitlab-runner的服务器本地存储映射,两个目录分别为/srv/gitlab-runner/config/var/run/docker.sock,然后执行以下docker命令

        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 
        >      gitlab/gitlab-runner:latest
        
      • 使用docker ps | grep gitlab-runner查看容器是否运行

        [root@chineseluo config]# docker ps | grep gitlab-runner
        061920a459bc        gitlab/gitlab-runner:latest   "/usr/bin/dumb-init …"   About a minute ago   Up 58 seconds  
        
      • 注册gitlab-runnergitlab-ee中,执行以下命令

        docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
        
      • 输入命令后回车会让你输入一些注册信息,下面稍微说明一下:

        [root@chineseluo config]# docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
        Runtime platform                                    arch=amd64 os=linux pid=6 revision=738bbe5a version=13.3.1
        Running in system-mode.
        
        Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
        http://10.5.51.58:8929/	#输入您的GitLab实例URL(也称为gitlab-ci coordinator URL)。
        Please enter the gitlab-ci token for this runner:
        74NyvCweRVcVfYdD6CVw	#输入您获得的令牌以注册跑步者。
        Please enter the gitlab-ci description for this runner:
        [c916f369ceeb]: tester	#输入跑步者的描述。您可以稍后在GitLab的用户界面中更改此值。
        Please enter the gitlab-ci tags for this runner (comma separated):
        runner-test	#输入与Runner关联的标签,以逗号分隔。您稍后可以在GitLab的用户界面中更改此值。
        Registering runner... succeeded                     runner=74NyvCwe
        Please enter the executor: custom, docker, parallels, ssh, virtualbox, docker-ssh+machine, docker-ssh, shell, docker+machine, kubernetes:
        docker	#提供跑步者执行者。对于大多数用例,请输入 docker。
        Please enter the default Docker image (e.g. ruby:2.6):
        
        Please enter the default Docker image (e.g. ruby:2.6):
        python	#输入执行你脚本的docker容器
        Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
        
        
      • 刷新web界面,查看Overview下的Runners,多了新添加的Runner
        在这里插入图片描述

      • 修改runner的运行时间,点击edit小图标,修改时间之后保存
        在这里插入图片描述

    • 指定gitlab-runner运行的容器,我们在之前制定了runner运行的容器为python容器,我们需要执行以下命令将python的镜像拉取下来

      docker pull python
      
    • 要通过gitlab运行我们的python脚本,必须要在我们的脚本中添加一个.gitlab-ci.yml文件,在其中设置好运行作业、阶段、作业前执行的脚本、作业执行后的脚本等简单介绍一下几个常用关键词,具体学习查看官网

      • 新建作业(job)
      • 定义阶段(stage)
      • 允许失败(allow_failure)
      • 人工触发(when:manual)
      • 作业运行前执行脚本(before_script)
      • 作业运行后执行脚本(after_script)

      写一个简单的.gitlab-ci.yml

      image: python
      stages:
        - test
      test_runner:
        stage: test
        script:
          - python run.py
        only:
          - master
      
    • 环境已经基本搭建完成了,剩下来要做的就两个步骤,一个是在我们的gitlab中创建一个git项目,第二步是将我们的脚本和.gitlab-ci.yml上传到这个仓库,上传脚本到仓库的步骤不演示,在脚本目录,git init之后,git remote origin 远程仓库地址即可。

      在上传我们的脚本拿到gitlab仓库时会发现连接拒绝,这是因为我们在/usr/gitlab_dir/config/girlab.rb文件中的external_url配置的是http://gitlab.example.com需要修改为本地docker环境的iP:端口,然后docker restart这个gitlab容器即可。
      在这里插入图片描述
      在这里插入图片描述
      测试脚本run.py:

      #!/user/bin/env python
      # -*- coding: utf-8 -*-
      
      """
      ------------------------------------
      @Project : gitlab-runner-test
      @Time    : 2020/9/3 15:27
      @Auth    : chineseluo
      @Email   : 848257135@qq.com
      @File    : run.py
      @IDE     : PyCharm
      ------------------------------------
      """
      
      
      def print_test_info():
          for i in range(0, 20):
              print("***************************")
              print("开始GitLab-Runner测试结果输出")
              print("这是成都-阿木木的测试环境搭建小课堂")
              print("各位童鞋,下课")
              print("***************************")
      
      
      if __name__ == '__main__':
          print_test_info()
      
      
    `.gitlab-ci.yml`
      
      ~~~yaml
      image: python
      stages:
        - test
      test_runner:
        stage: test
        script:
          - python run.py
        only:
          - master
    

    .gitignore(这个文件的作用是忽略上传某些目录到git上面)

    .idea
    

    提交代码到仓库后,可以看到runner的控制台输出:

    在这里插入图片描述

  • 相关阅读:
    Vue组件以及组件之间的通信
    VueRouter和Vue生命周期(钩子函数)
    Vuex、axios以及跨域请求处理
    element-ui和npm、webpack、vue-cli搭建Vue项目
    2018PyCharm激活方法
    pycharm修改选中字体颜色
    为自己的博客园添加目录锚点和返回顶部
    python初识
    JAVA判断当前日期是节假日还是工作日
    springmvc使用freemarker
  • 原文地址:https://www.cnblogs.com/chineseluo/p/13710212.html
Copyright © 2020-2023  润新知