使用 Docker Compose 安裝 Gitlab 與 Jenkins

 紀錄使用Project Access Token 整合Gitlab 與 Jenkins 的 CI/CD

由於之後要把 gitlab 上面的 code 搬回公司但是目前自動build code 是使用 gitlab 提供的 runner來跑畢竟花錢的很多東西都不用自己建。 所以先用用 docker 在自己的電腦裡面架個 gitlab-ee 跟 Jenkins 來試試看能不能在 merge request 之後自動拉 code 跑 build.

環境

OS :  Zorin OS 16 ( Ubuntu 20.04 core)
CPU : AMD Ryzen 7 5700u
Mem:  32 GB


Docker Engine 與 Docker Compose 安裝


這邊就按照官網的安裝方式選擇Ubuntu 的作業系統來安裝就可以了。


Gitlab-ee Image

Gitlab-ee 這邊我採用 Docker Compose 撰寫 yml file 然後官方有建議要另外在 Local 給一個資料夾讓Gitlab 可以存Logs, Configuration 與 Data 因為Docker 本身是無法存資料的。由於我只是測試用所以我直接在我的Home 裡面建一個 Misc / gitlab 資料夾來給Gitlab 使用。


Gitlab 存放資料的資料夾名稱


Gitlab YML




version: '3.9'
services:
  gitlab:
    image: 'gitlab/gitlab-ee:latest'
    tty: true
    ports:
      - '443:443'          // The port redirection
      - '8000:80'          // 對外用 8000 port 轉成docker裡面的 80 port.
      - '22:22'
    container_name: gitlab
    hostname: 'gitlab.clover.com'    // 我自己取的 hostname 你可以改成你自己的
    restart: 'no'                    // 不要每次開機就自動運行 Gitlab Docker
    volumes:
      - /home/cloverhsc/Misc/gitlab/config:/etc/gitlab       // 我Local 要給 Gitlab docker存資料的位置
      - /home/cloverhsc/Misc/gitlab/logs:/var/log/gitlab     // 我Local 要給 Gitlab docker存資料的位置
      - /home/cloverhsc/Misc/gitlab/data:/var/opt/gitlab     // 我Local 要給 Gitlab docker存資料的位置


把上述的 YML 存到 docker-compose.yml 內,然後在這個檔案位置下執行 docker-compose up -d  就會看到 Docker 開始拉 Gitlab image 並且建置。然後跟著Gitlab Docker 的安裝方式找出 Password 然後用 localhost:8000 登入Gitlab.




PS : hostname 那自己去修改 /etc/hosts 的檔案加入自己想取的 hostname 與對應的ip ,否則一般預設只會有 localhost 這個domain name 會被 Browser 解析到 127.0.0.1


安裝 Docker Jenkins

這邊一樣參考Jenkins 的官網與提供的 Tutorials 的文章然後我自己做了點修改。
然後我一樣在 Misc / 下建立一個 jenkins 資料夾讓 jenkins 存一些 configuration 與 logs


所以以下是我的YML的內容。

Jenkins YML

version: '3.9'
services:
  jenkins:
    image: 'jenkins/jenkins:lts'
    tty: true
    ports:
      - '8080:8080'       // 把local 的8080對應到 image 裡面的 8080 port
      - '50000:50000'     // 把local 的50000對應到 image 裡面的 50000 port
    container_name: 'jenkins'
    hostname: 'jenkins.clover.com'   // 我自己設定的hostname 要能用記得去修改 /etc/hosts
    restart: 'no'             // 一樣不要每次開機就自動運行 Jenkins
    volumes:
      - /home/cloverhsc/Misc/jenkins:/var/jenkins_home  // 我 Local 要給 Jenkins 存資料的位置

一樣把上述的存在docker-compose.yml 然後運行 docker-compose up (不要使用 -d 因為等等會秀第一次登入的密碼)待執行一段時間後會看到一串第一次登入需要使用的密碼。


接著開啟 localhost:8080 並且使用這串亂碼來登入 Jenkins

接著按照 Tutorial 安裝必須的套件之後就把 Jenkins 裝起來了。



接著建立管理者帳號:

之後可以使用管理員帳號登入了:

這邊看你本身要不另外再建一個擁有管理者的權限帳號來使用Jenkins囉!

接著按照 Tutorial 安裝多國語言的套件。

再來參考這篇 Tutorial 安裝 Node.js 的套件可以直接使用 nodejs



這邊我是選擇 LTS的 Nodejs 版本(14.x) 你也可以使用最新的 nodejs version (16.x)來當作 Jenkins的套件,當然這個套件本身可以安裝多個不同版本的 nodejs 在 Jenkins 裡面讓不同的 task 用不同版本的 Nodejs。



這樣大致上就把 Gitlab 與 Jenkins 裝起來了。

之後可以使用 docker ps 去看 image 的運行狀況或是用 docker startdocker stop 停止服務了。

留言