jenkins遠端部署專案

1. 安裝jenkins
我使用的是docker安裝的方式, 安裝步驟: https://jenkins.io/zh/doc/book/installing/#docker
2. 配置jenkins映象的ssh金鑰
此處假設你已經成功登入進入了jenkins, 可以看到下圖介面

jenkins
好, 現在我們進入映象系統命令列中, 生成ssh金鑰
- 檢視當前執行映象的id
$ docker ps

docker ps
- 進入映象命令列
docker exec -it 你的映象ID /bin/bash

bash
可以看到, 進入了映象的bash
- 生成SSH金鑰
$ cd /root/.ssh $ ssh-keygen -t rsa -C 你郵箱 $ cat id_rsa.pub
最後一個命令後, 可以看到這串金鑰

cat id_rsa.pub
隨後我們分別去github和需要遠端連線的伺服器的服務商那配置ssh, 這玩意我就不多說了.我是一條酸菜魚
3.配置jenkins的github hook
- 進入主介面的
系統管理
image.png
-
進入系統設定
image.png
- 往下拉, 可以看到github的配置區, 這裡github外掛是前期初始化的時候自動安裝的, 沒有的可以區外掛中安裝 GitHub plugin
image.png
Add
按鈕, 新增憑據, 就是賬號密碼, 搞好後點擊連線測試, 成功即可
image.png
連線成功
- 隨後點選下面的
Advance
image.png
image.png
-
到github的專案下配置hook
image.png
image.png
image.png
4.新建一個任務

image.png

image.png

image.png
構建觸發器選擇hook觸發

image.png
shell

image.png
填入shell儲存即可

5. 現在具體分析一下shell
#!/bin/sh ssh -tt 遠端伺服器使用者名稱@遠端伺服器ip<< remotessh cd /home/tlgc_server_api /bin/git pull npm run stop npm run start exit remotessh
- 第一句, 說明這是個shell指令碼
- 第二句, 防止報錯
Pseudo-terminal will not be allocated because stdin is not a terminal.
所以給ssh
加上-tt
引數, 為了可以在遠端機器上執行命令, 需要<< remotessh
, 這裡注意, 最後兩句, 用來退出遠端機器, 不然的話, 會導致任務無法終治. - 第四句, 這裡需要使用
git
的完整路徑, 之前寫cron
的時候也遇到過, 執行bash
, 需要使用/bin/bash
, 這裡執行git
命令, 也需要完整路徑/bin/git
, 昨晚我就用git
, 然後也沒加最後兩句終治, 任務就一直卡在那,卡一晚上...
6. 最後可以測試一下, 完美

image.png
7. 總結一下
感覺還行, 雖然沒用到jenkins其他好功能, 但是適合自己的就是最好的
目前體驗過的自動化部署有
- github + docker + dockerhub
- github + docker + daocloud
- github + jenkins + ssh
- gitlab runner
以前覺得daocloud方便, 現在目前開發用的是jenkins, 看個人口味了