那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Jenkins的安裝教程

馬哥Linux運(yùn)維 ? 來源:博客園 ? 2025-02-06 10:04 ? 次閱讀

1. Jenkins是什么?

Jenkins是一個開源的、提供友好操作界面的持續(xù)集成(CI)工具,廣泛用于項目開發(fā),具有自動化構(gòu)建、測試和部署等功能。Jenkins用Java語言編寫,可在Tomcat等流行的servlet容器中運(yùn)行,也可獨(dú)立運(yùn)行。通常與版本管理工具(SCM)、構(gòu)建工具結(jié)合使用。

2.什么是持續(xù)集成(CICD)

因為開發(fā)部門同時維護(hù)多個版本,多個版本的發(fā)布,測試需要大量人力,所以要有一個專業(yè)的持續(xù)集成工具來管理持續(xù)重復(fù)的工作。

個人理解,說白了就是把代碼測試、打包、發(fā)布等工作交給一些工具來自動完成。這樣可以提高效率,減少失誤,開發(fā)人員只需要關(guān)心開發(fā)和提交代碼到Git就可以了。

3. Jenkins的安裝

(1)準(zhǔn)備條件

安裝JDK

下載JDK壓縮包,并上傳至Linux某個目錄下解壓。

. 配置jdk的環(huán)境變量

#進(jìn)入/etc/profile配置文件
vim /etc/profile

. 將以下代碼填入到profile文件內(nèi)底

export JAVA_HOME=/usr/wubin/jdk11
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

. 使配置生效

source /etc/profile

. 檢測java環(huán)境信息

javac

輸入javac后出現(xiàn)以下信息則安裝jdk成功!

5946713c-e39c-11ef-9310-92fbcf53809c.png

(2)安裝Jenkins

1. 下載jenkins

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

2. 啟動jenkins

# 使用nohup命令啟動 nohup 當(dāng)虛擬機(jī)黑屏?xí)r 也會運(yùn)行 日志—>輸出到j(luò)enkins.log & 后臺運(yùn)行

nohup java -jar /usr/wubin/jenkins.war  --httpPort=8777 --httpsPort=8778 > /usr/wubin/jenkins.log 2>&1 &

3. 使用tail命令查看啟動日志,日志中會輸出jenkins密碼

595abdf4-e39c-11ef-9310-92fbcf53809c.png

4. 通過瀏覽器訪問jenkins(端口號必須為8777)

http://你的ip:8777

5979738e-e39c-11ef-9310-92fbcf53809c.png

點擊安裝推薦的插件

598da138-e39c-11ef-9310-92fbcf53809c.png

5992cbf4-e39c-11ef-9310-92fbcf53809c.png

59ab5886-e39c-11ef-9310-92fbcf53809c.png

(3)Jenkins中配置JDK路徑

jenkins-》全局工具配置-》JDK-》新增JDK

59c369da-e39c-11ef-9310-92fbcf53809c.png

59d6cde0-e39c-11ef-9310-92fbcf53809c.png

(4)Jenkins忘記密碼的解決方案

5a06afa6-e39c-11ef-9310-92fbcf53809c.png

4. 集成Git

為了Jenkins能夠拉取代碼,需要安裝Git環(huán)境和jenkins對應(yīng)的Git插件

(1) CentOS 7 上安裝Git環(huán)境

# 安裝
$ yum install git -y
# 查看版本
$ git --version

復(fù)制

(2) Jenkins安裝Git插件

5a25073a-e39c-11ef-9310-92fbcf53809c.png

(3) Jenkins配置Git環(huán)境

此處無需在jenkins中配置Git環(huán)境,采用默認(rèn)生成的即可

5a414594-e39c-11ef-9310-92fbcf53809c.png

(4) Gitee上任意建一個倉庫

5a51a736-e39c-11ef-9310-92fbcf53809c.png

5a68e93c-e39c-11ef-9310-92fbcf53809c.png

(5) 測試憑據(jù)是否能夠使用

jenkins-》新建任務(wù)-》自由風(fēng)格項目

5a812448-e39c-11ef-9310-92fbcf53809c.png

5a960e08-e39c-11ef-9310-92fbcf53809c.png

5aa39b18-e39c-11ef-9310-92fbcf53809c.png

5abaa966-e39c-11ef-9310-92fbcf53809c.png

5ad96964-e39c-11ef-9310-92fbcf53809c.png

5aeeadb0-e39c-11ef-9310-92fbcf53809c.png

進(jìn)入jenkins的工作空間查看文件是否拉取下來,所有拉取的文件都會存放在jenkins工作空間中

