docker安裝gitlab-runner


一、簡介

1、GitLab-CI

GitLab-CI就是一套配合GitLab使用的持續集成系統(當然,還有其它的持續集成系統,同樣可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默認集成了GitLab-CI並且默認啟用的。

2、GitLab-Runner

GitLab-Runner是配合GitLab-CI進行使用的。一般地,GitLab里面的每一個工程都會定義一個屬於這個工程的軟件集成腳本,用來自動化地完成一些軟件集成工作。當這個工程的倉庫代碼發生變動時,比如有人push了代碼,GitLab就會將這個變動通知GitLab-CI。這時GitLab-CI會找出與這個工程相關聯的Runner,並通知這些Runner把代碼更新到本地並執行預定義好的執行腳本。

所以,GitLab-Runner就是一個用來執行軟件集成腳本的東西。你可以想象一下:Runner就像一個個的工人,而GitLab-CI就是這些工人的一個管理中心,所有工人都要在GitLab-CI里面登記注冊,並且表明自己是為哪個工程服務的。當相應的工程發生變化時,GitLab-CI就會通知相應的工人執行軟件集成腳本

二、安裝gitlab-runner

1、安裝鏡像

docker pull gitlab/gitlab-runner:v13.12.0

2、新建目錄

mkdir -p /home/apps/gitlab-runner/config

3、創建並啟動

docker run -d --name gitlab-runner \
-v /home/apps/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
--net=host \
--restart always \
--privileged=true \
gitlab/gitlab-runner:v13.12.0

三、注冊gitlab-runner

1、查看地址和token

  • 進入某一個項目

  • 設置->CI/CD->Runner->Specific runners

image

2、注冊runner

# 進入容器
docker exec -it gitlab-runner /bin/bash

# 注冊runner
gitlab-runner register

# gitlab地址
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.3.11/

# token
Enter the registration token:
XXXXX-XXXXX-XXXXX

# 輸入runner描述
Enter a description for the runner:
my-runner

# gitlab-runner標簽名稱tag
Enter tags for the runner (comma-separated):
build,deploy

# 選擇執行gitlab-runner的執行程序。因為我要用docker實現自動部署,所以輸入docker
Enter an executor: custom, docker-ssh, parallels, kubernetes, docker, shell, ssh, virtualbox, docker+machine, docker-ssh+machine:
docker

# 如果選擇docker作為執行程序,那要定義一個默認鏡像的名稱
Enter the default Docker image (for example, ruby:2.6):
alpine:latest

3、查看runner
image

四、流水線測試

1、在maven項目下新建gitlab-ci.yml文件

stages:
  - build
  - deploy
build:
  stage: build
  tags:
    - build
  only:
    - master
  script:
    - echo "mvn clean "
    - echo "mvn install"
 
deploy:
  stage: deploy
  tags:
    - deploy
  only:
    - master
  script:
    - echo "hello deploy"

2、commit提交后,就會有流水線
image
image

五、gitlab-ci.yml使用

1、什么是gitlab-ci.yml文件

  • 將.gitlab-ci.yml文件添加到存儲庫的根目錄,並將GitLab項目配置為使用Runner,則每次提交或推送都會觸發CI 管道

2、參數說明

關鍵字 描述
stages 定義流水線所有的階段,如果未定義stages,則默認有build、test、deploy三個階段
stage 定義一個作業階段(默認值:)test
script 必須參數,由runner執行的shell腳本
image 使用Docker image鏡像
services 使用Docker services鏡像
before_script 執行作業之前執行的一段shell腳本
after_script 執行完作業執行一段的shell腳本
only 限制作業在什么時候創建
except 限制作業在什么時候不創建
tags 作用使用的Runner運行器的標簽列表
allow_failure 允許作業失敗,失敗的作業不影響提交的狀態
when 什么時候運行作業
environment 作用部署的環境名稱
cache 指定需要在job之間緩存的文件或目錄
artifacts 歸檔文件列表,指定成功后應附加到job的文件和目錄的列表
dependencies 當前作業依賴的其他作業,你可以使用依賴作業的歸檔文件
coverage 作業的代碼覆蓋率
retry 作業失敗時,可以自動執行多少次
parallel 指定並行運行的作業實例
trigger 定義下游流水線的觸發器
include 作業加載其他YAML文件
extends 控制實體從哪里繼承
pages 上傳GitLab Pages的結果
retry 作業失敗時,可以自動執行多少次
variables 定義環境變量

六、gitlab-runner常用命令

1、啟動命令

gitlab-runner --debug <command>   #調試模式排查錯誤特別有用。
gitlab-runner <command> --help    #獲取幫助信息
gitlab-runner run       #普通用戶模式  配置文件位置 ~/.gitlab-runner/config.toml
sudo gitlab-runner run  # 超級用戶模式  配置文件位置/etc/gitlab-runner/config.toml

2、注冊命令

gitlab-runner register  #注冊
gitlab-runner list      #列出所有運行程序
gitlab-runner verify    #檢查注冊的runner是否可以連接。 --delete 刪除
gitlab-runner verify --delete #刪除
gitlab-runner unregister   #取消已注冊的runner

#使用令牌注銷
gitlab-runner unregister --url http://gitlab.example.com/ --token t0k3n

#使用名稱注銷(同名刪除第一個)
gitlab-runner unregister --name test-runner

#注銷所有
gitlab-runner unregister --all-runners

3、服務管理

gitlab-runner uninstall #停止運行並從服務中卸載GitLab Runner

gitlab-runner start     #啟動GitLab Runner服務

gitlab-runner stop      #停止GitLab Runner服務

gitlab-runner restart   #重啟GitLab Runner服務

gitlab-runner status    #顯示GitLab Runner服務的狀態。當服務正在運行時,退出代碼為零;而當服務未運行時,退出代碼為非零

七、參考


免責聲明!

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



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