首页

    使用gitlab shared runner

    标签:gitlab-CI-CD,docker

    使用gitlab shared runner

    机器不够了,只有用gitlab shared runner了.
    很多时候,我们用self-hosted runner无非是需要定制环境或是担心私有代码库的隐私。其实这些是没必要的,因为

    • shared runner是以docker-in-docker模式执行, 如果需要定制环境可以以docker:stable为基础,根据需要构建一个镜像
    • 每个shared runner实例一次只运行一个job

    Each instance is used only for one job, this ensures any sensitive data left on the system can’t be accessed by other people their CI jobs.

    而dind会保证每次创建的job都是一个干净的环境

    codecov

    为了说明上面第一点,这里我想为代码库添加codecov.需要安装curl,bash.
    可以直接在script里面apk add.

    image: docker:stable
    services:
      - docker:dind
    ...
    test:
      stage: test
      script:
        - apk add --update curl bash
        - ci_env=`(curl -s https://codecov.io/env) | bash`
        - docker run $ci_env --env token=$codecov_token --network=host $BUILD_IMAGE_URL /bin/bash -c 'go test -v -race -coverprofile=coverage.txt -covermode=atomic ./... && bash <(curl -s https://codecov.io/bash) -t $token'
      tags:
        - gitlab-org-docker
    

    因为是dind模式,宿主就是docker:stable.而docker:stable是用alpine作为基础镜像的
    这就是使用docker的好处,如果没有用,就只能折腾CoreOS

    private registry

    如果私有仓库域名证书用的是let's encrypt,会报x509: certificate signed by unknown authority.google一下,有很多方法,下面这种最简单

    image: docker:stable
    services:
      - name: docker:dind
        command: ["--insecure-registry=your domain"]
    

    当然也可以用gitlab的container registry


    不定期更新