Jenkins 與 Gitea 整合
Dotnet framework 的 docker image 只有 window 版本,要特別將 Docker Desktop 切換成 Windows container 才能跑,為了讓 Dotnet framework 及 Dotnet core 能同時跑在一個 CI/CD 的平台,最後選擇了 Jenkins 這位老爺爺。
必須說老爺爺的功能很強大,但也真的很不友善…很多東西一直查資料,只好寫一篇來筆記一下orz
安裝 Jenkins
Jenkins 在 Windows 的安裝方法有兩種,第一個是透過 jenkins/jenkins - Docker Image | Docker Hub,另一個是走標準安裝的方法,我選擇後者標準安裝的作法。
不使用 docker 是因為要 volumn 太多東西,反而造成自己困擾
但很建議要先體驗的朋友,先透過 docker
環境資訊
Jenkins 2.332.1 LTS
Windows 11
設定使用者
選完安裝目錄後,要指定一個使用者作為服務執行用,這邊我採用的是目前使用者。
輸入後得到一個錯誤訊息 This account either does not have the privilege to logon as a service or the account was unable to be verified,這表示帳號登入成功但沒有權限作為登入服務;官方的介紹在這 Windows (jenkins.io)。
接著要將登入的使用者加上可以登入服務的權限,打開 本機安全性原則(Security Configuration Management)
,開啟 本機原則
> 使用者權限指派
> 以服務方式登入
。
找到使用者後加入。
再次檢查使用者,可以往下一步了!
安裝 JAVA
Jenkins 需要 JAVA 的執行環境,安裝過程中會要求指定目錄,可以直接到官網下載,安裝完畢後在 Jenkins 中指向剛剛的目錄。
初始化
根據安裝時所指定的 Port ,用瀏覽器開啟網站,可以看到 Unlock Jenkins 的畫面,到紅字所描述的路徑打開檔案,將裡面的密碼複製貼上。
接著要安裝 Plugin,這邊不會建議使用官方推薦的,而改用自行挑選。
裝 Jenkins 的目的是為了要可以編譯 dotnet framework,找到 Build Tools 將 MSBuild
打勾,若還有前端則需要把 NodeJS
也打勾。
往下看到 Pipelines and Continuous Delivery,整合的目標是 Gitea 因此將 Github 的兩個選項都取消。
最後,會建議將 Locale
這個套件裝起來,可以強制看到的語系不是根據瀏覽器來決定。
都挑選完畢以後,就可以開始安裝啦。
整合 Gitea
都安裝完以後,進入系統,先來到 管理Jenkins
> 設定系統
,找到 locale 的區塊將預設語言設定為 en-us,並將下面核選方塊打勾,儲存後就可以看到系統變成英文版。
我會習慣切成英文版是為了要找資料比較方便
安裝 Gitea
接著要安裝 Gitea 的套件,在 Manage Jenkins
> Manage Plugins
> Available
搜尋 Gitea,打勾後選擇下方的 Download now and install after restart
。
安裝後回到 Manage Jenkins
> Configure System
,找到 Gitea Server
的區塊,點選 Add,將公司的 Gitea Server 資訊輸入進去。
官方建議勾選 Manage Hooks
並使用 Personal Token 的方式,Add > Jenkins 新增 Credential Provider,Kind 選擇 Gitea Personal Access Token
。
開啟 Gitea 的網站,在 設定
> 應用程式
中,產生新的 Token。
複製所產生的 Token 並且回到 Jenkins 畫面貼上,最後按下儲存。
建議使用一個公用的帳號,例如: ci,來產生 Token,才可以避免權限相關的問題,也不要有人員異動後需要重新弄得問題。
連接 Repo
呼~終於要開始整合。
回到 Jenkins 主畫面,點選 NewItem
,輸入名稱並選擇 Organization Folder
,按下 OK。
移動到 Projects 區塊,選擇 Gitea Organization
。
選擇前面所輸入的 Gitea Server 及 Credentials,Owner 輸入要納入的組織或是使用者名稱。
這邊是用自己作為設定
只要前面的所有設定都正確,系統會先掃一次整個 Owner 底下的 repo,檢查是否有 Jenkinsfile
檔案。
建立 Jenkinsfile
萬事俱備,只欠東風,現在只要建立一個 Repo,並且加上 Jenkinsfile
即可。
在個人使用者底下建立一個新的 Repo 叫做 JenkinsTest
。
在本地開一個資料夾並且新增檔案 Jenkinsfile
將下面的內容貼上,並且 commit 後 push 上去。
1 | pipeline { |
回到 Jenkins 組織的畫面,直接點選 Scan Gitea Organization Now
,讓系統重新掃描一次,看到 log 就會有剛剛建立的 repo 並且發現有 Jenkinksfile 的存在。
點選左側的 Status,就可以看到 Repo 會在右側的列表中。
點進 Repo 可以看到 Branch 及 Pull Request 的狀態。
到目前這個狀態,可以確定 Gitea 及 Jenkins 的整合成功!!
寫到這邊發現篇幅有點長了,接下來的 jenkinsfile 撰寫,就挪到下一篇囉