Docker安装Gitlab和Runner并实现CICD

作者: 阿靖哦 | 来源:发表于2019-10-04 15:05 被阅读0次

    本文详细介绍如何在Linux系统使用Docker安装Gitlab、Gitlab-Runner并实现项目的CICD

    一、安装Gitlab

    1、拉取镜像并启动

    由于服务器的80端口可能被占用,所以这里我们改成了其他端口来启动

    docker run -d -p 2443:443 -p 5678:80 -p 2222:22 --name gitlab --restart always -v/srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /src/gitlab/data:/var/opt/gitlab docker.io/gitlab/gitlab-ce
    

    2、修改配置文件

    修改gitlab.yml文件

    vim /src/gitlab/data/gitlab-rails/etc/gitlab.yml
    

    找到如下配置,修改host为你服务的IP或者域名(不能加http://),修改完毕后保存退出

    gitlab.yml.png

    修改gitlab.rb文件

    vim /srv/gitlab/config/gitlab.rb
    

    找到external_url,默认是被注释的,要打开,并填写暴露出去的http://ip:portIP一定要和gitlab.yml文件配置的相同,port为你启动时指定的,我们这里是5678,最后加上ssh协议下使用的IP和端口(这里的端口是你启动时指定的,我们这里是2222),最后保存并退出

    image.png

    停止并移除之前启动的gitlab

    # 停止
    docker stop gitlab
    # 移除
    docker rm gitlab
    

    重新启动gitlab

    这里要将容器端口改为5678

    docker run -d -p 2443:443 -p 5678:5678 -p 2222:22 --name gitlab --restart always -v/srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /src/gitlab/data:/var/opt/gitlab docker.io/gitlab/gitlab-ce
    

    二、安装Gitlab-Runner

    可以在某个项目里``settings --> CICD --> Runner进行配置,也可以在GitLab主设置页安装共享Runner,安装方法都一致

    1、拉取Runner镜像并启动

    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
    

    2、进入Runner容器内

    docker exec -it gitlab-runner bash
    

    3、运行以下命令

    gitlab-runner register
    

    输入Gitlab实例的地址

    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
    http://xxx
    

    输入token

    Please enter the gitlab-ci token for this runner
    xxx
    

    输入Runner的描述

    Please enter the gitlab-ci description for this runner
    [hostname] my-runner
    

    输入与Runner关联的标签

    Please enter the gitlab-ci tags for this runner (comma separated):
    my-tag,another-tag
    

    输入Ruuner的执行者

    Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
    docker
    

    如果上面执行者为docker,需要你在.gitlab-ci.yml中指定docker版本

    Please enter the Docker image (eg. ruby:2.1):
    alpine:latest
    

    通过以上命令后,就可以在gitlab中查看到了这个刚刚创建的runner

    runner-create.png

    4、修改Runner配置文件

    vim /srv/gitlab-runner/config/config.toml
    

    找到volumes配置,修改为如下,分别是挂载了宿主机的docker和配置Maven的缓存,提高效率

    volumes = ["/cache","/var/run/docker.sock:/var/run/docker.sock","/data/.m2/:/.m2/"]
    

    volumes配置下方增加一行配置,防止Runner重复拉取镜像

    pull_policy = "if-not-present"
    

    重启Runner即可

    docker restart gitlab-runner
    

    三、创建SpringBoot项目测试CICD

    这里就不演示如何创建项目了,不会SpringBoot的自行去学习,这里只展示.gitlab-ci.yml文件

    1、在项目根目录创建个Dockerfile

    FROM openjdk:8-jdk
    COPY target/*.jar swarm-test.jar
    EXPOSE 8000
    ENTRYPOINT ["java","-jar","swarm-test.jar"]
    

    2、项目根目录创建.gitlab-ci.yml文件

    # 因为我们Runner执行器设置为docker, 所以这里需要指定docker的版本
    image: docker:stable
    # 定义三个阶段
    stages:
      - compile
      - build
      - run
    # 定义个变量, 指定maven下载的jar包存放的位置
    variables:
      MAVEN_OPTS: "-Dmaven.repo.local=/.m2"
    # 第一阶段
    compile:
      # 打包用到了maven, 所有需要拉取maven镜像, 这是我自己构建的阿里云maven私服的maven镜像
      image: registry.cn-hangzhou.aliyuncs.com/gjing/maven:1.0
      # 指定阶段
      stage: compile
      # 运行脚本, 使用变量时要用到 $ 符号
      script:
        - mvn $MAVEN_OPTS clean package -Dmaven.test.skip=true
      # 只作用在master分支
      only:
        - master
      # 创建runner时指定的tag
      tags:
        - test
      # 编译后有产物,所以要指定下过期时间和路径, 以供于其他阶段使用
      artifacts:
        expire_in: 1 days
        paths:
          - target/*.jar
    # 第二阶段, 这里不再一一介绍, 和第一阶段差不多
    build:
      stage: build
      script:
        - docker build -t registry.cn-hangzhou.aliyuncs.com/gjing/test:1.0 .
        - docker login --username xxx --password xxx registry.cn-hangzhou.aliyuncs.com
        - docker push registry.cn-hangzhou.aliyuncs.com/gjing/test:1.0
      only:
        - master
      tags:
        - test
    run:
      stage: run
      script:
        - docker run -d --name my-test -p 8000:8000 registry.cn-hangzhou.aliyuncs.com/gjing/test:1.0
      only:
        - master
      tags:
        - test
    

    3、将项目提交到Gitlab仓库即可

    提交到仓库的master分支后,会自动执行CICD,第一次会比较慢,因为要拉取一些镜像和下载目前本地库没有的jar包,效果图如下

    cicd.png

    本文到此就结束了,有啥疑问可以在评论区评论,或者有啥更好的建议也可以在评论区说明

    相关文章

      网友评论

        本文标题:Docker安装Gitlab和Runner并实现CICD

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