5af566be-e39c-11ef-9310-92fbcf53809c.png

到這一步用戶名和密碼方式的憑證已經(jīng)打通Git

5. 憑證配置

憑據(jù)就是用來存儲需要密文保護(hù)的數(shù)據(jù)庫密碼、Gitee密碼信息、Docker私有倉庫密碼等,以便 Jenkins可以和這些第三方的應(yīng)用進(jìn)行交互。

1. 憑證插件安裝Credentials Binding

5b23fad8-e39c-11ef-9310-92fbcf53809c.png

該插件默認(rèn)在一開始就會被安裝,安裝后在jenkins-》系統(tǒng)管理-》安全欄目會出現(xiàn)Manage Credentials選項,若沒有需要安裝插件并重啟。

5b3be3d2-e39c-11ef-9310-92fbcf53809c.png

5b5139a8-e39c-11ef-9310-92fbcf53809c.png

5b61e9b0-e39c-11ef-9310-92fbcf53809c.png

5b86d356-e39c-11ef-9310-92fbcf53809c.png

5ba1eeca-e39c-11ef-9310-92fbcf53809c.png

5bbd57dc-e39c-11ef-9310-92fbcf53809c.png

5bdceaac-e39c-11ef-9310-92fbcf53809c.png

5bed0b94-e39c-11ef-9310-92fbcf53809c.png

5bfaa970-e39c-11ef-9310-92fbcf53809c.png

5c065e46-e39c-11ef-9310-92fbcf53809c.png

6. Maven集成

在jenkins上發(fā)布Java項目時需要使用Maven來進(jìn)行構(gòu)建打包(Gradle項目則需要安裝配置Gradle)

(1) 下載安裝

# 找一個目錄存放maven
cd /usr/wubin/

# 從阿里云上下載maven安裝包
wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

# 解壓
tar -zxvf apache-maven-3.6.3-bin.tar.gz

# 當(dāng)前maven的安裝目錄為:
/usr/wubin/
apache-maven-3.6.3

(2) 環(huán)境配置

vi /etc/profile

在最后面JDK配置上作出一些更改
export MAVEN_HOME=
/usr/wubin/
apache-maven-3.6.3
 export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

復(fù)制

(3) 使配置生效并查看安裝情況

source /etc/profile
mvn -version

(4) Jenkins配置Maven

5c1ee1fa-e39c-11ef-9310-92fbcf53809c.png

(5) 安裝Maven插件

5c3c5532-e39c-11ef-9310-92fbcf53809c.png

(6) 在/data/software目錄下新建一個repository文件夾,用來作為maven的倉庫

$ cd /usr/wubin
$ mkdir repository

復(fù)制

(7) 使用root賬戶修改Maven的settings.xml文件(指定倉庫目錄和阿里云鏡像)


  
             
  /data/software/repository
  
  
     
    
      aliyun-maven
      central
      aliyun maven mirror
      http://maven.aliyun.com/nexus/content/groups/public/
    
  
    ...
    ...

復(fù)制

(8) Maven測試項目構(gòu)建

接下來的步驟是將java項目傳到Gitee上供jenkins拉取打包,如果運(yùn)維同學(xué)不懂Java代碼,可以直接將我的Git項目fork或采用gitlab 等其他方式進(jìn)行拉取。

新建Maven項目

5c4e9bde-e39c-11ef-9310-92fbcf53809c.png

在碼云上建一個同名的git項目

5c55e9ca-e39c-11ef-9310-92fbcf53809c.png

使用Git上傳到碼云

使用git bash命令將項目初始化,無論是傳到Gitee、GitHub、GitLab、Codeup步驟一樣,如果對Git的安裝部署不熟悉

# 進(jìn)入到本地的項目文件夾
$ cd existing_folder
# 初始化倉庫
$ git init

# 添加文件至工作區(qū)并提交
$ git add .
$ git commit -m "first commit"

# 關(guān)聯(lián)Gitee遠(yuǎn)程倉庫
$ git remote add origin https://gitee.com/nobug8/it235-jenkins-jar.git

# 將本地倉庫推送到遠(yuǎn)程倉庫的master分支,此處會彈出用戶名密碼交互
$ git push -u origin master

## 如果push報錯可以先拉取一下,會有新的gitee生成的文件拉下來,然后重新添加提交并push
$ git pull origin master --allow-unrelated-histories
$ git add .
$ git commit -m "拉取下來合并后再次提交"
$ git push -u origin master

復(fù)制

