快轉到主要內容

[DevOps] 自架Gitlab以及Gitlab Runner跑CI/CD

·187 字·1 分鐘
Wilson Lin
作者
Wilson Lin
A little bit about you

前言
#

Docker Compose
#

services:
  gitlab:
    image: gitlab/gitlab-ce:latest
    container_name: gitlab
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        # 讓網頁上的 Clone 連結的ip顯示正確
        external_url 'http://<區網ip>:12080'

        nginx['listen_port'] = 80
        nginx['listen_https'] = false

        # 讓網頁上的 Clone 連結的ssh port顯示正確
        gitlab_rails['gitlab_shell_ssh_port'] = 12022

        prometheus_monitoring['enable'] = false
    ports:
      - "12080:80"
      - "12443:443"
      - "12022:22" # ssh改12022,避免衝突
    volumes:
      - /path/to/your/volume/gitlab/gitlab-config:/etc/gitlab
      - /path/to/your/volume/gitlab/gitlab-logs:/var/log/gitlab
      - /path/to/your/volume/gitlab/gitlab-data:/var/opt/gitlab
    shm_size: '256m'
    networks:
      - gitlab-network

  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    container_name: gitlab-runner
    restart: always
    depends_on:
      - gitlab
    volumes:
      - /path/to/your/volume/gitlab/gitlab-runner-config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - gitlab-network

networks:
  gitlab-network:
    driver: bridge

預設創建了root帳號,預設密碼可以用以下指令查詢

sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

註冊 Runner
#

取得Gitlab Runner Token
#

打開Gitlab網頁,登入管理員帳號,進入 Admin Area > CI/CD > Runners > Create instance runner

Tags輸入docker然後就可以Create runner

就會跳轉到下一個頁面,裡面就有一個Token,把它複製起來

設定 gitlab-runner
#

docker exec -it gitlab-runner gitlab-runner register

進入互動問答:

  • GitLab instance URL:按照上面設置填入Gitlab Server的URL即可(port也要對,這邊是12080)
  • Registration token:剛剛透過Gitlab Admin網頁產生的token
  • Executor:選擇docker
  • Tags:docker
  • Default Docker Image:docker:stable

修改 Runner 設定以支援Docker-out-of-Docker (DooD)
#

編輯宿主機上的/path/to/your/volume/gitlab/gitlab-runner-config/config.toml

[[runners]]
  # ... 其他設定 ...
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "docker:stable"
    privileged = true       # 【重要】改成 true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    # 【重要】掛載 socket,讓 Job 容器也能呼叫宿主機 Docker
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]

然後

docker restart gitlab-runner

設定完後回到gitlab網頁中應該就可以看到燈號變成綠色的了

最終效果
#