目錄
-
前言
-
Jenkins是什么?
-
Jenkins環境安裝搭建
-
Jenkins基本使用介紹
-
Jenkins快速構建項目,項目自動化部署
-
學習總結
前言
在開發過程當中,部署項目也算是基本操作了,部署方式多種多樣,花費的時間也是不盡相同。項目部署大致需要以下幾步:編譯,打包,上傳,kill已有進程,啟動項目。單一架構,常規部署方式,熟練的話估摸着也需要3分鍾左右;如果項目包比較大,上傳替換,可能需要5-10分鍾左右。如果項目改動頻繁,一天花費在部署上面的時間也挺長的,而且操作反復;遇到分布式項目,那就更加難搞了,每個服務都需要單獨部署,這樣下來,部署花費的時間就太長了,反復操作也讓人頭疼。有別的方式嗎?答案肯定是有的,本期學習的jenkins就是一款項目部署神器,集合界面化操作,簡單的配置,完整的跟蹤,項目監控,自動部署等一系列功能於一身,簡直是程序員的福音呀。
Jenkins是什么?
是什么?
言歸正傳,讓我們來看看Jenkins是什么?Jenkins口號:“構建偉大,無所不能”, 可以說是很豪邁的口號了,LOGO是一位紳士,真是簡單明了!代表構建功能超級強大,部署代碼非常優雅。Jenkins是一款開源的CI&CD軟件,用於自動化各種任務,包括構建,測試和部署的軟件,支持各種運行方式:可通過系統包、Docker或者通過一個獨立的Java程序。
什么是CI&CD?
-
CI: 表示持續集成(continuous integration) ,在CI的環境中,開發者會頻繁的向主干提交代碼,這些代碼在合並到主干之前,需要進行代碼的編譯,驗證,確保沒問題了才能進行合並。否則將會導致不可避免的錯誤發生。
-
CD:表示持續部署(continuous deploy) , 在CD的環境當中,通過自動化的構建,測試和部署,循環迭代快速交付高質量的產品。持續部署,可以加速和客戶的溝通與反饋,快速幫助產品成長。
有什么特點?
-
完全開源免費,開源真是世界的福音
-
master/slave 支持分布式構建
-
提供web可視化操作界面
-
安裝&配置非常簡單
-
文檔詳細,反饋及時
-
插件豐富,功能強大
Jenkins環境安裝搭建
jenkins的搭建其實非常簡單,但是他需要依賴一些環境,比如docker ,jdk。docker可以集成海量工具鏡像,比如maven,node等等
以下示例,服務器版本CentOS7。已經安裝好docker,jdk的,可以直接跳過哦
安裝JDK
-
查看服務器是否安裝過jdk
# 輸入以下命令無jdk版本信息,則未安裝過
$ java -version
-
yum安裝jdk
$ yum install java-1.8.0-openjdk-devel.x86_64
-
配置系統全局變量
$ vim /etc/profile # 將下面信息復制到文件末尾,然后保存文件 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el6_9.x86_64 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
-
source全局變量
$ source /etc/profile
-
驗證是否安裝成功
# 輸入以下命令,有Jdk版本信息即表示成功!
$ java -version [root@iZ2ze0lvzs716zri63oxcmZ ~]# java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
安裝docker
docker要求, CentOS內核版本大於3.1
查看內核
$ uname -r [root@iZ2ze0lvzs716zri63oxcmZ ~]# uname -r 3.10.0-514.26.2.el7.x86_64
使用最新yum源
# 如果很久沒更新,可能需要更新2分鍾左右,網速帶寬稍有影響
$ yum update
安裝需要的軟件包
$ yum install -y yum-utils device-mapper-persistent-data lvm2
設置添加docker鏡像
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安裝最新穩定版
$ yum install docker-ce
啟動&開機啟動
# 啟動
$ systemctl start docker
# 開機啟動
$ systemctl enable docker
驗證(有client和service兩部分表示docker安裝啟動都成功了)
$ docker verison [root@iZ2ze0lvzs716zri63oxcmZ ~]# docker version Client: Docker Engine - Community Version: 19.03.8 API version: 1.40 Go version: go1.12.17 Git commit: afacb8b Built: Wed Mar 11 01:27:04 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.8 API version: 1.40 (minimum version 1.12) Go version: go1.12.17 Git commit: afacb8b Built: Wed Mar 11 01:25:42 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.2.13 GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683
安裝Jenkins
現在萬事俱備,只欠東風了
# 打開終端進入到下載目錄.
# 運行命令
$ java -jar jenkins.war --httpPort=8080.
# 啟動成功后會打印以下信息
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
# 注意復制這個
c0ae33e909df4094bb15ae15ae20ca83
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
# 打開瀏覽器進入鏈接 http://服務器ip:8080. 大概需要等幾分鍾,等它初始化
輸入復制的密鑰
# 按照說明完成安裝.
按照推薦向導就可以啦,太太太太簡單了!
Jenkins基本使用與介紹
一些准備工作
-
硬件要求:
-
256MB以上運行內存,官方建議最好大於512MB。
-
10GB硬盤空間,主要用戶Jenkins和Docker鏡像
-
-
基礎環境
-
Java 8,安裝jdk或者jre都可以
-
Docker 安裝docker
-
-
下載&安裝
創建一個Pipeline(流水線)
什么是Jenkins Pipeline?Pipeline是一套插件,可以將上面說的持續交付和持續集成應用到Jenkins中。簡單來說就是提供一套插件,用於簡單到復雜的交付流程實現。Jenkins Pipeline的定義通常在一個文件中,這個文件我們稱之為Jenkinsfile,文件可以放在項目源代碼庫里。
Pipeline可以定義多種語言,我們以Java為例
Jenkinsfile (Declarative Pipeline) pipeline { agent { docker 'maven:3.3.3' } stages { stage('build') { steps { sh 'mvn --version' } } } }
簡單解讀:
-
agent : 代表使用哪個環境執行
-
stages:階段集合,可以有多個stage,即可以有多個構建階段
-
stage:階段,常見有編譯,打包,運行等
-
steps:階段中需要執行的步驟,步驟可以有多個。
-
sh: 代表執行shell命令,一個sh代表執行一個步驟 若是windows環境,使用bat
定義流水線的幾種方式
-
通過Blue Ocean,在Blue Ocean中設計一個流水線項目,它會自動幫你編寫流水線的Jenkinsfile並提交到源代碼管理系統
-
通過經典UI,經典UI中在Jenkins中直接輸入基本的流水線
-
自己編寫Jenkinsfile,然后提交到源代碼管理倉庫中