5c7887a0-e39c-11ef-9310-92fbcf53809c.png

(9) Jenkins添加Maven項目任務(wù)

①. 新建任務(wù)

5c8ef79c-e39c-11ef-9310-92fbcf53809c.png

②. 編寫Maven編譯命令

5ca4a920-e39c-11ef-9310-92fbcf53809c.png

③. 構(gòu)建并查看控制臺日志

保存后,點擊立即構(gòu)建,然后進(jìn)入日志控制臺查看日志

5cb40e60-e39c-11ef-9310-92fbcf53809c.png

從日志可以看到代碼已經(jīng)在拉取了,而且走的事阿里云倉庫,第一次拉取過程會比較長。

通過查看/data/software/repository可以看到有存放拉取的jar包,通過這2個證據(jù)可以證明settings.xml文件配置成功且有效

5ce0f8d0-e39c-11ef-9310-92fbcf53809c.png

構(gòu)建成功后查看jenkins的workspace目錄下的jar包

5d03c02c-e39c-11ef-9310-92fbcf53809c.png

5d2e7574-e39c-11ef-9310-92fbcf53809c.png

到此Maven集成完畢

配置Post Steps,選中執(zhí)行shell

5d4c504e-e39c-11ef-9310-92fbcf53809c.png

5d5f81dc-e39c-11ef-9310-92fbcf53809c.png

7. 配置SSH免密登錄

由于jenkins構(gòu)建消耗內(nèi)存極大,一般jenkins是一臺單獨(dú)的工具機(jī)器,Java項目一般在其他的機(jī)器上,這里我重新安裝一臺虛擬機(jī)

應(yīng)用服務(wù)器信息

IP:192.168.223.129

JDK:1.8

user:root

部署路徑:/data/app/my-boot

端口:9010

免密登錄主要是方便jenkins服務(wù)器192.168.223.128的root用戶—》應(yīng)用服務(wù)器192.168.223.129的root用戶上的jar包拷貝,部署本就是jar包拷貝的過程

在192.168.223.128機(jī)器上使用root用戶生成秘鑰注意此處是root用戶

$ ssh-keygen -t rsa
# 3次回車

復(fù)制

運(yùn)行后會在當(dāng)前用戶的根目錄生成一個.ssh文件夾

5d70537c-e39c-11ef-9310-92fbcf53809c.png

ssh文件夾中的文件描述

id_rsa: 生成的私鑰文件

id_rsa.pub:生成的公鑰文件

接下來需要將公鑰導(dǎo)入到認(rèn)證文件中

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

復(fù)制

如果希望ssh公鑰生效需滿足至少下面兩個條件:

.ssh目錄的權(quán)限必須是700

.ssh/authorized_keys文件權(quán)限必須是600

給對應(yīng)文件授權(quán)

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

復(fù)制

將authorized_keys文件拷貝到另一臺應(yīng)用服務(wù)器的root用戶.ssh目錄下

# 在應(yīng)用服務(wù)器(192.168.223.129)上用root用戶創(chuàng)建/root/.ssh文件夾  mkdir -p /root/.ssh

# 在jenkins服務(wù)器(192.168.223.128)上將pub公鑰文件拷貝到應(yīng)用服務(wù)器的.ssh目錄下

scp -p ~/.ssh/id_rsa.pub root@192.168.223.129:/root/.ssh/authorized_keys

復(fù)制

在jenkins192.168.223.128服務(wù)器上進(jìn)行免密連接測試

# 在jenkins服務(wù)器的/root/目錄下創(chuàng)建filetest文件,并拷貝到應(yīng)用服務(wù)器
$ cd ~/
$ touch filetest
$ scp -p filetest root@192.168.223.129:/root/filetest
# 進(jìn)入到應(yīng)用服務(wù)器(192.168.223.129),檢查/root目錄下是否出現(xiàn)filetest

# 在jenkins服務(wù)器上使用ssh進(jìn)行免密連接測試,成功后會出現(xiàn)Last Login的提示
$ ssh root@192.168.223.129
Last login: Sun Sep 20 21:53:03 2020
$ exit

復(fù)制

到此免密登錄和拷貝實現(xiàn)成功,為接下來jar包部署提供了快捷的幫助

8. 編寫Jenkins發(fā)布腳本

5d7aa246-e39c-11ef-9310-92fbcf53809c.png

注意下面代碼第6行代碼server_ips=”需要部署到的機(jī)器ip”

#!/bin/bash

echo "部署的目錄和項目名稱"
DIR="/data/app"
projectName="my-boot"

