Gitlab CI/CD 之 Gitlab-Runner - Docker Executor


概述

Gitlab-Runner是Gitlab CI/CD的執行者,gitlab-runner又有很多種類型(就是所謂的executor):

  • SSH
  • Shell
  • Parallels
  • VirtualBox
  • Docker
  • Docker Machine (auto-scaling)
  • Kubernetes
  • Custom
    既然有這么多類型,為什么選docker呢???
Executor SSH Shell VirtualBox Parallels Docker Kubernetes Custom
Clean build environment for every build conditional (4)
Reuse previous clone if it exists conditional (4)
Runner file system access protected (5) conditional
Migrate runner machine partial partial
Zero-configuration support for concurrent builds ✗ (1) conditional (4)
Complicated build environments ✗ (2) ✓ (3) ✓ (3)
Debugging build problems easy easy hard hard medium medium medium

如上表所示,docker無疑是最佳選擇。

其實是之前一直用的shell模式,想試試docker好用不,用過之后真香

安裝

1. 准備鏡像

根據gitlab server 的版本pull對應版本的gitlab-runner的鏡像,鏡像版本號查看地址

// 鏡像版本根據自己的gitlab版本而定
sudo docker pull gitlab/gitlab-runner:v13.10.0
// docker in docker 的鏡像,根據本地的docker版本來拉去相應的版本
sudo docker pull docker:20.10.5-dind

2. 運行容器

// 創建文件夾來放配置文件以及公共的緩存文件,到時候會映射進去
sudo mkdir /var/gitlab-runner /var/gitlab-runner/config /var/gitlab-runner/.nuget /var/gitlab-runner/.m2 /var/gitlab-runner/.npm
// 運行gitlab-runner
sudo docker run -d --name gitlab-runner --restart always \
     -v /var/gitlab-runner/config:/etc/gitlab-runner \
     -v /var/run/docker.sock:/var/run/docker.sock \
     gitlab/gitlab-runner:v13.10.0

3. 注冊gitlab-runner

// 運行注冊容器
sudo docker run --rm -it -v /var/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register  -n \
   // gitlab 地址
   --url https://gitlab.com/ \
   // token
   --registration-token REGISTRATION_TOKEN \
   // executor 固定是docker
   --executor docker \
   // runner的描述
   --description "auto build image" \
   // docker in docker模式中使用的docker的鏡像,根據本地的docker的版本選擇,我本地的docker版本是20.10.5所以docker-image選的是docker:20.10.5-dind
   --docker-image "docker:20.10.5-dind" \
   --docker-volumes /var/run/docker.sock:/var/run/docker.sock
   // .net nuget 包全局緩存
   --docker-volumes /var/gitlab-runner/.nuget:/root/.nuget
   // java maven 包全局緩存
   --docker-volumes /var/gitlab-runner/.m2:/root/.m2
   // js npm 包全局緩存
   --docker-volumes /var/gitlab-runner/.npm:/root/.npm

執行完成后關閉容器即可。

4. 重啟gitlab runner

sudo docker restart gitlab-runner

成功后會在/var/gitlab-runner/config目錄下生成一個config.toml,並且在gitlab的Admin Area -> Runners界面看到注冊成功的runner.
大功告成!!!
參考網址:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM