天天看點

GitLabCI/CD 基礎入門 Runner注冊配置使用

特點

  • 開源: CI/CD是開源GitLab社群版和專有GitLab企業版的一部分。(極狐)
  • 易于學習: 官方具有詳細的學習操作文檔。
  • 無縫內建: CI/CD是GitLab的一部分,支援從計劃到部署,具有出色的使用者體驗。
  • 可擴充: 可以根據需要添加任意數量的建構節點。*(從架構上有gitlab server和gitlab runner,類似于slave建構節點)
  • 更快的結果: 每個建構可以拆分為多個作業,這些作業可以在多台計算機上并行運作。
  • 針對傳遞進行了優化: 多個階段,手動部署, 環境 和 變量。

點開一個項目就可以看到流水線的CI/CD管道資訊,包含了流水線的狀态,流水線的ID,後面就是分支,誰觸發的,流水線每個步驟的狀态。

可以看到gitlab自帶了CI/CD的功能,不需要額外的安裝。gitlab提供了完整的CI/CD功能,不要額外的安裝工具鍊來實作,如果公司的項目不是特别多,可以使用gitlab,就不需要安裝太多的工具鍊,減少運維成本。

GitLabCI/CD 基礎入門 Runner注冊配置使用

GitLab部署

GitLabCI/CD 基礎入門 Runner注冊配置使用

  版本: 14.0.0

RPM參考文檔:​​https://www.yuque.com/zeyangli/bqsigl/rgdrnw​​

## 下載下傳鏡像
docker pull gitlab/gitlab-ce:14.0.0-ce.0

## 建立資料目錄
mkdir -p /data/cicd/gitlab/{config,logs,data}
chmod 777 -R /data/cicd/gitlab/

## 運作
docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab \
--restart always \
-v /data/cicd/gitlab/config:/etc/gitlab \
-v /data/cicd/gitlab/logs:/var/log/gitlab \
-v /data/cicd/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:14.0.0-ce.0      
  • 222端口 ssh協定
  • 80端口 http端口
  • 443端口 https端口

FAQ

[root@zeyang-nuc-service ~]# git clone http://927c154cfffa/devops/demo-hello-service.git
Cloning into 'demo-hello-service'...
fatal: unable to access 'http://927c154cfffa/devops/demo-hello-service.git/': Could not resolve host: 927c154cfffa