echo "待部署的應(yīng)用服務(wù)器,可多臺"
server_ips="192.168.223.139"
for server_ip in ${server_ips[@]}
do

echo "ssh連接進(jìn)行備份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <

9. 編寫應(yīng)用啟動腳本

在/data/app/my-boot目錄下創(chuàng)建啟動腳本start.sh

$ touch start.sh
$ vi start.sh
# 將下面代碼粘貼到start.sh中
#!/bin/bash
set -e #任何命令出錯就退出
set -o pipefail

APP_ID=my-boot
APP_DIR="/data/app"

nohup java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log &
start_ok=false
if [[ $? = 0 ]];then
        sleep 3
        tail -n 10 release_out.log
        sleep 5
        tail -n 50 release_out.log
fi
aaa=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${aaa}" ]];then
    echo "Application started ok"
    exit 0
else
    echo "Application started error"
    exit 1
fi

在/data/app/my-boot目錄下創(chuàng)建停止腳本stop.sh

$ touch stop.sh
$ vi stop.sh
# 將下面代碼粘貼到stop.sh中
#!/bin/bash

APP_ID=my-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

并進(jìn)行啟動和停止測試,查看日志輸出是否正常

將下述啟動代碼配置jenkins中

sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh

訪問并測試代碼是否生效

如果是虛擬機(jī)則需要給防火墻添加9010端口

$ su root
# 開啟防火墻9010端口
$ firewall-cmd --zone=public --add-port=9010/tcp --permanent
# 使配置生效
$ firewall-cmd --reload

復(fù)制

修改代碼返回值,提交至Gitee,并再次進(jìn)行構(gòu)建發(fā)布,訪問http://192.168.223.129:9010查看結(jié)果是否更新

5d9a4bb4-e39c-11ef-9310-92fbcf53809c.png

鏈接:https://www.cnblogs.com/smile635664087/p/16922110.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2975

    瀏覽量

    105149
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3407

    瀏覽量

    42713
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4827

    瀏覽量

    69054
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    392

    瀏覽量

    14938

