利用 Github push 驅動 Jenkins 執行 repo 指令 [Private]
更新日期:請先有辦法執行 Public repo 再進行
前文 https://progressbar.tw/notes/DevOps/225
使用 Private repo 有兩個問題
設定好就解決了
1. git clone 或是 pull 下不來
如果要讓 private 的 git repo 下來有很多種方式,最簡單的方式就是用 ssh
首先進入 linux 主機切換到使用者 jenkins (apt 安裝 jenkins 會幫你產生)
$ sudo su jenkins
回到 jenkins 使用者的家目錄
$ cd ~
使用 pwd 可以看到家目錄是 /var/lib/jenkins
直接執行 ssh-keygen,產生 id_rsa 與 id_rsa.pub
詳情可以看 [Github] 建立生成 ssh key 與 ~/.ssh/config
總之你做到有辦法 git clone private repo 以後
就可以把 https://github.com/<your_name>/<your_project_name>
改成 git@<.ssh_config_的host>:<your_name>/<your_project_name>.git
這邊記得要先執行一次 remote 查詢
git ls-remote git@<.ssh_config_的host>:<your_name>/<your_project_name>.git
因為他會問你下面這句話
The authenticity of host 'github.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxx
Are you sure you want to continue connecting (yes/no/[fingerprint])?
必須要先輸入 yes,RSA key 就會被輸入 .ssh/known_list,不然自動化會卡在這邊失敗。
執行成功的話,就表示你的設定成功了。
2. jenkins 無法跟 web_hook 溝通
設成 private 以後 jenkins 就無法跟 web_hook 溝通,他們不是單向的trigger,所以必須要在 jenkins 加上可以訪問 web_hook 的權限。
進入 Github 右上角你的帳號圖示,點擊後展開下拉,點擊 settings 這樣會進入Your profile
有個 Developer settings > 點選 Personal access tokens
點擊 Generate new token
進入後給他一個名稱
scope 點選
read:repo_hook
即可,然後產生
會出現一個值,複製他,跳出去之後就看不到了,如果忘記就只能重設一個
進入 Jenkins > Manage Jenkins > configure System
到下面找到 Github Server
Name 要用你產生 token 的那個帳號
然後要加入 token
進入後,選擇如下
secret 是 token 值
description 是 等下 credentials 會顯示的文字,填你喜歡的就可以了。
建立完了以後
選取他,然後點擊 Test connection 測試看看,如下圖出現 Credentials verified 就沒問題了。
接下來就是跟 public 的部分一樣