Jenkins CI 是一套非常好的 Job 執行 Tool,可以幫忙跑專案測試,測試完成後繼續 Deploy 到相對應的伺服器,也可以自動寄信給開發者或者是指定的內部人員。在 Ubuntu 或 Debian 安裝方式非常簡單,按照下述操作就可以簡易架設完成
$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
$ sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
$ aptitude -y update
$ aptitude -y install jenkins
安裝完成預設是 8080 port 如果要改成其他 port,或許你有裝 Gitlab 你會發現 8080 已經被佔用了,請修改 /etc/default/jenkins,將 HTTP_PORT=8080 改成你想要的 port 即可。這時候請用 netstat -tanp | grep 8088 指令觀看服務是否有跑起來
服務有正確跑起來,並且 Listen 在 0.0.0.0,如果你直接用瀏覽器打開 http://your_ip:8088,就可以看到 Jenkins 首頁,完全無任何認證,任何人都可以使用此網站,當然可以啟動 Jenkins 內建的使用者認證,設定後會發現一般使者還是可以看到 detail Job,比如說誰 commit 了 code … 等等,所以這邊介紹如何搭配 Nginx 的 User Auth 機制。
首先必須先把 IP 設定成只有 Listen 127.0.0.1,避免外面的人直接打 IP:PORT 連到網站,一樣設定 /etc/default/jenkins
完成後請重新啟動 Jenkins,接著搭配 Nginx 用 Proxy 方式來導向 Jenkins 服務
server 127.0.0.1:8088 fail_timeout=0;
}
server {
listen 80;
server_name xxxx.com;
location / {
proxy_redirect off;
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwared-User $http_authorization;
proxy_max_temp_file_size 0;
if (!-f $request_filename) {
proxy_pass http://app_server;
break;
}
}
}
設定後請重新啟動 Nginx,這樣就可以直接使用 80 port 來瀏覽 Jenkins,最後搭配 Nginx Auth Module,只要在 Location 加入兩行:
auth_basic_user_file /etc/nginx/.htpasswd;
產生帳號密碼可以透過底下指令:
一樣重新啟動 Nginx 後,再度瀏覽網頁,就會跳出 popup 視窗,請你輸入密碼,這樣就可以防止任何人看到資料了。