原文標(biāo)題:9. 編寫應(yīng)用啟動腳本

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    #硬聲創(chuàng)作季 Java項目實戰(zhàn):項目部署(jenkins安裝2)

    JAVA編程語言
    Mr_haohao
    發(fā)布于 :2022年09月08日 17:08:55

    CentOS7配置Tomcat的安裝和整合Jenkins

    第七章----CentOS7 配置 Tomcat 整合Jenkins自動部署
    發(fā)表于 03-29 11:53

    Jenkins空間不足怎么辦

    Jenkins空間問題
    發(fā)表于 08-14 13:33

    Jenkins用戶界面的相關(guān)資料分享

    默認(rèn)情況下,F(xiàn)uego使用Jenkins持續(xù)集成系統(tǒng)來管理板子,測試,日志和測試結(jié)果。Jenkins用戶界面是基于Web的。此頁面顯示了Jenkins界面中不同頁面的幾個屏幕截圖。通過此界面,您可
    發(fā)表于 12-21 06:56

    jenkins是什么?有何應(yīng)用

    最近打算研究下持續(xù)集成,jenkins是一款功能很強(qiáng)大的解決方案,實踐出真知,邊實踐變了解,實戰(zhàn)了下jenkins的應(yīng)用,順便提高下工作效率下文及下圖提到的PBX即為我要監(jiān)控的嵌入式設(shè)備
    發(fā)表于 12-21 08:21

    jenkins簡單的使用教程_jenkins安裝與配置

    jenkins是一個開源軟件項目,是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續(xù)集成變成可能。開發(fā)第一步、提交第二步、編譯第三步、測試第四步、發(fā)布第五步
    發(fā)表于 12-20 18:40 ?8597次閱讀
    <b class='flag-5'>jenkins</b>簡單的使用教程_<b class='flag-5'>jenkins</b><b class='flag-5'>安裝</b>與配置

    jenkins自動化部署

    本文詳細(xì)介紹Jenkins的簡單使用—jenkins自動化部署。
    的頭像 發(fā)表于 02-06 11:27 ?4739次閱讀
    <b class='flag-5'>jenkins</b>自動化部署

    Jenkins詳細(xì)安裝與構(gòu)建部署使用教程

    本文詳細(xì)介紹了Jenkins安裝與構(gòu)建部署使用教程。Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續(xù)集成變成可能。Jenkins是基于Java開發(fā)的一種持
    發(fā)表于 02-06 13:47 ?1783次閱讀
    <b class='flag-5'>Jenkins</b>詳細(xì)<b class='flag-5'>安裝</b>與構(gòu)建部署使用教程

    Jenkins是什么_Jenkins常用功能_jenkins的使用總結(jié)

    本文詳細(xì)回答了Jenkins是什么,Jenkins常用功能以及jenkins的使用總結(jié)。Jenkins 是一個可擴(kuò)展的持續(xù)集成引擎。Jenkins
    發(fā)表于 02-06 14:44 ?2.8w次閱讀
    <b class='flag-5'>Jenkins</b>是什么_<b class='flag-5'>Jenkins</b>常用功能_<b class='flag-5'>jenkins</b>的使用總結(jié)

    基于Jenkins遠(yuǎn)程執(zhí)行shell命令

    打開Jenkins的“系統(tǒng)管理>插件管理”,選擇“可選插件”,在輸入框中輸入“Publish over SSH”進(jìn)行搜索,如果搜索不到可以在“已安裝”里確認(rèn)是否已經(jīng)安裝過。
    的頭像 發(fā)表于 05-05 20:13 ?5736次閱讀
    基于<b class='flag-5'>Jenkins</b>遠(yuǎn)程執(zhí)行shell命令

    Jenkins+Docker一鍵自動化部署SpringBoot最簡流程

    簡述實現(xiàn)步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實現(xiàn)項目自動拉取打包并運(yùn)行。
    的頭像 發(fā)表于 11-23 10:16 ?1425次閱讀

    部署Jenkins服務(wù)時如何保障服務(wù)的高可用性呢?

    現(xiàn)在的企業(yè)很多都在用Jenkins做持續(xù)集成,各個業(yè)務(wù)端都依靠Jenkins,vivo Devops也是使用Jenkins來進(jìn)行持續(xù)構(gòu)建,部署Jenkins服務(wù)時如何保障服務(wù)的高可用變
    的頭像 發(fā)表于 02-14 17:02 ?3362次閱讀

    Jenkins部署啟動案例

    電子發(fā)燒友網(wǎng)站提供《Jenkins部署啟動案例.zip》資料免費(fèi)下載
    發(fā)表于 06-15 14:53 ?0次下載
    <b class='flag-5'>Jenkins</b>部署啟動案例

    提升jenkins構(gòu)建效率的方法

    最近使用 jenkins 部署一個項目的時候,總是構(gòu)建失敗,卡在了git clone這一步驟,經(jīng)過一系列的分析,發(fā)現(xiàn)jenkins執(zhí)行g(shù)it clone時,會先下載(或構(gòu)建).git文件的。
    的頭像 發(fā)表于 07-18 09:40 ?1364次閱讀
    提升<b class='flag-5'>jenkins</b>構(gòu)建效率的方法

    Jenkins+Docker一鍵自動化部署SpringBoot應(yīng)用最精簡流程

    簡述實現(xiàn)步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實現(xiàn)項目自動拉取打包并運(yùn)行。
    的頭像 發(fā)表于 11-06 16:27 ?2375次閱讀
    <b class='flag-5'>Jenkins</b>+Docker一鍵自動化部署SpringBoot應(yīng)用最精簡流程
    7人百家乐官网桌布| 百家乐官网怎么玩能赢钱| 大发888在线娱乐城加盟合作| 百家乐博彩网排名| 美女百家乐官网的玩法技巧和规则| 缅甸百家乐官网网上投注| 现金博彩网| 利都百家乐国际赌场娱乐网规则| 千亿娱百家乐官网的玩法技巧和规则 | 澳门百家乐官网单注下| 澳门百家乐官网牌例| 区。| 娱乐城注册送68| 真人游戏角色| 百家乐真人娱乐场开户注册| 真人百家乐代理合作| 金牌百家乐官网的玩法技巧和规则 | A8娱乐城| 元游棋牌游戏| 大发888捕鱼游戏| 大佬百家乐的玩法技巧和规则 | 休闲百家乐官网的玩法技巧和规则 | 佛山市| 波音开户| 德州扑克胜率| 大发888 澳门赌场| 百家乐注码论坛| 太子百家乐官网的玩法技巧和规则 | 皇冠百家乐官网客户端皇冠| 百家乐官网视频官网| 资中县| 札达县| 融水| 百家乐筹码桌| 百家乐三遍| 澳门百家乐玩法心得技巧| 澳门百家乐线上娱乐城| 百家乐代打是真的吗| 百家乐有免费玩| 百家乐怎么玩高手| 百家乐大小是什么|