環境準備html
1.準備2檯安裝好CENTOS7.4系統的虛擬機,內存1G+。java
2.全部虛擬機的防火牆和SELINUX關閉node
3.主機名及IP地址關係以下:git
Jenkins 192.168.205.191 不須要安裝軟件web
Gitlab 10.0.0.190 安裝好gitlab數據庫
Jenkins --> 安裝apache
jenkins 目錄結構 Jenkins 沒有數據庫,一切皆文件 [root@jenkins jenkins]# rpm -ql jenkins /etc/init.d/jenkins /etc/logrotate.d/jenkins /etc/sysconfig/jenkins /usr/lib/jenkins # 程序文件目錄,升級直接覆蓋war 包 /usr/lib/jenkins/jenkins.war /usr/sbin/rcjenkins /var/cache/jenkins /var/lib/jenkins /var/log/jenkins /var/lib/jenkins/plugins/ 插件目錄 /etc/sysconfig/jenkins 配置文件目錄(修改啓動用戶和端口等) /usr/lib/jenkins/jenkins.war 升級時直接替換war包 /var/lib/jenkins/workspace/ 工做目錄,構建的數據目錄 [vagrant@jenkins ~]$ ll /var/lib/jenkins/jobs/ # 項目目錄 total 12 drwxr-xr-x. 3 jenkins jenkins 4096 Nov 24 02:51 MyFirstJob drwxr-xr-x. 4 root root 4096 Nov 24 12:17 MyMavenJob drwxr-xr-x. 3 root root 4096 Nov 24 12:54 MyPipelineJob
屢次構建,會保留最後一次成功的在系統上 服務器
Jenkins獲取Gitlab源代碼框架
用戶權限不夠改爲root 用戶 或者作sudo受權運維
須要安裝git 和ssh 公鑰gitlab受權 或者使用已有的私鑰
不要隨意改用戶,改完改用戶的配置文件,工做目錄會沒
node1 拿到源碼,部署到服務器,
只要gitlab相應分支一變化,就觸發構建
構建觸發器
源碼管理,直接從gitlab 拉取
添加集成token,代碼項目選項裏面設置
gitlab 改動後 測試觸發
構建完成後在gitlab 上顯示
查看job集成狀況
可以在gitlab 上查看構建結果,
maven 是一套 java 項目管理工具,
一、下載Maven 3安裝包
官網:http://maven.apache.org/download.cgi
清華鏡像:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/
二、安裝Maven
tar xf apache-maven-3.3.9-bin.tar.gz
mv apache-maven-3.3.9 /usr/local/
ln -s /usr/local/apache-maven-3.3.9/ /usr/local/maven
/usr/local/maven/bin/mvn -v
三、編輯/etc/profile文件,在末尾添加
export PATH=/usr/local/apache-maven-3.3.9/bin/:$PATH
clean
test
package
deploy
m2 倉庫
編譯後的執行文件,放到
一、什麼是PIPELINE
JENKINS2.0的精髓是PIPELINE AS CODE,是幫助JENKINS實現Cl到CD轉變的重要角色。什麼是PIPELINE,簡單來講,就是一套運行於JENKINS上的工做流框架,將本來獨立運行於單個或者多個節點的任務鏈接起來,實現單個任務難以完成的複雜發佈流程。PIPELINE的實現方式是一套GROOVYDSL,任何發佈流程均可以表述爲一段GROOVY腳本,而且JENKINS支持從代碼庫直接讀取腳本,從而實現了PIPELINE AS CODE的理念。
二、PIPELINE的幾個基本概念:
STAGE:階段,一個PIPELINE能夠劃分爲若干個STAGE,每一個STAGE表明一組操做。注意,STAGE是一個邏輯分組的概念,能夠跨多個NODE。
NODE:節點,一個NODE就是一個JENKINS節點,或者是MASTER,或者是AGENT,是執行STEP的具體運行期環境。
STEP:步驟,STEP是最基本的操做單元,小到建立一個目錄,大到構建一個DOCKER鏡像,由各種JENKINSPLUGIN提供
而後在Jenkins上 建立 pipeline項目,並配置從gitlab 拉取Jenkinsfile (前提作完密鑰受權後這裏就不須要再輸入)
Jenkinsfile pipeline 語法,能夠根據須要,生成相應語法,而後粘貼到Jenkinsfile 文件中
示例1 pipeline{ agent any stages{ stage("get code"){ steps{ echo "get code from scm" } } stage("package"){ steps{ echo "packge code" } } stage("deploy"){ steps{ echo "deploy packge to node1" } } } } 示例2 pipeline{ agent any stages{ stage("get code"){ steps{ checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '06ac7536-b4d0-400f-ae10-fb71cdb266dc', url: 'git@192.168.56.11:oldboy/monitor.git']]]) } } stage("package"){ steps{ sh 'cd /var/lib/jenkins/workspace/pipeline-job && tar czf /opt/web-$(date +%F).tar.gz .' } } stage("deploy"){ steps{ sh 'scp /opt/web-$(date +%F).tar.gz 192.168.56.11:/var/www/html' sh 'ssh 192.168.56.11 "cd /var/www/html/&&tar xf web-$(date +%F).tar.gz"' } } } }
CI
1)開發代碼
2)審覈代碼
主幹
分支
3)Git本地合併分支
4)本機環境測試代碼
5)開發上線代碼到GitHub
CD
一測 開發+測試
二測 測試+加內測用戶 運維負責部署
測試提交測試報告
主管確認簽字
上線 運維負責
各部門主管在上線申請簽字
運維負責上線