基本概念
1、CI/CD
CI(Continuous Integradtion)持续集成,在代码完善过程中持续地进行代码的继承、构建以及自动化测试等。
CD(Continuous Delivery、Continuous Deployment)持续交互、持续部署,当代码完成后,可以方便地将新版本部署上线,这样有利于快速迭代并交互产品。
详细查看文章——什么是CI/CD
2、GitLab中的CI/CD
GitLab CI/CD是一套基于GitLab的CI/CD系统,开发人员可以通过.gitlab-ci.yml
在项目中配置CI/CD流程,在代码提交后,GitLab可以自动/手动地执行任务,完成CI/CD操作。
在完成GitLab的CI/CD系统时,需要安装gitlab
、gitlab-runner
两个应用程序。
1、安装gitlab,查看文章——Linux安装gitlab代码仓库
本文主要讲述GitLab中 CI/CD 的安装和配置。
GitLab中CI/CD相关概念
概念 | 含义 |
---|---|
pipelines管道 | 管道是持续集成、交付和部署的顶级组件,包含:任务(Jobs)和阶段(stages) |
Jobs任务 | 定义要做什么,如:编译或测试代码的作业 |
Stages阶段 | 定义何时运行作业,如:在编译代码的阶段之后运行测试代码阶段 |
任务(Jobs)是被runner执行的,当有多个runners并且同一阶段(stage)有多个任务(Jobs)时,将并行执行这些任务(Jobs)。
当一个阶段内的所有任务(Jobs)全部成功执行后,管道将执行下一个阶段(stage)的任务(Jobs);当一个阶段内的任意一个任务(Jobs)失败后,管道将停止执行。
GitLab安装和注册CI/CD
GitLab安装CI/CD
GitLab安装CI/CD的官方教程
总结如下:
# 下载到/usr/local/bin中,可以直接在控制台输入命令
wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# 分配运行权限
chmod +x /usr/local/bin/gitlab-runner
# 创建用户
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
# 安装
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# 运行
gitlab-runner start
完成上述流程后,没有发生错误即表名安装成功。
GitLab创建Runner
通过gitlab-runner register
命令进行创建Runner即可,过程如下:
1、输入gitlab的地址
2、输入gitlab中runner的token,这里在gitlab中查看,请看下面截图。
3、对runner进行描述
4、输入runner的tag
5、输入runner的操作信息
6、输入执行runner的执行器类型
截图如下:
查看token过程1:
查看token过程2:如果是admin账号登录的GitLab系统,可以输入以下网址:
http://192.168.10.150:8081/admin/runners
Runner与项目进行关联
当创建Runner时使用的token为项目token时,这一步将忽略。
当创建Runner时使用的token为gitlab的token时,将需要在页面将项目和Runner进行关联。
进入http://192.168.10.150:8081/admin/runners
关联后的项目中的runner显示:
GitLab使用CI/CD
GitLab中是通过.gitlab-ci.yml文件使用CI/CD。
.gitlab-ci.yml文件中的内容:stages(阶段定义)、variables(变量定义)、cache(缓存定义)、job(任务定义)、scripts(执行内容)等。
详情见官方文档。
stages阶段
使用阶段(stages)来定义包含任务组的阶段。在作业中使用 stage 将作业配置为在特定阶段运行。
例如:
stages:
- build
- test
- deploy
在stages阶段,表明各个job。
Jobs阶段
Jobs阶段常用的
before_script
数组类型,在script
之前运行的Linux命令。
tags
数组类型,使用标签从项目可用的所有运行器列表中选择特定运行器。
stage
该值为stages
里面的任意一个值,使用stage来定义一个job运行在哪个阶段,同一个stage的job可以并行执行
script
数组类型,使用脚本指定运行器要执行的命令。
artifacts
使用artifacts组件的作用为保存文件。
本文介绍前端项目的CI/CD,.gitlab-ci.yml
文件如下:
stages: # 定义阶段
- install
- build
- deploy
cache: # 定义缓存路径,node项目中安装的依赖路径
paths:
- node_modules
- build
install-job: # 安装作业
tags: # 与Runner保持一致
- vue-20200329
stage: install # 阶段与工作关联,即上述定义的某个阶段
script: # 定义运行的shell命令
- pwd
- npm install
build-job:
tags:
- vue-20200329
stage: build
script:
- pwd
- npm run build
only:
- master
artifacts:
paths:
- dist/
deploy-job:
tags:
- vue-20200329
stage: deploy
script:
- echo ${CI_PROJECT_DIR} # 这个路径为当前的工作目录。
- rm -rf /usr/local/nginx/html/dist
- cp -a ./dist/ /usr/local/nginx/html/
运行结果如下: