在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Jenkins的安裝教程

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

1. Jenkins是什么?

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

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

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

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

3. Jenkins的安裝

(1)準備條件

安裝JDK

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

. 配置jdk的環境變量

#進入/etc/profile配置文件
vim /etc/profile

. 將以下代碼填入到profile文件內底

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環境信息

javac

輸入javac后出現以下信息則安裝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 當虛擬機黑屏時 也會運行 日志—>輸出到jenkins.log & 后臺運行

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環境和jenkins對應的Git插件

(1) CentOS 7 上安裝Git環境

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

復制

(2) Jenkins安裝Git插件

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

(3) Jenkins配置Git環境

此處無需在jenkins中配置Git環境,采用默認生成的即可

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

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

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

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

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

jenkins-》新建任務-》自由風格項目

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

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

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

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

5. 憑證配置

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

1. 憑證插件安裝Credentials Binding

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

該插件默認在一開始就會被安裝,安裝后在jenkins-》系統管理-》安全欄目會出現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上發布Java項目時需要使用Maven來進行構建打包(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

# 當前maven的安裝目錄為:
/usr/wubin/
apache-maven-3.6.3

(2) 環境配置

vi /etc/profile

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

復制

(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

復制

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


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

復制

(8) Maven測試項目構建

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

新建Maven項目

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

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

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

使用Git上傳到碼云

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

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

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

# 關聯Gitee遠程倉庫
$ git remote add origin https://gitee.com/nobug8/it235-jenkins-jar.git

# 將本地倉庫推送到遠程倉庫的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

復制

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

(9) Jenkins添加Maven項目任務

①. 新建任務

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

②. 編寫Maven編譯命令

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

③. 構建并查看控制臺日志

保存后,點擊立即構建,然后進入日志控制臺查看日志

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

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

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

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

構建成功后查看jenkins的workspace目錄下的jar包

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

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

到此Maven集成完畢

配置Post Steps,選中執行shell

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

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

7. 配置SSH免密登錄

由于jenkins構建消耗內存極大,一般jenkins是一臺單獨的工具機器,Java項目一般在其他的機器上,這里我重新安裝一臺虛擬機

應用服務器信息

IP:192.168.223.129

JDK:1.8

user:root

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

端口:9010

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

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

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

復制

運行后會在當前用戶的根目錄生成一個.ssh文件夾

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

ssh文件夾中的文件描述

id_rsa: 生成的私鑰文件

id_rsa.pub:生成的公鑰文件

接下來需要將公鑰導入到認證文件中

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

復制

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

.ssh目錄的權限必須是700

.ssh/authorized_keys文件權限必須是600

給對應文件授權

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

復制

將authorized_keys文件拷貝到另一臺應用服務器的root用戶.ssh目錄下

# 在應用服務器(192.168.223.129)上用root用戶創建/root/.ssh文件夾  mkdir -p /root/.ssh

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

scp -p ~/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys

復制

在jenkins192.168.223.128服務器上進行免密連接測試

# 在jenkins服務器的/root/目錄下創建filetest文件,并拷貝到應用服務器
$ cd ~/
$ touch filetest
$ scp -p filetest [email protected]:/root/filetest
# 進入到應用服務器(192.168.223.129),檢查/root目錄下是否出現filetest

# 在jenkins服務器上使用ssh進行免密連接測試,成功后會出現Last Login的提示
$ ssh [email protected]
Last login: Sun Sep 20 21:53:03 2020
$ exit

復制

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

8. 編寫Jenkins發布腳本

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

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

#!/bin/bash

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

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

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

9. 編寫應用啟動腳本

在/data/app/my-boot目錄下創建啟動腳本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目錄下創建停止腳本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

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

將下述啟動代碼配置jenkins中

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

訪問并測試代碼是否生效

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

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

復制

修改代碼返回值,提交至Gitee,并再次進行構建發布,訪問http://192.168.223.129:9010查看結果是否更新

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    20

    文章

    2982

    瀏覽量

    106398
  • 開源
    +關注

    關注

    3

    文章

    3512

    瀏覽量

    43204
  • 代碼
    +關注

    關注

    30

    文章

    4872

    瀏覽量

    69913
  • 腳本
    +關注

    關注

    1

    文章

    395

    瀏覽量

    28262

原文標題:9. 編寫應用啟動腳本

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    CentOS7配置Tomcat的安裝和整合Jenkins

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

    Jenkins空間不足怎么辦

    Jenkins空間問題
    發表于 08-14 13:33

    Jenkins用戶界面的相關資料分享

    默認情況下,Fuego使用Jenkins持續集成系統來管理板子,測試,日志和測試結果。Jenkins用戶界面是基于Web的。此頁面顯示了Jenkins界面中不同頁面的幾個屏幕截圖。通過此界面,您可
    發表于 12-21 06:56

    jenkins是什么?有何應用

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

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

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

    jenkins自動化部署

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

    Jenkins詳細安裝與構建部署使用教程

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

    Jenkins是什么_Jenkins常用功能_jenkins的使用總結

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

    基于Jenkins遠程執行shell命令

    打開Jenkins的“系統管理>插件管理”,選擇“可選插件”,在輸入框中輸入“Publish over SSH”進行搜索,如果搜索不到可以在“已安裝”里確認是否已經安裝過。
    的頭像 發表于 05-05 20:13 ?5806次閱讀
    基于<b class='flag-5'>Jenkins</b>遠程執行shell命令

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

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

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

    現在的企業很多都在用Jenkins做持續集成,各個業務端都依靠Jenkins,vivo Devops也是使用Jenkins來進行持續構建,部署Jenkins服務時如何保障服務的高可用變
    的頭像 發表于 02-14 17:02 ?3572次閱讀

    Jenkins部署啟動案例

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

    提升jenkins構建效率的方法

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

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

    簡述實現步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實現項目自動拉取打包并運行。
    的頭像 發表于 11-06 16:27 ?2461次閱讀
    <b class='flag-5'>Jenkins</b>+Docker一鍵自動化部署SpringBoot應用最精簡流程
    主站蜘蛛池模板: 公开免费视频 | 成年人色网站 | 国产免费高清福利拍拍拍 | 成在线人视频免费视频 | 成人精品一级毛片 | 69xxxⅹxxxxxx日本 | 男女午夜特黄毛片免费 | 特黄特色大片免费视频大全 | 四虎精品免费永久在线 | 天天综合天天做 | 亚洲欧美强伦一区二区另类 | 7799国产精品久久久久99 | 草久久久久| 伊人久久综合成人网小说 | 欧美福利片在线观看 | 伊人网综合在线视频 | 天天天操 | 日本黄页网址 | 不卡中文字幕在线 | 七月丁香八月婷婷综合激情 | 美女视频永久黄网站免费观看国产 | 亚洲视频一区二区三区 | 免费看av的网址 | 69国产 | 国产黄色三级三级三级 | 一级全免费视频播放 | 爱爱免费| 黄色国产在线视频 | 在线观看亚洲天堂 | 黄色网址免费在线 | 国产精品视频一区二区三区 | 色www免费视频 | 麻豆国产三级在线观看 | 亚洲无色 | 四虎三级 | 成人二区 | 明日花绮罗在线观看 | 五月网址| www.色妞 | 久久99久久精品国产只有 | 天天爽夜夜爽人人爽曰喷水 |