最近在搞gitlab 的环境以及 配套的自动化相关的一些尝试,记录一下。
为了进行最近的实验,我特意开了一台虚拟机,使用的是dell R720XD 服务器配合 exsi 虚拟化了一台 ubuntu 18.04 配置如下
在这里插入图片描述

0. 安装 gitlab

服务器的安装部分网上很多教程 就不去班门弄斧了,链接如下:

https://www.cnblogs.com/hgzero/p/14088215.html

1. 简单的登录测试一下服务器

从gitee 拉了一个项目做测试,随便挑了一个
在这里插入图片描述
然后使用 将工程克隆岛 新开的服务器上 然后是 使用vscode + remote-ssh 登录服务器 进行代码编辑。
在这里插入图片描述

jeason@jeason-virtual-machine:~$ ls
gitlab-ce_12.10.9-ce.0_amd64.deb  gitlab-runner-linux-amd64  snap  soem_-imx6ull  sonarqube-7.6  sonarqube-7.6.zip  test
jeason@jeason-virtual-machine:~$ cd test/spdlog_dyn/
jeason@jeason-virtual-machine:~/test/spdlog_dyn$ ls
1.sh  builds  cleanup.sh  CMakeLists.txt  help.txt  log.txt  main.cpp  prepare.sh  README.md  run.sh  spdlog
jeason@jeason-virtual-machine:~/test/spdlog_dyn$ pwd
/home/jeason/test/spdlog_dyn
jeason@jeason-virtual-machine:~/test/spdlog_dyn$

2. 配置 gitlab-runner

我一共使用过两种方案 一种是直接下载gitlab-runner 然后执行 运行的方法,另外的一种方法就是使用docker 然后去运行,这两种方法没什么本质的区别 docker 貌似更专业一些,但是指令上会稍微的复杂一点点。

2.1 获得工程的 runner 的 url 和 token

在这里插入图片描述
因为我只有工程的 owner 权限 不知道其他用户能不能看到 这个界面普通的 developer 权限应该是看不到的!

总之就是要拿到 项目的 url 和 token 这样就可以去配置服务器上的runner 了。
这里需要说明的一点就是 gitlab-runner 和 gitlab的服务器没必要在一个服务器上 理论上只要runner 能通过网络访问到 gitlab服务器就可以了

2.2 根据配置文件 启动 gitlab-runner

我这里就直接贴 我自己的地址和token了, 我是在自己的内网中搭建的环境并且 没有对外网开放,所以很安全。
下面的执行文件 gitlab-runner-linux-amd64 是我直接在gitlab 的官网下载的 地址是:

https://gitlab-runner-downloads.s3.amazonaws.com/latest/index.html

在下面的 文字中大量的引用了 以下文章的内容:

https://zhuanlan.zhihu.com/p/184936276

我的 runner 启动命令是:

sudo ~/gitlab-runner-linux-amd64  register -n \
    --url http://192.168.1.16/ \
    --registration-token iVmhZYWbZNyZkAoz_id3 \
    --executor shell \
    --description "bcm-executor"

对于命令的解释:

sudo                        # 给权限 好办事。。。  不给好像也能用
gitlab-runner-linux-amd64   # 下载下来的可执行文件原型
--url http://192.168.1.16/  # 这一对参数是指明你的git 工程是托管在哪一个服务器上的
--registration-token iVmhZYWbZNyZkAoz_id3 # 口令 证明你有这个工程的权限
--executor shell            # 指定你的 runner 的执行环境 shell 应该是最简单的
--description "bcm-executor"# 描述信息, 没啥大用处

关于executor
在这里插入图片描述
https://zhuanlan.zhihu.com/p/184936276
以下是我注册 我的 runner的过程,

jeason@jeason-virtual-machine:~/test/spdlog_dyn$ sudo ~/gitlab-runner-linux-amd64  register -n \
>     --url http://192.168.1.16/ \
>     --registration-token iVmhZYWbZNyZkAoz_id3 \
>     --executor shell \
>     --description "bcm-executor"
[sudo] password for jeason:
Runtime platform                                    arch=amd64 os=linux pid=33628 revision=c6e7e194 version=14.8.2
Running in system-mode.

Registering runner... succeeded                     runner=iVmhZYWb
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
jeason@jeason-virtual-machine:~/test/spdlog_dyn$ sudo ~/gitlab-runner-linux-amd64  verify &
[3] 33795
jeason@jeason-virtual-machine:~/test/spdlog_dyn$ Runtime platform                                    arch=amd64 os=linux pid=33796 revision=c6e7e194 version=14.8.2
Running in system-mode.

ERROR: Verifying runner... is removed               runner=KtyorMWG
ERROR: Verifying runner... is removed               runner=UE5zdh7N
Verifying runner... is alive                        runner=Af6ryCUd
Verifying runner... is alive                        runner=u6iirFBV
FATAL: Failed to verify runners

[3]   Exit 1                  sudo ~/gitlab-runner-linux-amd64 verify
jeason@jeason-virtual-machine:~/test/spdlog_dyn$
jeason@jeason-virtual-machine:~/test/spdlog_dyn$
jeason@jeason-virtual-machine:~/test/spdlog_dyn$

操作完之后可以看到 我的runner 已经被gitlab 发现了。
在这里插入图片描述

2.3 编写yml 文件 简单测试runner的功能

stages: # 分段
  # - install
  #- eslint
  - build
  - deploy

# cache: # 缓存
#   paths:
#     - node_modules
#     - build

# install-job:
#   tags:
#     - sss
#   stage: install
#   script:
#     - npm install

# eslint-job:
#   tags:
#     - sss
#   stage: eslint
#   script:
#     - npm run eslint

build-job:
  tags:
    - sss
  stage: build
  script:
    - echo "$(date) build" >> /home/jeason/test/spdlog_dyn/log.txt

deploy-job:
  tags:
    - sss
  stage: deploy
  script:
    - echo "$(date) deploy" >> /home/jeason/test/spdlog_dyn/log.txt

上述的内容命名为 .gitlab-ci.yml 并且上传到gitlab 然后就可以发现 我本地的 log.txt被写入了信息

在这里插入图片描述

更多的功能还待解锁。 我大致能想到的就是 可以实现一个自动发布的功能 ,每次提交之后,编译并且打包 然后自动推送到公司内部的共享盘。

后续有想法给代码进行一些简单的测试,例如 打包完之后 运行docker 然后运行qemu 仿真我们的产品运行,进而 快速的连续的测试一些接口,但是这部分的工作量可能会很大!
最近部分老大搞定了 qemu虚拟我们自己的产品,这个我也很感兴趣,等我玩会了 也要整理一下!

参考资料:
《Gitlab的安装及使用》
https://www.cnblogs.com/hgzero/p/14088215.html
《Gitlab-ci:从零开始的前端自动化部署》
https://www.cnblogs.com/hgzero/p/14088215.html
《基于 GitLab CI/CD 的自动化构建、发布实践》
https://blog.csdn.net/qq_36737839/article/details/113694367
《Install GitLab Runner manually on GNU/Linux》
https://docs.gitlab.com/runner/install/linux-manually.html

今天其实还看了一个 代码的自动审查工具,但是没了解多少东西,改天整理一下,以下的暂时没用到
《SonarQube下载、安装、使用》
https://www.jianshu.com/p/4d9d2534c0d3
Logo

更多推荐