首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >通过 Gitlab CI 完成前端自动化构建

通过 Gitlab CI 完成前端自动化构建

作者头像
奋飛
发布2021-08-30 10:34:25
发布2021-08-30 10:34:25
1.5K0
举报
文章被收录于专栏:Super 前端Super 前端

​ GitLab-CI 是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如 Jenkins)。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。

  • 项目根目录增加 .gitlab-ci.yml 文件
  • 配置一个 Runner

GitLab-Runner

​ GitLab-Runner 是配合 GitLab-CI 进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人 push 了代码,GitLab 就会将这个变动通知 GitLab-CI。这时 GitLab-CI 会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。

安装 Gitlab Runner

安装 Runner 之前,需要检查当前操作系统信息。

代码语言:javascript
复制
# 查看操作系统
$ uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
# 内核版本
$ cat /proc/version
Linux version 3.10.0-862.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Fri Apr 20 16:44:24 UTC 2018

安装:https://docs.gitlab.com/runner/install/linux-repository.html

代码语言:javascript
复制
# 第一步:添加官方仓库
$ curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

# 第二步:安装最新的Runner
$ sudo yum install gitlab-runner

# 第三步:[可选]安装指定版本 Runner
$ yum list gitlab-runner --showduplicates | sort -r
$ sudo yum install gitlab-runner-10.0.0-1

注册 Gitlab Runner

向GitLab-CI注册一个 Runner 需要两样东西:GitLab-CI的url和注册token。其中,token是为了确定你这个Runner是所有工程都能够使用的Shared Runner还是具体某一个工程才能使用的Specific Runner。如果要注册Shared Runner,你需要到管理界面的Runners页面里面去找注册token。

代码语言:javascript
复制
# 第一步:注册
$ sudo gitlab-runner register
# 第二步:输入 Gitlab 实例URL
$ Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://yourgitlab.com
# 第三步:输入Token
$ Please enter the gitlab-ci token for this runner
xxx
# 第四步:输入 Runner 描述
$ Please enter the gitlab-ci description for this runner
[hostame] my-runner
# 第五步:输入关联的tag
$ Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,fe-tag
# 第六步:输入 Runner 执行器
$ Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
shell

注册:https://docs.gitlab.com/runner/register/index.html

安装成功会默认开启,当然也可以通过命令进行启动

代码语言:javascript
复制
$ sudo gitlab-runner start 
# 或者 
$ sudo gitlab-runner run

Runners 可以是虚拟机、VPS、docker容器等,唯一要求可以访问Internet。

.gitlab-ci.yml

.gitlab-ci.yml 被 Gitlab Runner 使用,用于管理项目 Jobs,默认会有 build、test、deploy 三个阶段。其会按照顺序执行,上个stage执行成功后,才会执行下个stage。

代码语言:javascript
复制
stages:
  - build
  - test
  - deploy

job 1:
  stage: build
  script: make build dependencies

job 2:
  stage: build
  script: make build artifacts

job 3:
  stage: test
  script: make test

job 4:
  stage: deploy
  script: make deploy
  • build 的所有作业都是并行执行的;
  • build 执行成功后,执行 test,然后执行 deploy
  • deploy 成功后,则标记为成功;
  • 任意作业失败(除allow_failure: true之外),后续所以作业不再执行,则标记为失败。
代码语言:javascript
复制
stages:
  - deploy

deploy_master:
  stage: deploy
  script:
    - npm install
    - npm run build
    - sudo cp -rf dist /project-path/demo-collection/dist
  only:
    - master
  tags:
    - fe-tag

deploy_master 为 jobs名称(该名称需要具有唯一性,但不能关键词image、services、stages、types、before_script、after_script、variables cache),其必须包含 scriptscript 可以执行脚本(test.sh)或者是命令。

Keyword

Required

描述

script

定义由Runner执行的shell脚本

stage

定义Job的stage,默认为test

type

stage别名

only

定义job对应的git refs

tags

定义用于选择Runner的标记

cache

定义后续运行之间应缓存的文件列表

allow_failure

允许失败,并执行下步操作

参考地址:https://yourgitlab.com/help/ci/yaml/README.md

注意: script可以指向一个脚本,如ci/deploy_master.sh 脚本自动执行时,其用户是 gitlab-runner, 会遇到无权操作的问题,这时要把 gitlab-runner 加入root用户,并使gitlab-runner可以免密使用sudo命令,并在脚本的命令前加上sudo # 切换到root账号下 $ su # 添加sudo文件的写权限 $ chmod u+w /etc/sudoers # 编辑sudoers文件 $ vi /etc/sudoers # 添加如下内容 允许用户gitlab-runner执行sudo命令,并且在执行的时候不输入密码 gitlab-runner ALL=(ALL) NOPASSWD: ALL # 撤销sudo文件写权限 $ chmod u-w /etc/sudoers

git push 推送时,Gitlab 将查找 .gitlab-ci.yml 文件,并根据该文件的内容在 Runners 上启动该提交的 Jobs。

gitlab中 CI/CD => Pipelines => CI配置检测(CI Lint)可以检查 .gitlab-ci.yml 语法是否正确。 完整语法说明:https://yourgitlab.com/help/ci/yaml/README.md

FAQ

问: deploy 默认都执行哪些操作? 答: 获取最新提交,并切换到指定分支;然后删除 dist/node_modules/,最后执行指定脚本

代码语言:javascript
复制
Running with gitlab-runner 11.10.1 (1f513601)
  on fe-runner 1f929e69
Using Shell executor...
Running on localhost.localdomain...
DEPRECATION: this GitLab server doesn't support refspecs, gitlab-runner 12.0 will no longer work with this version of GitLab
Fetching changes...
From http://yourgitlab.com/project-name
   5ac430d..7436da8  master     -> origin/master
Checking out 7436da8c as master...
Removing dist/
Removing node_modules/
Skipping Git submodules setup
$ npm install
...
$ npm run build
...

问: gitlab-ci 生成的文件在哪里 答: .如上述生成的目录为 /home/gitlab-runner/builds/1f929e69/0/gitlab-group/demo-collection

问: gitlab-ci 日志文件在哪里 答: 如上述生成的目录为 /home/gitlab-runner/.npm/_logs/2019-04-29T09_51_27_384Z-debug.log

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GitLab-Runner
    • 安装 Gitlab Runner
    • 注册 Gitlab Runner
  • .gitlab-ci.yml
  • FAQ
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档