美文网首页
Docker 及 GitLab CI 在前端工作流上的实践分享(

Docker 及 GitLab CI 在前端工作流上的实践分享(

作者: ccfnever | 来源:发表于2017-10-14 15:43 被阅读0次

    上一篇讲了 Docker 的使用,这篇同样通过一个简单示例,来讲讲 GitLab CI

    一、什么是 GitLab CI ?

    gitlab-ci 全称是 gitlab continuous integration,也就是基于 gitlab 的持续集成工具。中心思想是当每一次
    push到gitlab的时候,都会触发一次脚本执行,然后脚本的内容包括了测试,编译,部署等一系列自定义的内容。
    高版本的 GitLab 自带了 GitLab CI,所以不需要另外安装。

    二、什么是 GitLab-Runner ?

    GitLab-Runner 是脚本执行的承载者,GitLab-CI 事先注册好 GitLab-Runner,再 push 代码,对应的 Runner 就会执行你所定义的脚本。

    三、安装 GitLab-Runner

    Gitlab Runner安装方式有两种,一种是直接二进制文件安装,一种是基于docker镜像安装。

    二进制文件安装

    [1] 下载对应操作系统的二进制包,我这里使用的是mac版本,

    sudo curl --output /usr/local/bin/gitlab-ci-multi-runner https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-darwin-amd64
    

    [2] 给 gitlab-ci-multi-runner 设置权限

    sudo chmod +x /usr/local/bin/gitlab-ci-multi-runner
    

    以上是官方安装文档,如果有问题,可以手动到版本下载列表下载对应的版本,然后复制到/usr/local/bin/目录下 ---- 反正我是自己下载安装才能用的,泪目 T T

    [3] 注册runner
    首先,进入到你的 gitlab 项目网页,找到 Settings -> Pipelines,然后找到对应的 urltoken

    然后在终端输入

    gitlab-ci-multi-runner register
    

    然后刷新你的网页,会看到


    说明注册成功了。

    另外,我们可以通过 gitlab-ci-multi-runner list 查询你注册的runner ,用 gitlab-ci-multi-runner status 查看 runner 服务是否运行中。

    docker镜像安装

    [1] 先获取 gitlab-runner 镜像

    sudo docker pull gitlab/gitlab-runner:latest
    

    [2] 启动 gitlab-runner container

    sudo docker run -d --name gitlab-runner --restart always \
      -v /srv/gitlab-runner/config:/etc/gitlab-runner \
      -v /var/run/docker.sock:/var/run/docker.sock \
      gitlab/gitlab-runner:latest
    

    [3] 注册runner

    sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register
    
    注册过程略,方式同方式一步骤3.
    

    四、配置.gitlab-ci.yml

    GitLab CI的一切工作,都是由 .gitlab-ci.yml 来配置的。详细文档可以参考这里

    首先,在项目根目录下创建 .gitlab-ci.yml 文件(编辑完要提交到g itlab 才能生效):

    #定义 stages,用来定义工作阶段,多个 stages 会按顺序进行
    stages:
      - build
      - deploy_test
      - deploy_production
    
    # 设置缓存 
    cache:
      paths:
        - node_modules/
        - dist/
    
    # 安装依赖 before_script 会在每个 stages 执行之前运行
    before_script:
    - npm install
    
    # 编译 这里对应上方 stages ,
    build:
      stage: build 
      script:    # script 为要执行的命令,可以多条按顺序执行
        - npm run build
    
    # 部署测试服务器 
    deploy_test:
      stage: deploy_test
      only:    # only 定义触发分支,即只有在dev分支提交是  才执行以下命令
        - dev
      script:
        - bash scripts/dev.sh
    
    
    # 部署生产服务器
    deploy_production:
      stage: deploy_production
      only:
        - master
      script:
        - bash scripts/deploy.sh
    
    

    配置完成后,当你在项目 push 代码到 gitlab 的时候,就会触发 gitlab-ci,然后执行你定义的代码。
    可以在


    running 表示正在运行,passed 表示通过了。
    ps:有个容易遇到的坑,当你卡在 pending 不动的时候,可以看看你的 runner 是否设置了 '无 tag 标签也运行'
    回到你的 runner,点编辑


    然后,勾选第二项 Run untagged jobs

    运行日志可以在这里查看


    那么到这,GitLab CI 的基本使用,已经完成啦,赶快去试一下吧 :)

    参考资料:
    gitlab-runner 安装
    gitlab ci yaml 配置
    [后端]gitlab之gitlab-ci自动部署

    相关文章

      网友评论

          本文标题:Docker 及 GitLab CI 在前端工作流上的实践分享(

          本文链接:https://www.haomeiwen.com/subject/koaxuxtx.html