確認遠程伺服器和本地伺服器
需要安裝 sshpass 和 unzip, zip 這三個模組,分別安裝在:本地端 (或 Jenkins 伺服器環境)
sudo yum install sshpass
sudo yum install zip
遠端
sudo yum install unzip
傳輸部屬方式
有兩種方式可以做 ssh 的遙控,第一種是在本地端先使用 ssh-keys 建立公私鑰,把公鑰傳到遠端伺服器 ~/.ssh/authorized_keys 檔案中,確定遠端伺服器可以被控制,不過這個方法我沒有成功。
因為上述方法不成功,所以我嘗試使用 sshpass ,在 ssh 的同時,把密碼輸入進去。
按照部屬流程的話,安裝必要模組後,在組態設定的 [建置] 區,選擇 [執行 Shell] 然後把建置目錄打包起來:
zip ./publish.zip -r ./*
然後再把遠端伺服器的部屬目錄刪除:
sshpass -p '[密碼]' ssh -o StrictHostKeyChecking=no [使用者名稱]@[主機位置] rm -rf /var/www/html/**
刪除後,就可以把剛才在建置目錄打包的 .zip 檔案丟到遠端伺服器目錄:
sshpass -p "[密碼]" scp -o StrictHostKeyChecking=no ./publish.zip [使用者名稱]@[主機位置]:/var/www/html/publish.zip
然後,再遠端直接解壓縮:
sshpass -p '[密碼]' ssh -o StrictHostKeyChecking=no [使用者名稱]@[主機位置] unzip /var/www/html/publish.zip -d /var/www/html
最後再刪除 publish.zip 這個打包檔案:
sshpass -p '[密碼]' ssh -o StrictHostKeyChecking=no [使用者名稱]@[主機位置] rm -rf /var/www/html/publish.zip
錯誤
如果你碰上 ssh 連線的錯誤,像這樣:
只要再 ssh 指令後面加上 -o StrictHostKeyChecking=no 來略過錯誤的憑證,就可以了。
Git 安全性
請記得在上傳至伺服器後,把 .git 資料夾刪除或鎖定訪問權限,避免造成訪客隨意瀏覽進 .git 目錄,導致資料外洩。
Reference:
https://stackoverflow.com/questions/37735151/jenkins-build-trying-to-execute-shell-command-that-include-ssh-command
https://stackoverflow.com/questions/21259811/how-to-copy-file-from-ssh-remote-host-to-jenkins-server
http://www.cnblogs.com/zz0412/p/jenkins_jj_10.html
https://stackoverflow.com/questions/15174194/jenkins-host-key-verification-failed
http://puremonkey2010.blogspot.tw/2015/02/linux-ssh-host-key-verification-failed.html
https://wiki.jenkins.io/display/JENKINS/Publish+Over+SSH+Plugin
https://stackoverflow.com/questions/27198326/execute-shell-script-from-workspace-on-remote-machine-after-build-successful-je
https://ssorc.tw/5152
沒有留言:
張貼留言