docker部署gitlab,gitlab-runner

官方文檔

https://docs.gitlab.cn/jh/install/docker.html

部署環(huán)境

Windows11 wsl2 ubuntu22.04
Docker Desktop

部署gitlab

docker compose 部署

version: '3.6'
services:
  web:
    image: 'registry.gitlab.cn/omnibus/gitlab-jh:latest'
    restart: always
    hostname: 'gitlab-example'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.0.132' #關(guān)鍵字段,runner得能訪問才行
        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
    volumes:
      - '$GITLAB_HOME/config:/etc/gitlab'
      - '$GITLAB_HOME/logs:/var/log/gitlab'
      - '$GITLAB_HOME/data:/var/opt/gitlab'
    shm_size: '256m'

啟動(dòng)實(shí)際會(huì)比較久
docker compose -f docker-compose.yaml up -d
加上-d后臺(tái)啟動(dòng),不然會(huì)看到一長串的日志
啟動(dòng)后訪問 external_url:映射的port
如果是學(xué)習(xí)搭建,external_url 改成 http,不啟用https,不然會(huì)遇到很多問題:git clone失敗,git默認(rèn)校驗(yàn)證書,因?yàn)間itlab使用的是自簽證書,校驗(yàn)不通過

部署gitlab-runner

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 \ #windows wsl2沒有這個(gè)文件
  gitlab/gitlab-runner:latest

注意雖然在windows wsl2下沒有/var/run/docker.sock:/var/run/docker.sock,但似乎它已自動(dòng)確定為Windows環(huán)境中Docker Machine的路徑

上述命令中,-v /var/run/docker.sock:/var/run/docker.sock 部分將宿主機(jī)上的 /var/run/docker.sock 文件掛載到 GitLab Runner 容器內(nèi)的相同路徑。
通過這種方式,GitLab Runner 容器內(nèi)的 Docker CLI 或 Docker SDK 將能夠與宿主機(jī)上的 Docker 引擎進(jìn)行通信。

注冊runner

docker run --rm -it \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  gitlab/gitlab-runner:latest register
# 進(jìn)入容器內(nèi)部并執(zhí)行注冊命令
root@runner:~# docker run --rm -it \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  gitlab/gitlab-runner:latest register

Runtime platform                                    arch=amd64 os=linux pid=37 revision=bbcb5aba version=15.3.0
Running in system-mode.

# 填寫gitlab的地址,確保容器內(nèi)能夠順利訪問到該地址
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.0.132
# 填寫需要注冊的runner token,此處選擇shared runner token
Enter the registration token:
BHRagrsztQAxdMPPhxGm
# 描述信息隨意填寫,也可不填
Enter a description for the runner:
[caa2879d6833]: gitlab-runner-01
# tag隨意填寫,此處不填
Enter tags for the runner (comma-separated):
# 隨意填寫,此處不填
Enter optional maintenance note for the runner:

Registering runner... succeeded                     runner=BHRagrsz
# 選擇執(zhí)行器的種類,建議選擇docker
Enter an executor: docker, shell, ssh, kubernetes, custom, docker-ssh, parallels, virtualbox, docker+machine, docker-ssh+machine:
docker
# 使用最新版本
Enter the default Docker image (for example, ruby:2.7):
alpine:latest
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"

項(xiàng)目中的 .gitlab-ci.yaml 文件

stages:
  - build

build:
  stage: build
  image: golang:latest
  script:
    - export GOPROXY=https://goproxy.cn
    - go version
    - go build -o myapp main.go
  artifacts:
    paths:
      - myapp
  tags:
      - mytag   #使用標(biāo)簽將選擇標(biāo)簽匹配的runner

一些小提示

  1. .gitlab-ci.yaml stage 使用標(biāo)簽將選擇標(biāo)簽匹配的runner
  2. runner標(biāo)簽可以在gitlab上修改
  3. runner可以配置成為跑沒有標(biāo)簽的job
  4. gitlab不會(huì)主動(dòng)連接runner,所以ping不通runner沒有問題
  5. runner需要主動(dòng)連接gitlab,所以runner需要能ping通gitlab
  6. 在配置runner的gitlab地址時(shí),需要runner能夠訪問到gitlab,配置成gitlab的external_url最好
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容