上一篇介紹了使用 Jenkins 來做 CI 流程,這篇來部署到正式機或QA主機,我們會使用到 SSH Key 來讓 Jenkins 專案可以控制正式機或QA主機,並且使用更新腳本來讓主機更新.
Jenkins 創建 SSH key
ssh jenkins_domain.com
sudo su - jenkins
ssh-keygen
取得私鑰
cat ~/.ssh/id_rsa
取得公鑰
cat ~/.ssh/id_rsp.pub
Jenkins 增加 SSH 金鑰
複製 Jenkins ssh key,到主機端設定
ssh server_domain.com #登入服務主機
ssh-keygen #創建 ssh 設定檔
vim ~/.ssh/authorized_keys #貼上Jenkins ssh key #設定驗證 Key
chmod 700 ~/.ssh #設定 ssh 資料夾權限
chmod 640 ~/.ssh/authorized_keys #設定驗證key 檔案權限
測試登入是否正常
ssh account@server_domain.com
更新三步驟:
ssh account@server_domain.com 'cd project;git pull'
ssh account@server_domain.com '/home/project/ithome_pellok_2018/supenv/bin/supervisorctl -c /project/ithome_pellok_2018/supervisor.conf stop all'
ssh account@server_domain.com '/project/ithome_pellok_2018/supenv/bin/supervisorctl -c /project/ithome_pellok_2018/supervisor.conf start all'
以上是基本的專案 CI/CD 的過程,在這邊沒有用到多複雜的工作,只是把平常在做的事情都使用 Jenkins 來自動化,光是這個就可以解放很多時間,讓我有更多的時間專注在下一個可以自動化的事情上,不用一天到晚被要求要更新主機等雜事上面.做到這邊團隊已經有感覺到方便了,因為同事開發已經不用請我幫忙更新主機,只要他們寫好程式碼,提交到遠端 Bitbucket ,就會自動測試部署到測試主機,QA 人員可以馬上進行測試,而我呢就有更多的時間(偷懶).