摘要:測試環境和產品環境應該使用不同的任務,因為服務會部署到不同的機器。使用部署設置時區加入程序并安裝包發布其他資料持續集成執行讀不到環境變量問題文檔
docker run -u root -itd --name jenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home jenkins
根據指導完成注冊
安裝插件。一定要安裝插件: Publish Over SSH
使用 Jenkins 做集群部署流程
client 發送編譯指令到 Jenkins Server.
Jenkins Server 從 Git repo 拉取代碼
編譯,打包
把編譯后的結果通過 ssh push 到業務服務器 server1、server2、server3
配置業務服務器安裝插件 Publish Over SSH
進入到 /configure 頁面。配置 jenknis 的私鑰,和遠程服務地址和端口等等。
特別留意Remote Directory,jenkins 推送過去的文件都會出現在這個目錄,設置遠程服務器的絕對路徑有可能無效。使用相對路徑即可。
如果有多臺機器,都在這里進行配置。另外,需要把 Jenkins 的公鑰,添加到 server1-3 的 ~/.ssh/authorized_keys。
1. ssh jenkins 宿主機 2. cat /var/jenkins_home/.ssh/id_rsa.pub 3. 把公鑰存放到 server1-3 的`~/.ssh/authorized_keys` 4. 這樣 jenkins 這臺機器就可以免密登陸到 server1-3 5. 如果 Jenkins 機器沒有 /var/jenkins_home/.ssh/,那么就通過`ssh-keygen`生成
測試機器的連接。
配置發布任務。測試環境和產品環境應該使用不同的任務,因為服務會部署到不同的機器。執行流程也可能有差異。
1.新建 FreeStyle 項目2. 配置倉庫
配置代碼倉庫,git,svn 等等都 ok
Repositories 使用 ssh 的模式。
需要把 /var/jenkins_home/.ssh/id_rsa.pub 添加到倉庫的 access_key 里面。保證 jenkins 可以免密獲取到代碼,這個是最簡單那的配置
3. 配置任務
以 node 項目為例,Jenkins shell 默認使用 非交互+非登陸式,所以獲取不到環境變量。解決辦法第一行需要寫成 #!/bin/bash -l
編譯任務都在這里完成了。
4. 發布到遠程服務器
添加一個構建后的操作,Send build artifacts over SSH
推送文件到遠程機器,在遠程機器執行備份和重啟