Gitlab Runner部署

Gitlab Runner,用于代码提交后自动进行代码测试、构建服务的镜像及生成helm chart并将结果发回给Choerodon。它与GitLab CI一起使用,Gitlab CI是Gitlab中包含的开源持续集成服务,用于协调作业。

预备知识

如果你还不知道Gitlab Runner是做什么的,请参考下面链接进行学习:

方式一:一键安装Runner

如你使用一键部署安装的猪齿鱼,在同一集群中可以使用下面命令一键部署Gitlab-Runner。

  1. ./c7nctl install runner -c config.yml --version 0.23

方式二:手动安装Runner

获取Runner注册Token

此教程注册的Runner属性为共享,若需注册私有Runner或者无法进入Gitlab管理界面,注册Token请在Git项目仓库 Settings > CI/CD > Runners settings 菜单中获取。

Gitlab Runner部署 - 图1

添加choerodon chart仓库

  1. helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
  2. helm repo update

部署Runner

启用持久化存储请执行提前创建所对应的物理目录,PV和PVC可使用以下语句进行创建;可在部署命令中添加—debug —dry-run参数,进行渲染预览不进行部署。

  • 创建缓存所需PV和PVC

    1. helm upgrade --install runner-maven-pvc c7n/persistentvolumeclaim \
    2. --set accessModes={ReadWriteMany} \
    3. --set requests.storage=5Gi \
    4. --set storageClassName="nfs-provisioner" \
    5. --version 0.1.0 \
    6. --namespace c7n-system
    7. helm upgrade --install runner-cache-pvc c7n/persistentvolumeclaim \
    8. --set accessModes={ReadWriteMany} \
    9. --set requests.storage=5Gi \
    10. --set storageClassName="nfs-provisioner" \
    11. --version 0.1.0 \
    12. --namespace c7n-system
  • 部署Runner

    请确认你所搭建的K8S集群是否已开启RBAC授权(按照本站Kubernetes部署教程部署的集群默认是开启RBAC授权的),若未开启,请删除下面执行命令中的—set rbac.create=true设置后执行。

    1. helm upgrade --install runner c7n/gitlab-runner \
    2. --set rbac.create=true \
    3. --set env.concurrent=3 \
    4. --set env.gitlabUrl=http://gitlab.example.choerodon.io/ \
    5. --set env.runnerRegistrationToken=xwxobLNoPQUzyMt_4RGF \
    6. --set env.environment.CHOERODON_URL=http://api.example.choerodon.io \
    7. --set env.persistence.runner-maven-pvc="/root/.m2" \
    8. --set env.persistence.runner-cache-pvc="/cache" \
    9. --set enabled_mount_host_docker_sock=true \
    10. --version 0.2.4 \
    11. --namespace c7n-system
  • 参数:

    1. env.environment.*为CI时Pod的环境变量键值对,*就是环境变量名,等号后面的为该变量的值,这里例子中添加这几个环境变量建议配置,使用Choerodon管理的项目进行CI时会用到它们,若还需其他环境变量请自定义。
    2. env.persistence.*为CI时Pod的挂载PVC与Pod内目录的键值对,*就是PVC的名称,等号后面的值为要挂载到Pod的哪个目录,这里注意一点用引号引起来。本例中我们新建了两个PVC即runner-maven-pvcrunner-cache-pvc分别挂载到/root/.m2/cache目录中。
    参数含义
    rbac.create创建sa及授权
    env.concurrent可以同时进行的CI数量
    env.gitlabUrlGitlab地址
    env.runnerRegistrationTokenRunner注册token
    env.environment.CHOERODON_URLChoerodon API地址
    env.persistence.runner-maven-pvc持久化数据,此处runner-maven-pvc为PVC名称,值为要挂载到Pod的/root/.m2目录
    env.persistence.runner-cache-pvc持久化数据,此处runner-cache-pvc为PVC名称,值为要挂载到Pod的/cache目录
    enabled_mount_host_docker_sock是否将节点 docker.sock 文件挂载到Pod中,以便 build docker 镜像
  • 更多Runner设置请参考官方文档