GitLabel + Runner 实现自动化 CICD

8 篇文章 0 订阅
8 篇文章 0 订阅

        之前一篇文章,我们对 GitLab(代码管理工具) 和 Runner (自动化编译部署工具)的安装进行了讲解,如果没看,去这里 =>GItLab + Runner 安装

       这篇文章,我就将以搭建 gitbook 工具为例整个代码发布,自动化编译,部署过程记录下来。GitBook 是基于NodeJS 的一个文章发布工具。

 

代码部分:

       1,GitLab 启动后,我们创建一个项目,Git 创建项目,这里不细说了,总之,就是创建一个项目。

       2,我们 clone 代码到本地,然后在项目中进行内容编辑,我的项目结构 如下图,目录结构挺重要,否则后续编译docker镜像的时候,会有点麻烦,所以book和dockerfile是同级目录,在编译dockerfile的时候,方便copy

            

###项目说明

1,book 文件夹内所有内容,均为gitbook 书本内容
2,.gitlab-ci.yml Runner 自动化编译发布需要的配置文件
3,dockerfile 我们部署用到的dockerfile文件
### .gitlab-ci.yml 文件

variables:
  WORKSPACES: /builds/$CI_PROJECT_PATH
  DOCKER_IMAGE_NAME: gitbook
  DOCKER_CONTAINER_NAME: gitbook

image: $DOCKER_IMAGE_NAME:latest
stages:
  - deploy  

deploy:
  stage: deploy

  tags:
    - gitbook

  only:
    - master
  script:
    - docker stop $DOCKER_CONTAINER_NAME && docker rm -v $DOCKER_CONTAINER_NAME
    - docker rmi -f $DOCKER_IMAGE_NAME
    - docker build --no-cache --rm -t $DOCKER_IMAGE_NAME:latest .
    - docker run -dit --name $DOCKER_CONTAINER_NAME -p 9999:15016 $DOCKER_IMAGE_NAME:latest
### dockerfile 文件

From nodejs:8.9

WORKDIR /gitbook

COPY book /gitbook

RUN npm install -g gitbook-cli &&\
    gitbook init

CMD ["gitbook", "serve","--port","15016"]

自动化编译:

         使用Renner做自动化,要先给项目注册Renner。

### 注册过程

sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register

# 因为之前我们的 gitlab-runner 环境是在 docker 中的, 所以,我们直接使用命令进行注册就好


Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci):
URL(在GitLab 项目中进行查找)

Please enter the gitlab-ci token for this runner:
Token(在GitLab 项目中进行查找)

Please enter the gitlab-ci description for this runner:
[DESKTOP-2P9GHDD]: gitbook(描述)

Please enter the gitlab-ci tags for this runner (comma separated):
gitbook(这里就是 tags 了,通过这个标记来看是哪个执行)

Registering runner... succeeded runner=avuSXASJ Please enter the executor: docker-ssh, 
parallels, shell, ssh, virtualbox, docker+machine, docker-ssh+machine, docker:
这里是我们需要进行的CI/CD的执行者, 一般是docker 或者 shell,没什么太大区别,我使用 shell,
如果选择 docker 的话, 后面还会有一个让你输入镜像名称和版本的操作,shell会直接完成。

Runner registered successfully. Feel free to start it, but if it's running already the 
config should be automatically reloaded!
这里是完成

URL 和 Token 配图

 

         在 yum 文件中,我们可以对整个 CI/CD 生命周期进行定制(上述代码包含了编译部署),我们可以单独定制编译,可以单独定制测试或者部署,配置内容详解,去官方查看即可,这里我会解释我的配置中用到的东西。

variables: 变量的设置
image: 使用的镜像
stages: CI CD 的过程(我只有部署 deploy, 还可以 build , test 自定义 等)
deploy: 执行过程的名字
stage: CI/CD 过程类型
tags: 这里是 Runner Register 的时候设置的标记,有了它才能进行CI/CD
script: CI/CD 过程中需要的脚本
only: 代码分支,或者代码标记等,都可以

 

部署:

        不管是编译,还是测试,还是部署,其中是需要一个过程的思路的,我做的是GitBook环境,加自动化提交代码 CI/CD 过程。那么我要部署 GitBook 大概思路是,获取代码,编译,运行,那么我们一步步来结局。

        获取代码:这里其实是不用去管的,Renner会自动从 GitLab 拉取代码,在CI 整个过程中,gitlab-runner 用户(Renner会自动创建一个用户)会一直在项目代码的根目录,除非你需要代码放到其他地方去。

        编译:每个工程编译过程都不一样,node/c#/java 或者其他的工具,每种都不同,选择一款自己需要的,GitBook 有自动化编译命令 init

        部署:在上面的内容中,部署的过程是需要写入 script 标签下脚本中的,这里才是部署的真正过程,当然, 我的编译过程,也会在里面,这里是我部署的整个过程,我的代码编译放进了镜像编译的过程内,

### 停止已运行的容器 并 删除该容器
- docker stop $DOCKER_CONTAINER_NAME && docker rm -v $DOCKER_CONTAINER_NAME

### 删除原有镜像
- docker rmi -f $DOCKER_IMAGE_NAME

### 重新生成镜像(gitbook生成实在dockerfile过程中进行 init 操作的)
- docker build --no-cache --rm -t $DOCKER_IMAGE_NAME:latest .

### 启动容器
- docker run -dit --name $DOCKER_CONTAINER_NAME -p 9999:15016 $DOCKER_IMAGE_NAME:latest

dockerfile 中 gitbook init

### dockerfile 文件中 npm 安装gitbook 并 初始化init书籍(编译)
RUN npm install -g gitbook-cli && gitbook init

### 启动gitbook服务
CMD ["gitbook", "serve","--port","15016"]

这时候,我们整个过程就结束了,我们就可以通过浏览器访问自己的gitbook了

致:踩过的那些坑

可以看我的码云:去码云看看

本章到此结束

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值