Gitlab CI 简介

作者: DongGuangqing | 来源:发表于2017-01-07 13:59 被阅读693次

    使用Gitlab CI 的好处

    代码提交到 GitLab 了,一个 commit 直接触发 CI。

    Gitlab CI 原理架构图

    Gitlab CI.png

    Gitlab Runner

    Runner一共有三种类型

    1. 本地Runner
    2. 普通的服务器上的Runner
    3. 基于Docker的Runner

    Gitlab Runner 安装: https://docs.gitlab.com/runner/install/

    注册Gitlab Runner

    • 注册 GitLab CI Runner 的基本步骤(普通服务器/本地):
    ## 下载并安装 Runner
    $ sudo wget -O /usr/local/bin/gitlab-ci-multi-runner http://ruby-china.oss-cn-hangzhou.aliyuncs.com/gitlab-ci-multi-runner-linux-amd64
    $ sudo chmod +x /usr/local/bin/gitlab-ci-multi-runner
    
    ## 为 Runner 创建 linux 用户
    $ sudo /usr/sbin/useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
    
    ## 注册 Runner(需要填写必要的 Gitlab 地址和 token)
    $ sudo gitlab-ci-multi-runner register
    
    ## 启动 Runner 
    $ sudo gitlab-ci-multi-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
    $ export PATH=$PATH:/sbin
    $ sudo gitlab-ci-multi-runner start
    
    • 在Runner 中使用Docker 镜像来运行Integration-test
    #  使用Docker 来运行Integration-test: https://docs.gitlab.com/ce/ci/docker/using_docker_images.html
    # The registered runner will use the ruby:2.1 docker image and will run two services, postgres:latest and mysql:latest, both of which will be accessible during the build process.
    gitlab-ci-multi-runner register \
      --url "https://gitlab.com/" \
      --registration-token "PROJECT_REGISTRATION_TOKEN" \
      --description "docker-ruby-2.1" \
      --executor "docker" \
      --docker-image ruby:2.1 \
      --docker-postgres latest \
      --docker-mysql latest
    
    • 注册Gitlab runner with Docker
      启动服务
    docker run -d --name gitlab-runner --restart always \
      -v /srv/gitlab-runner/config:/etc/gitlab-runner \
      gitlab/gitlab-runner:latest
    

    注册

    docker exec -it gitlab-runner gitlab-runner register
    

    查看Gitlab Runner

    在每个 GitLab Project 的 Settings -> Runners 可以看到Runners 信息

    runner.png

    开启Gitlab CI

    传统的 CI:搭建一个 Jenkins,在 Jenkins 配置好基本的环境,如 Java, Maven, Git 等等,接着开始配置任务,项目 A 的代码在哪里?怎么 Build?项目 B 的代码在哪里?怎么 Build?触发周期是多少?细节挺多的,通常需要专门的管理员去维护这个 Jenkins。

    Travis CI 颠覆了这种模式,在 Travis CI 的模式中,开发在源码根目录下放置 CI 的配置(通常是一个 yml 文件,描述了基本的 build 命令),Travis 会解析这个文件然后执行具体的 CI 任务。

    GitLab CI 实际上就是照搬了 Travis CI 的模式,它要求开发在自己需要 CI 的代码库中放一个 .gitlab-ci.yml 文件,内容如下:

    # 使用Runner 普通的Executor
    stages:
      - build
      - test
    
    job1:
      stage: build
      script: "mvn -U -DskipTests clean package "
    
    job2:
      stage: test
      script: "mvn -U clean package"
    
    # 使用Runner 的Docker Executor
    image: ruby:2.1
    services:
      - postgres
    
    before_script:
      - bundle install
    
    after_script:
      - rm secrets
    
    stages:
      - build
      - test
      - deploy
    
    job1:
      stage: build
      script:
        - execute-script-for-job1
      only:
        - master
      tags:   #tags is used to select specific Runners from the list of all Runners that are allowed to run this project.
        - docker
    

    .gitlab-ci.yml 详细配置可以见 https://docs.gitlab.com/ce/ci/yaml/README.html
    .gitlab-ci.yml脚本验证:点击Lint,进行脚本验证,参考资料http://docs.gitlab.com/ee/ci/yaml/README.html

    相关文章

      网友评论

        本文标题:Gitlab CI 简介

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