Jenkins搭建

Jenkins 構建

鏡像庫,容器云

服務器上傳文件命令,跟SCP類似

yum install lrzsz -y

// 選擇本地文件并上傳

rz -y

# 前言

目前主流網站部署方法,通過Hudson/Jenkins工具平臺實現(xiàn)全自動部署+測試,是一個可擴展的持續(xù)集成引擎,是一個開源軟件項目

持續(xù)集成組件

1)一個自動構建過程,包括自動編譯、分發(fā)、部署、測試。

2)一個代碼倉庫,SVN, GIT

3)一個jenkins持續(xù)集成服務器

jenkins屬于一個java代碼,需要java容器才可以運行Jenkins,所以需要在服務器安裝JDK+Tomcat

1 java jdk安裝

https://www.yuque.com/allblue-byynd/ezv40n/qmxvg0

先查看是否已安裝jdk

java -version

拷貝文件:

將/usr/xu目錄中的所有文件及其子目錄拷貝到目錄/usr/liu中,命令如下:

$ cp - r /usr/xu/ /usr/liu/

2.安裝tomcat

進入 /usr/lib/tomcat 目錄,執(zhí)行命令下載

wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.39/bin/apache-tomcat-8.5.39.tar.gz

解壓到指定目錄

tar -zxvf apache-tomcat-8.5.39.tar.gz

cd apache-tomcat-8.5.39/conf/

啟動tomcat

然后我們返回到apache-tomcat-8.5.39目錄下,用cd 命令進入到bin目錄下,啟動tomcat

命令:sh startup.sh

http://ip:8080/? 訪問tomcat主頁

指向的資源目錄是 tomcat/webapps/ROOT/index.jsp

./shutdown.sh

./startup.sh

重啟tomcat,然后切換到tomcat的logs目錄,鍵入

tail -f catalina.out

運行起來之后,瀏覽器訪問tomcat顯示404

可能是端口被占用

查看8080端口

netstat -nltp | grep 8080

下載jenkins.war

https://www.jenkins.io/download/

刪除tomcat/webapps/ROOT 目錄下的所有東西

把下載下來的jenkins.war上傳到這里

啟動Jenkins服務

執(zhí)行命令:

java -jar jenkins.war

報錯信息如下,沒有指定端口號,或者端口號被占用

指定端口號,重新啟動

java -jar jenkins.war --httpPort=9000

jenkins啟動過程中會初始化,并會生成一個密碼如下(后面解鎖Jenkins時候用到)

接著就可以看到jenkins初始化的頁面啦^v^

后臺啟動Jenkins

我們也可以使用nohup命令,讓Jenkins在后臺運行。

nohup java -jar jenkins.war --httpPort=8080 &

還有別的啟動方式,可以使用tomcat啟動,進入tomcat/conf目錄,在server.xml里面修改端口號,或者進行域名配置,類似雨nginx的nginx.conf

進入tomcat/bin目錄,執(zhí)行./startup.sh

服務器安裝git

因為要進行使用git連接倉庫,克隆,拉取分支等等

服務器安裝node

https://www.yuque.com/allblue-byynd/ezv40n/ikgxzk

jenkins下載插件以及全局工具配置

安裝maven插件

配置jdk, maven, node

連接云服務器,

echo $PATH

獲取全局環(huán)境變量,復制

【系統(tǒng)管理】-> 【系統(tǒng)配置】 -> 【環(huán)境變量】

增加環(huán)境變量

不進行配置,構建任務執(zhí)行shell腳本的時候,可能會報錯,如下

添加憑據,創(chuàng)建密鑰

Jenkins通過SSH私鑰憑證,免密登陸Gitee服務器

在Jenkins服務器創(chuàng)建公鑰和私鑰

ssh-keygen -t rsa

cd /root/.ssh

把公鑰添加到gitee的ssh里面

把私鑰配置到Jenkins里面(全局工具配置里,不同版本的入口不一樣)

添加完成之后,在項目配置里git源可以切換成ssh, 選擇上面配置的憑證就可以連接倉庫了。

基礎工作準備完成

----------------------------------------------------------------------------------------------------------------

Make工具

linux,windows最原始的編譯工具,在linux下編譯工具常用Make(windows下對應的工具為nmake)

它負責組織構建的過程,負責指揮編譯器如何編譯,連接器如何連接,最后生成一個可用的文件。

ANT工具

make在編譯復雜的東西時使用不夠靈活,語法很難理解,于是就衍生出ant工具

Maven工具

Maven工具是對ant工具的進一步改進,Maven像make一樣,是個構建工具,有很多Maven plugin(maven插件)

Jenkins工具

Jenkins就是一個可視化的工具平臺,通過編寫一系列的腳本來控制編譯、測試、打包、部署等流程。

Jenkins就是用圖形界面的方式把maven進行一個整合。

Jenkins可以用于運行各種CI,測試,批處理任務等等,所以在Jenkins中將這些任務統(tǒng)稱為“free-style software project”

linux:jenkins 默認安裝目錄

(1)/usr/lib/jenkins/:jenkins安裝目錄,WAR包會放在這里。

( 2 ) /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在這里配置。

(3)/var/lib/jenkins/:默認的JENKINS_HOME。

(4)/var/log/jenkins/jenkins.log:Jenkins日志文件。

Eclipse工具

