Jenkins持續集成

環境準備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

 

 

屢次構建,會保留最後一次成功的在系統上 服務器

8c098854-2dcb-4f8e-bccb-f99e4d605e08            920ae2b7-a701-42a7-b6cd-2a1d5f6d9618           ca7d9581-4516-4105-a6e5-4d779f509dc6                

 

 

Jenkins獲取Gitlab源代碼框架

fb15c03f-8b3b-4540-a497-ac36aa18e4c7

用戶權限不夠改爲root 用戶  或者作sudo受權運維

48b41ef2-0f90-487c-85e4-604b920b9157

327330484

須要安裝git 和ssh 公鑰gitlab受權 或者使用已有的私鑰

328160328

不要隨意改用戶,改完改用戶的配置文件,工做目錄會沒

329187093

node1 拿到源碼,部署到服務器,

341598765

341805687

Jenkins配置Gitlab自動觸發構建

只要gitlab相應分支一變化,就觸發構建

構建觸發器

ed767cdf-fdd4-4efb-ab3d-0586b14aa308

01cf9e7f-9aba-46cf-83eb-1d6a28ad86c8

源碼管理,直接從gitlab 拉取

2fce5cbc-07f6-42a8-ad4b-4e7148808da2

7371afe3-b7c1-4d10-87b2-cf8afeb6fbb5

添加集成token,代碼項目選項裏面設置

208de876-5dc0-48e8-8925-1284c8b9f251

2c7877e9-93a4-435c-b50c-5e6d5f0a54c1

 

 

gitlab 改動後 測試觸發

40c564dd-d9c7-485a-9e91-be4776f3aeec41e57ce6-366a-4510-8a97-dd7c01c41c76

 

配置jenkins返回構建狀態到Gitlab

dcd717ac-80d5-4f6b-b619-e0e3af9b56f8

6a88905c-b2db-4baf-878a-8679ee1bcda2

98d07488-2933-4472-8bef-604e96f13725

 

構建完成後在gitlab 上顯示

5225d406-8e87-48a5-80b5-421d8963f99f

查看job集成狀況

0a777151-267c-4821-ae2a-07073cdaf193

可以在gitlab 上查看構建結果,

Jenkins配置maven

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 倉庫

編譯後的執行文件,放到

Jenkins Pipeline介紹

一、什麼是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提供

 

在gitlab 上建立 Jenkinsfile (項目根目錄)

2516cee0-d125-48a9-8428-986d271b2f03

而後在Jenkins上  建立 pipeline項目,並配置從gitlab 拉取Jenkinsfile (前提作完密鑰受權後這裏就不須要再輸入)

3f4a6bad-3dc0-4daf-b095-466cfdc034ce

Jenkinsfile pipeline 語法,能夠根據須要,生成相應語法,而後粘貼到Jenkinsfile 文件中

5ccf03b5-f4ea-485f-8973-7683c9c1703b

示例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"'
            }
        }
    }
}
pipeline

CI

1)開發代碼

2)審覈代碼

主幹

分支

3)Git本地合併分支

4)本機環境測試代碼

5)開發上線代碼到GitHub

CD

一測 開發+測試

二測 測試+加內測用戶     運維負責部署

測試提交測試報告

主管確認簽字

上線 運維負責

各部門主管在上線申請簽字

運維負責上線

相關文章
相關標籤/搜索