Jenkins 用法

Jenkins 是目前市面上主流的持續整合代表服務 CI (Continuous Integration) 服務之一,其前身為昇陽電腦 (Sun Microsystems) 中的 Hudson) 專案。身為一個開源專案,Jenkins 有著非常龐大的社群支持,因此 Jenkins 的更新速度也相當快。除此之外,Jenkins 也提供相當多插件來支援不同的專案開發 (e.g. Gradle, Grails, Maven, etc.),在使用上可以說是相當容易上手。

透過Docker安裝

sudo docker run -it -d \
  --rm \
  -u root \
  -p 8080:8080 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$HOME":/home \
  --name jenkins jenkinsci/blueocean

// 修正 shell 版本
sudo docker exec -it jenkins /bin/bash
ln -sf /bin/bash /bin/sh

首次啟用

假設安裝主機的IP為:10.109.10.21

  • 預設使用,透過瀏覽器輸入:http://10.109.10.21:8080/,就可以進入主畫面

若看到上面畫面,請依下列兩種方式取得密碼:

  • 非 Docker安裝,進入主機查看:/var/jenkins_home/secrets/initialAdminPassword 檔案並將內容輸入至畫面 Administrator password 即可。
  • 若是用docker安裝,請使用:docker logs containID 指令查看畫面出現的密碼後,複製下來填入畫面就可以 (或是直接vi jenkins/data/secrets/initialAdminPassword 內容)

若接下來看到這個畫面,表示jenkins主機無法連到外部網路(沒接好網路線或是位於內網需透過proxy上網),這邊因為筆者網路架構問題,所以需要透過Proxy上網,因此選擇Configure Proxy來設定ProxyIP:port以便jenkins主機能上網安裝plugin。

順利設定完Proxy後,就可以選擇plugin安裝,可以自訂安裝或是採用內建建議安裝皆可。

  • installadd user

    接下來就是:選取安裝 plugin 、建立使用者

  • 管理 Jenkins->管理外掛程式->可用的(tab)->安裝:
    • Groovy Postbuild
    • SSH plugin
    • Git Parameter Plug-In
    • GitLab Plugin
    • Pipeline Maven Integration
    • SSH Pipeline Steps
  • 系統重新開機後就可以用剛剛建立的帳號登入。

準備動作

make loginj
cd /var/jenkins_home
mkdir .ssh
chown -R jenkins .ssh
touch /var/jenkins_home/.gitconfig
chown -R jenkins /var/jenkins_home/.gitconfig
exit
ssh-keygen
tail id_rsa.pub   // 將內容貼到 Gitlab ssh keys中
進入Gitlab 點選右上角下拉選單->settings

把 id_rsa.pub 內容,貼入 SSH Keys 中後,按Add Key,完成Key新增。

建立第一個 pipeline

由於jenkins進行測試佈署時需要依據事先寫好的腳本檔(jebkins使用:Jenkinsfile當檔名)來執行,因此,我們要先學會如何撰寫 Jenkinsfile。本案例採用Go語言。

下載程式碼 -> 安裝套件 -> 執行測試

  • 點選建立新工作
建立 pipeline 專案

Docker-in-Docker 建議:

If you want to use e.g. Docker from your Jenkins CI system, you have multiple options:

  • installing the Docker CLI using your base image’s packaging system (i.e. if your image is based on Debian, use .deb packages),
  • using the Docker API.

資料來源:Using Docker-in-Docker for your CI or testing environment? Think twice.

相關套件

參考資料