進度條

利用 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 的部分一樣