Gitlab CI/CD Runner

Posted 芒果牛奶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gitlab CI/CD Runner相关的知识,希望对你有一定的参考价值。

Install Gitlab Runner from docker


https://docs.gitlab.com/runner/install/
https://docs.gitlab.com/runner/install/docker.html

docker pull gitlab/gitlab-runner:latest

docker run --rm -t -i gitlab/gitlab-runner --help


 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



Docker register runner

 <code>

docker run --rm -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=6 revision=6946bae7 version=12.0.0
Running in system-mode.                            
                                                   
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://gitlab.hydrasrv.com/

Please enter the gitlab-ci token for this runner:
xxx-xxx-xxxx

Please enter the gitlab-ci description for this runner:
[1ef5c4135b38]: docker runner for k8s deploy

Please enter the gitlab-ci tags for this runner (comma separated):
Docker Runner K8s Deploy

Registering runner... succeeded                     runner=79epxeRm

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

Please enter the default Docker image (e.g. ruby:2.6):
gitlab/gitlab-runner:latest

Runner registered successfully. Feel free to start it, but if it\'s running already the config should be automatically reloaded! 

 </code>


gitlab-ci.yml
<code>
stages:
  - build_image
  - push_image_tag_job
  - push_image
  - update_k8s_image

variables:
  DOCKER_DRIVER: overlay2
  GIT_SUBMODULE_STRATEGY: recursive
  IMAGE_NAME: $REGISTRY_ADDRESS/$REGISTRY_NAMESPACE/$CI_PROJECT_NAME
  

build_image_job:
  stage: build_image
  tags:
    - build-images
  script:
    - CI_COMMIT_SHORT=`echo $CI_COMMIT_SHA|head -c 8`
    - ls -AF|grep \'^\\.\' > .dockerignore
    - docker build -t $IMAGE_NAME:$CI_COMMIT_SHORT .
  only:
    - staging
    - tags

push_image_tag_job:
  stage: push_image_tag_job
  tags:
    - build-images
  script:
    - CI_COMMIT_SHORT=`echo $CI_COMMIT_SHA|head -c 8`
    - docker tag  $IMAGE_NAME:$CI_COMMIT_SHORT $IMAGE_NAME:$CI_BUILD_REF_NAME
    - docker login -u "$REGISTRY_USERNAME" -p "$REGISTRY_PASSWORD" $REGISTRY_ADDRESS
    - docker push $IMAGE_NAME:$CI_BUILD_REF_NAME
    - docker rmi $IMAGE_NAME:$CI_BUILD_REF_NAME
  only:
    - tags

push_image_job:
  stage: push_image
  tags:
    - build-images
  script:
    - CI_COMMIT_SHORT=`echo $CI_COMMIT_SHA|head -c 8`
    - docker login -u "$REGISTRY_USERNAME" -p "$REGISTRY_PASSWORD" $REGISTRY_ADDRESS
    - docker push $IMAGE_NAME:$CI_COMMIT_SHORT
    - docker rmi $IMAGE_NAME:$CI_COMMIT_SHORT
  only:
    - staging

update_k8s_image_job:
  stage: update_k8s_image
  tags:
    - kubeapi-runner
  script:
    - CI_COMMIT_SHORT=`echo $CI_COMMIT_SHA|head -c 8`
    - kubectl -n bigtwo set image statefulset -l app=webonline webonline=$IMAGE_NAME:$CI_COMMIT_SHORT
  only:
    - staging
</code>

以上是关于Gitlab CI/CD Runner的主要内容,如果未能解决你的问题,请参考以下文章

GitLab Runner CI/CD 中用户模式和系统模式之间的区别

Gitlab-CI/CD

Gitlab CI/CD 之 Gitlab Runner Docker Executor 缓存问题

gitlab 的 CI/CD 配置管理

Gitlab搭建以及CI/CD

Gitlab CI/CD自动部署方案探索