[root@zeyang-nuc-service ~]# docker ps | grep gitlab
927c154cfffa        gitlab/gitlab-ce:13.10.0-ce.0         "/assets/wrapper"        21 minutes ago      Up 21 minutes (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:222->22/tcp   gitlab

[root@zeyang-nuc-service ~]#      

解決方法

docker exec -it gitlab bash

root@927c154cfffa:/# vi /etc/gitlab/gitlab.rb      
GitLabCI/CD 基礎入門 Runner注冊配置使用
root@927c154cfffa:/# gitlab-ctl reconfigure      
GitLabCI/CD 基礎入門 Runner注冊配置使用

GitLab Runner配置管理

gitlab是一個項目,gitlab runner也是一個單獨的項目,runner類似于Jenkins的slave節點,也是server去排程,然後配置設定作業。

  • GitLab Runner是一個開源項目,用于運作作業并将結果發送回GitLab。
  • 與GitLabCI結合使用,GitLabCI是GitLab随附的用于協調作業的開源持續內建服務。
  • GitLab Runner是用Go編寫的,可以在Linux,macOS和Windows作業系統上運作。
  • 容器部署需使用最新Docker版本。GitLab Runner需要最少的Docker v1.13.0。
  • GitLab Runner版本應與GitLab版本同步。(避免版本不一緻導緻差異化)
  • 可以根據需要配置任意數量的Runner。
GitLabCI/CD 基礎入門 Runner注冊配置使用

類型 

  • shared 共享類型,運作整個平台項目的所有作業(gitlab  點開Menu----》admin)下面可以看到在背景拿到的token基本上都是shared類型的token
GitLabCI/CD 基礎入門 Runner注冊配置使用
  • group 項目組類型,運作特定group下的所有項目的作業(group)這是注冊一個group級别的token,那麼就是這個組的runner,不能讓其他組去使用
GitLabCI/CD 基礎入門 Runner注冊配置使用
  • specific項目類型,運作指定的項目作業(project)

狀态

  • locked: 鎖定狀态,無法運作項目作業
  • paused: 暫停狀态,暫時不會接受新的作業

步驟:

  • 安裝​

    ​gitlab-runner​

    ​工具
  • 使用​

    ​gitlab-runner​

    ​​工具向​

    ​GitLab Server​

    ​注冊Runner節點。

 Runner部署包下載下傳:​​https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7-x86_64/​​

[root@gitlab-dockerhub ~]# ls
gitlab-runner-14.0.0-1.x86_64.rpm 

[root@gitlab-dockerhub ~]# rpm -ivh gitlab-runner-14.0.0-1.x86_64.rpm
warning: gitlab-runner-14.0.0-1.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 35dfa027: NOKEY
error: Failed dependencies:
   git is needed by gitlab-runner-14.0.0-1.x86_64
[root@gitlab-dockerhub ~]# yum install git -y

[root@gitlab-dockerhub ~]# rpm -ivh gitlab-runner-14.0.0-1.x86_64.rpm
warning: gitlab-runner-14.0.0-1.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 35dfa027: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:gitlab-runner-14.0.0-1           ################################# [100%]
GitLab Runner: creating gitlab-runner...
Home directory skeleton not used
Runtime platform                                    arch=amd64 os=linux pid=7771 revision=3b6f852e version=14.0.0
gitlab-runner: the service is not installed
Runtime platform                                    arch=amd64 os=linux pid=7781 revision=3b6f852e version=14.0.0
gitlab-ci-multi-runner: the service is not installed
Runtime platform                                    arch=amd64 os=linux pid=7811 revision=3b6f852e version=14.0.0
Runtime platform                                    arch=amd64 os=linux pid=7847 revision=3b6f852e version=14.0.0

Check and remove all unused containers (both dangling and unreferenced) including volumes.
------------------------------------------------------------------------------------------


Total reclaimed space: 0B


#/etc/gitlab-runner/config.toml這個為其配置檔案
[root@gitlab-dockerhub ~]# ps aux  | grep -v grep | grep runner
root      7857  0.0  0.2 151960 17388 ?        Ssl  10:27   0:00 /usr/bin/gitlab-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --user gitlab-runner      

Runner注冊配置使用

  1. 擷取GitLab位址和Runner 注冊token(和Jenkins類似,下載下傳一個通用的jar包,然後傳不同都沒密鑰資訊,就可以啟動不同的slave)現在要去找gitlab的token
GitLabCI/CD 基礎入門 Runner注冊配置使用
1ssCE2ri76RiinkMGKgj      

 注冊的時候有一系列的指令,注冊的過程是一個互動的過程,需要填一些資訊

gitlab url位址-----》token-----》備注,也就是描述資訊

标簽資訊就像Jenkins一樣

[root@gitlab-dockerhub ~]# cat /etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[root@gitlab-dockerhub ~]# gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=22183 revision=3b6f852e version=14.0.0
Running in system-mode.                            
                                                   
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://139.198.166.235:81   
Enter the registration token:
1ssCE2ri76RiinkMGKgj
Enter a description for the runner:
[gitlab-dockerhub]: devops01
Enter tags for the runner (comma-separated):
build,k8sbuild,go,java
Registering runner... succeeded                     runner=1ssCE2ri
Enter an executor: docker-ssh, virtualbox, docker-ssh+machine, shell, ssh, docker+machine, kubernetes, custom, docker, parallels:      
GitLabCI/CD 基礎入門 Runner注冊配置使用

現在還是鎖定狀态,這樣runner就注冊好了。後面就要寫執行器了,執行器概念和Jenkins類似,運作的作業,執行器就是幫我們去運作作業的,gitlab執行器有很多種,有docker類型如下:

Enter an executor: docker-ssh, virtualbox, docker-ssh+machine, shell, ssh, docker+machine, kubernetes, custom, docker, parallels:      
  • docker 類型:這時候來了一個作業,運作在docker類型的runner上面,那麼會要你輸入就像的ID,比如maven的鏡像,這個時候在運作作業的時候,就會以設定的這個鏡像起來一個容器,然後在容器裡面進行建構
  • shell 類型:執行shell指令
  • kubernetes類型:啟動一個pod

 這裡選擇shell類型執行器

Enter tags for the runner (comma-separated):
build,k8sbuild,go,java
Registering runner... succeeded                     runner=1ssCE2ri
Enter an executor: docker-ssh, virtualbox, docker-ssh+machine, shell, ssh, docker+machine, kubernetes, custom, docker, parallels:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!      

 可以看到執行器注冊好了

[root@gitlab-dockerhub ~]# gitlab-runner list
Runtime platform                                    arch=amd64 os=linux pid=26860 revision=3b6f852e version=14.0.0
Listing configured runners                          ConfigFile=/etc/gitlab-runner/config.toml
devops01                                            Executor=shell Token=Tt2yusRjFFFDPQ87Rvsd URL=http://139.198.166.235:81      
GitLabCI/CD 基礎入門 Runner注冊配置使用

檢視一下現在的狀态

Indicates whether this runner can pick jobs without tags:在運作作業的時候會配置設定一個标簽,這個标簽會指定在哪個runner上面執行,但作業沒有指定這個标簽,如果想讓其執行勾選就行了。

GitLabCI/CD 基礎入門 Runner注冊配置使用

 因為是共享類型的runner,那些作業可以使用這個runner可以在這裡啟用

gitlab-runner register \
  --non-interactive \
  --url "http://192.168.1.200/" \
  --registration-token "Bd6gzBK5evJqa9wN99Nf" \
  --executor "shell" \
  --description "buildrunner" \
  --tag-list "build,k8s,go" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"