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-stop.sh # 停止服務
# 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 &
通常生產環境安裝的方式:
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo # 下載 rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key # 導入key yum -y install jenkins # 安裝 /etc/rc.d/init.d/jenkins start # 作為守護進程啟動 ### PS. 我的環境啟動時提示找不到/usr/bin/java的錯誤,就用java實際路徑添加了個軟鏈接。 ln -s /usr/local/src/jdk1.8.0_161/bin/java /usr/bin/java
# 瀏覽器訪問 http://此機器所在域名:8080 # 按照頁面提示,輸入管理密碼,繼續安裝,選擇需要的組件,繼續。等待安裝成功后, # 創建管理員賬號,開始使用 ## Jenkins集成git ## git的通信協議 ## Git 可以使用四種主要的協議來傳輸數據:本地傳輸,SSH 協議,Git 協議和 HTTP 協議。 ## (Ps:HTTP 協議外,其他所有協議都要求在服務器端安裝並運行 Git)
Jenkins的停止服務,使用的是web方式
# Jenkins的停止服務,使用的是web方式 # http://yourdomain:8080/exit # 停止服務 # http://yourdomain:8080/restart # 重啟服務 # http://yourdomain:8080/reload # 重新加載配置信息
關於Jenkins的第一次啟動配置,建議參考:https://blog.csdn.net/w105021/article/details/78657382
最近在操作Jenkins時,忘記了管理員密碼。只好重置了:
先停止tomcat服務,然后 vim /root/.jenkins/users/admin_***/config.xml 文件,
找到 <passwordHash>字段,將里面的內容替換為:
#jbcrypt:$2a$10$MiIVR0rr/UhQBqT.bBq0QehTiQVqgNpUGyWW2nJObaVAM/2xSQdSq
這樣,管理員賬號的密碼就變成了123456,啟動tomcat,打開Jenkins登錄。
為了支持Maven項目,所以,先在系統中安裝maven
#------------------------------ Maven 安裝 ------------------------------ # 部署Maven項目,必須安裝. 下載頁:http://maven.apache.org/download.cgi tar zxf apache-maven-3.5.4-bin.tar.gz mv apache-maven-3.5.4 maven cd maven/conf vim settings.xml # <localRepository>/path/to/local/repo</localRepository> 是下載jar文件時的存儲路徑 # 在<mirrors>中增加aliyun</mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> # 再將文件settings.xml copy 到 /root/.m2 (用戶根路徑)文件夾下 # 配置環境變量: vim /ect/profile export M2_HOME=/opt/maven export PATH=$M2_HOME/bin:$PATH source /ect/profile mvn -v
當前我們的Jenkins只是簡化了手動集成的步驟,並沒有完全地自動持續集成.
#------------------------- 例:自動部署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 內容:一定不要忘記 chmod 755 執行權限 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
這個例子也是執行shell 利用maven生成war包,然后更新服務。
#------------------------- 再看個java war包的示例 ------------------------ # Jenkins 構建仍是Execute shell , Command內容: export BUILD_ID=dontKillMe /opt/scripts/deploy_v2_screen_api.sh # 腳本 deploy_v2_screen_api.sh 內容:一定不要忘記 chmod 755 執行權限 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/
在操作中的其它動作,以及遇到的小問題:
#----------------------------------------------------------------------# # 修改yum源為aliyun # 先備份: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 下載配置文件 注意 centos版本 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo yum makecache # 生成緩存 #----------------------------------------------------------------------#
# git clone出現錯誤:(gnome-ssh-askpass:3530): Gtk-WARNING **: cannot open display: # 直接運行unset SSH_ASKPASS,然后再重新git clone ##################### jenkins數據的轉移 ################################### # 由於我的jenkins.war ,版本是Jenkins2.121.1,並沒有看到網上說的可以在jenkins系統管理-系統設置中直接更改主工作空間,而是需要通過修改環境變量的方式進行設置。 # Jenkins默認工作空間 /root/.jenkins,而Jenkins默認查找順序是先環境變量中查找“JENKINS_HOME”指定的目錄作為工作空間, # 如果沒配置“JENKINS_HOME”環境變量的,Jenkins就采用了默認的工作空間配置。 # 如果有jenkins服務在運行中,建議先停止jenkins服務。 # 然后拷貝數據到新路徑,例如: cp /root/.jenkins /opt/jkdata/.jenkins # 設置JENKINS_HOME環境變量參數 # 打開tomcat的bin目錄,編輯catalina.sh文件,在第一行下面添加 export JENKINS_HOME=/opt/jkdata/.jenkins # 並且在profile文件最后加入: vi /etc/profile export JENKINS_HOME=/opt/jkdata/.jenkins source /etc/profile # 然后啟動jenkins,所有的插件,配置,job及備份全部已遷移。