新建任務并構建

先進行一個最基礎的配置

選擇靈活配置

描述

源碼管理

git,

git登錄賬戶名密碼用于clone、pull等操作

指定分支

構建環(huán)境

不要勾選 Provide Node & npm bin/ folder to PATH

服務器已經下載node并進行了環(huán)境變量配置,如果這里選擇會造成沖突。

構建

執(zhí)行shell:

```javascript

pwd

ls

node -v

npm -v

git --version

echo '構建的版本號:'${BUILD_NUMBER}

npm install

npm run build

```

點擊【應用】,點擊【保存】

點擊【立即構建】

查看日志

編譯生成的文件存放在 服務器/root/.jenkins/workspace目錄下面

新建jenkins任務

https://blog.csdn.net/qq_35620501/article/details/87459391

設置構建觸發(fā)器

這里選擇webHooks觸發(fā)

Jenkins上操作

本地push就會自動觸發(fā)Jenkins構建

部署項目

使用 Jenkins 可以完成整個 CI/CD 的操作,之前關于源碼下載、鏡像構建、鏡像推送等操作都只能算是 CI 的步驟, Jenkins 完成一系列包括構建和部署的操作,屬于CD操作

安裝插件: public over ssh

Publish Over SSH 是 Jenkins 的一個插件,可以使用 SSH 的方式遠程連接服務器,并進行文件的傳輸和命令執(zhí)行。

由主節(jié)點不具備環(huán)境,只進行分配任務,執(zhí)行構建操作。配置從節(jié)點,web服務器,從節(jié)點構建完成之后,把鏡像和部署代碼一并傳到服務器節(jié)點上面,然后在服務器節(jié)點執(zhí)行部署命令,這幾個步驟都是 Publish Over SSH 可以完成的。

全局配置:ssh server

點擊【高級】配置密碼

ssh的配置可使用密鑰,也可以使用密碼,

測試連接,并應用保存

在任務配置中增加【構建后操作】

send build artifacts over ssh

exec

# 進入項目的文件夾 ( 項目路徑:? /usr/local/webserver/nginx/testweb02/testweb02/xxxx )

echo '--- 1.進入項目的文件夾:---'

cd /usr/local/webserver/nginx/testweb02/testweb02

pwd

#? 打包壓縮項目文件

echo '--- 2.打包壓縮項目的文件:---'

# 自動創(chuàng)建testweb02-copy文件夾,存在則創(chuàng)建失敗。mkdir -p a/b/c 創(chuàng)建多級目錄

mkdir /usr/local/webserver/nginx/testweb02-copy

tar -zcvf? /usr/local/webserver/nginx/testweb02-copy/${JOB_NAME}-${BUILD_ID}.tar.gz? *

# 查看壓縮備份后的文件

cd? /usr/local/webserver/nginx/testweb02-copy

echo '--- 3.下面是已經備份項目的版本:---'

ls

# 回復備份

echo '--- 4.下面是備份回滾的命令:---'

echo '刪除舊項目:rm -rf /usr/local/webserver/nginx/testweb02/*'

echo '回滾指定版本: tar -zxvf? /usr/local/webserver/nginx/testweb02-copy/testweb02-16.tar.gz? -C? /usr/local/webserver/nginx/testweb02/'

echo '停止服務:/usr/local/webserver/nginx/sbin/nginx -s stop'

echo '重啟服務:/usr/local/webserver/nginx/sbin/nginx'

echo '--- 構建結束 ---'

點擊【立即構建】

需求場景

一般情況下,通過 Jenkins 完成一個項目的上線,至少應該包括三臺虛擬機,一臺用來運行 Jenkins 服務,作為主節(jié)點,第二臺(正常情況可能不止一臺)是一個從節(jié)點,由主節(jié)點分配任務,執(zhí)行構建操作,之所以從節(jié)點會很多是因為每個從節(jié)點可能配置的不同的環(huán)境,可以完成特定的構建任務,比如某個從節(jié)點配置了 nodejs 環(huán)境,所以可以執(zhí)行前端項目構建,而另一個配置了 Java 環(huán)境所以可以構建 Java 項目;第三臺虛擬機就是項目部署的服務器了(有時候可能也不止一臺),可以通過 Jenkins 遠程控制服務器完成構建后的部署。

現(xiàn)在我就有3個虛擬機,1個 Jenkins 主機點,使用容器運行的,1個 Jenkins 從節(jié)點,配置了 nodejs 環(huán)境和 Java 環(huán)境,所以可以完成 vue 項目的構建,最后一個是一臺僅僅配置了 docker 環(huán)境的虛擬機,只能運行容器。這個場景很服務實際的項目場景。

解決方案

Jenkins 主節(jié)點由于是在容器中運行的,所以根本不具備任何其他環(huán)境,所以只做任務分配;從節(jié)點需要完成的事情是從 GitHub 拉取代碼,并打包 vue 項目,最后構建成鏡像,構建完成之后可以推送到遠程倉庫,也可以打包成 tar 包(這里為了使用 Publish Over SSH 的文件傳輸功能,所以使用 tar 包鏡像);從節(jié)點構建完成之后,把鏡像和部署代碼一并傳到服務器節(jié)點上面,然后在服務器節(jié)點執(zhí)行部署命令,這幾個步驟都是 Publish Over SSH 可以完成的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容