Shaoli's Blog

Gitlab 前端CI/CD自动化部署

GitLab CI是开源的持续集成服务,GitLab Runner是一个开源项目,用于运作任务,并把结果发送回GitLab,它与GitLab CI一起使用。


有什么好处优势呢?

  • 维护一个代码知识库
  • 自动构建,通过一个单一指令来达成系统建构
  • 一旦代码更改好,下一个阶段应该要进行所有的测试,以确保软件开发的成果匹配预期
  • 减少冲突,一天至少提交一次
  • 每次变更必须要快速完成,如此一来便可以避免集成问题
  • 尽可能的缩小测试环境和正式环境的差距,服务虚拟化通常更容易实现这个目标
  • 尽早集成
  • 任何人都可以查看最后的建构的结果
  • 自动部署


GitLab CI是为GitLab提供持续集成服务的一整套系统。在GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。

使用GitLab CI需要在仓库跟目录创建一个gitlab-ci.yml的文件,它用来指定持续集成需要运行的环境,以及要执行的脚本。还需要设置一个gitlab-runner,当有代码push变更的时候,gitlab-runner会自动开始pipeline,并在gitlab上显示持续集成的结果。


GitLab Runner

GitLab Runner是使用Go语言编写的,可以做为一个二进制文件运行,不需要特定的语言要求,他创建了一个持续集成的的环境,所需要的程序使用Docker来安装,配置好GitLab Runner运行的环境。

GitLab Runner实际上都是docker container,由GitLab Runner来自动创建,运行的环境由GitLab Runner程序控制,使用docker来建立runner,使得每一个虚拟环境都干净,轻量,相互隔离,互不影响。


执行步骤如下:

  1. 本地代码改动
  2. 变动代码推送到GitLab上
  3. GitLab 将这个变动通知GitLab-CI
  4. GitLab-CI找出这个工程相关联的gitlab-runner
  5. gitlab-runner把代码更新到本地
  6. 根据预设置的条件配置好环境
  7. 根据预定义的脚本(一般是.gitlab-ci.yml)执行
  8. 把执行结果通知给GitLab
  9. GitLab显示最终执行的结果



下面介绍GitLab Runner的安装以及使用。


GitLab Runner安装

需要添加gitlab官方库:

# For Debian/Ubuntu/Mint
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

# For RHEL/CentOS/Fedora
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash



通过命令安装:

# MacOS
sudo brew install gitlab-ci-multi-runner

# For Debian/Ubuntu/Mint
sudo apt-get install gitlab-ci-multi-runner

# For RHEL/CentOS/Fedora
sudo yum install gitlab-ci-multi-runner


gitlab-runner 注册


首先要先获取gitlab-ci的Token:

项目主页 -> Sttings -> CI/CD -> Runners Expand



使用命令注册gitlab-runner:

sudo gitlab-runner register


  1. 输入gitlab的服务URL,参考上图里的URL
  2. 输入gitlab-ci的Toekn,获取方式参考上图
  3. 关于集成服务中对于这个runner的描述
  4. 给这个gitlab-runner输入一个标记,这个tag非常重要,在后续的使用过程中需要使用这个tag来指定gitlab-runner
  5. 是否运行在没有tag的build上面。在配置gitlab-ci的时候,会有很多job,每个job可以通过tags属性来选择runner。这里为true表示如果job没有配置tags,也执行
  6. 是否锁定runner到当前项目
  7. 选择执行器,gitlab-runner实现了很多执行器,可用在不同场景中运行构建,详情可见GitLab Runner Executors,这里选用Shell模式



好了之后,刷新页面就可以看到新增的一个Runner:




移交部署目录权限


部署目录的所有者是root,gitlab-runner并没有权限新建文件。所以我们把/home/目录的所有者交给gitlab-runner

sudo chown -R gitlab-runner:gitlab-runner /home/gitlab-runner




然后在项目中加入.gitlab-ci.yml文件


stages:
  - build

cache:
  key: ${CI_BUILD_REF_NAME}
  paths:
    - node_modules/

build:
  stage: build
  only:
    - master
  script:
    - npm install
    - npm run build
  tags: 
    - nuxt-build


提交后在git仓库页面的 CI/CD 下的 Pipelines 看到已经开始运行了

    评论列表

  • lincoln --福建省福州市

    小伙子,很好学!great.

person
0 / 16
comment
0 / 100