gitblit是當作git伺服器,也就是作為私有的代碼倉庫,用法類似於Github Jenkins 是自動構建工具,幫忙將倉庫中的代碼更新到伺服器上。可以設置為定時自動構建。 詳細摸索了我現在公司的用法, 先簡單描述下工作過程: 平常我們寫好代碼之後,會git push到倉庫,然後到 Jenkins ...
gitblit是當作git伺服器,也就是作為私有的代碼倉庫,用法類似於Github
Jenkins 是自動構建工具,幫忙將倉庫中的代碼更新到伺服器上。可以設置為定時自動構建。
詳細摸索了我現在公司的用法, 先簡單描述下工作過程:
平常我們寫好代碼之後,會git push到倉庫,然後到 Jenkins 上點一下,手工執行了一下項目的構建,然後Jenkins讓伺服器執行了Shell腳本,
shell腳本執行了git checkout . 以及git pull , 以及重啟相關服務等。
## ------------ 安裝 gitblit ------------------------------------- # 前提:裝好JDK, 以及依賴 yum install git yum install -y gcc-c++ curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel # 到此處下載gitblit 我下載的1.8.0 # http://dl.bintray.com/gitblit/releases/ # 放到 centos 某文件夾, cd /opt tar zxf gitblit-1.8.0.tar.gz cd gitblit-1.8.0/data # 可以看到幾個配置文件. defaults.properties 擁有全部配置項 # 在gitblit.properties中添加配置,用來覆蓋 defaults.properties 中的預設值 git.repositoriesFolder = ${baseFolder}/git # 倉庫位置 server.httpPort = 80 # http埠 server.httpsPort = 8443 # https埠 server.httpBindInterface = # 不寫則所有地址 server.httpsBindInterface = # 不寫則所有地址 # 回到 gitblit 目錄, 執行 nohup ./gitblit.sh & # 後臺運行 # netstat -nltp 檢查一下埠和進程 # 瀏覽器訪問一下這台機器的功能變數名稱試試吧。 # 進入管理頁面的操作很簡單,就是創建用戶,版本庫之類的,對git客戶端的支持, # 基本上和Github 一樣
# gitblit操作部分可參考:https://www.cnblogs.com/kevingrace/p/5575348.html
#-------------------------- Jenkins ------------------------------------ # 下載LTS版 如2.138.1 https://jenkins.io/download/ 選擇OS版本,或者 .war # 將其放入 tomcat/webapps中,或者Linux的某文件夾, 例如: cd /opt java -jar jenkins.war # 等待運行成功 顯示 管理密碼 複製 # 之後建議後臺運行 nohup java -jar jenkins.war >> jenkins.log & # 瀏覽器訪問 http://此機器所在功能變數名稱:8080 # 按照頁面提示,輸入管理密碼,繼續安裝,選擇需要的組件,繼續。等待安裝成功後, # 創建管理員賬號,開始使用 ## Jenkins集成git ## git的通信協議 ## Git 可以使用四種主要的協議來傳輸數據:本地傳輸,SSH 協議,Git 協議和 HTTP 協議。 ## (Ps:HTTP 協議外,其他所有協議都要求在伺服器端安裝並運行 Git)
#------------------------- 例:自動部署Node.js的程式------------------------ # jenkins 通過SSH執行遠程主機上的shell腳本,shell執行 git pull 並重啟服務 # 1. Jenkins先在 系統管理 系統設置中,找到SSH remote hosts,添加hostname,port,credentials, # 2. Check connection 測試連接成功, 保存並回到主界面 # 3. Jenkins創建一個自由風格的軟體項目,構建,增加構建步驟 # 4. 選擇 Execute shell script on remote host using ssh # 5. SSH site 中選擇第1步創建的連接,Command 中貼上需要執行的腳本: export BUILD_ID=dontKillMe /opt/scripts/deploy_server_v2.sh # 腳本 deploy_server_v2.sh 內容: cd /opt/apps/screen_server/ git checkout . git pull /opt/node/bin/npm install /opt/node/bin/forever stop server_3rd.js /opt/node/bin/forever start -l /opt/logs/screen_server_3rd.log -a server_3rd.js # 6. 保存,回到項目界面,點擊 立即構建 等待結果 # 結果出錯,點擊錯誤信息,進入 狀態集,點擊Console Output, 發現如下錯誤: [SSH] executing... /usr/bin/env: node: No such file or directory /usr/bin/env: node: No such file or directory /usr/bin/env: node: No such file or directory # 解決辦法:在腳本目標主機為node程式建立個軟鏈接 ln -s /opt/NODEJS_HOME/bin/node /usr/bin/node ### 分步執行shell 發現 git中報unable to auto-detect email address 錯誤 ### 解決辦法:進入項目目錄 .git文件夾,編輯 config 文件,增加: [user] email=your email name=your name
#------------------------- 再看個java war包的示例 ------------------------ # Jenkins 構建仍是Execute shell , Command內容: export BUILD_ID=dontKillMe /opt/scripts/deploy_v2_screen_api.sh # 腳本 deploy_v2_screen_api.sh 內容: cd /opt/product/config/screen_api/v2/ git checkout . git pull cd /opt/product/code/screen_api_v2/ git checkout . git pull #rm -rf /opt/product/code/screen_api_v2/target/screen_api_v2.war cp -f /opt/product/config/screen_api/v2/application.yml /opt/product/code/screen_api_v2/src/main/resources/ #rm -rf /opt/product/code/screen_api_v2/target/ /opt/maven/bin/mvn clean /opt/maven/bin/mvn -Dfile.encoding=UTF-8 package #scp /root/screen/screen_backend/target/monitor.war root@101.37.22.173:/opt/tomcat/webapps/ rm -rf /opt/tomcat/webapps/screen_api_v2.war mv /opt/product/code/screen_api_v2/target/screen_api_v2.war /opt/tomcat/webapps/