测试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
:
- 添加成员,输入
name
、Username
、Email
,修改一下权限,给这个用户一个管理员权限,后面我们需要配置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-runner
到gitlab-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
的控制台输出: