Jenkins+GitLab在CentOS7上的自動化部署方案

最近在安裝jenkins實現微服務的自動發布,記錄配置過程以免再次踩坑。

Centos7環境準備

jenkins、gitlab配置,全程使用ftpuser普通用戶操作

(1)安裝好jdk并配置好環境變量

安裝路徑/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64

(2)安裝好maven并配置好setting文件,能連接maven倉庫

安裝路徑/usr/local/maven3.5/

安裝jenkins

從http://mirrors.jenkins.io/war下載最新的jenkins安裝包

cd /home/ftpuser

wget http://mirrors.jenkins.io/war/2.161/jenkins.war

Jenkins 的安裝不用做任何配置,war包自帶Jetty服務器,直接用java命令啟動服務即可

[ftpuser@localhost home]$ java -jar jenkins.war &

運行Jenkins 就啟動成功了。/home/ftpuser/.jenkins/workspace為jenkins的工作空間。第一次啟動Jenkins時,出于安全考慮,Jenkins會自動生成一個隨機的按照口令。注意控制臺輸出的口令,復制下來,然后在瀏覽器輸入密碼。

INFO:




Jenkins initial setup is required. An admin user has been created and a password generated.

Please use the following password to proceed to installation:

0cdc37ieue6540c08cde6e4c96f46da0f

This may also be found at: /root/.jenkins/secrets/initialAdminPassword




訪問瀏覽器訪問:http://localhost:8080/。輸入:0cdc37ieue6540c08cde6e4c96f46da0f

進入用戶自定義插件界面,建議選擇安裝官方推薦插件,因為安裝后自己也得安裝。

在這里插入圖片描述

接下來是進入插件安裝進度界面,插件一次可能不會完全安裝成功,可以點擊Retry再次安裝,直到全部安裝成功。

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

等待插件安裝完成,配置用戶名密碼,保存即可完成安裝。

在這里插入圖片描述

插件安裝

在上面安裝jenkins的過程中,已經安裝了大部分的插件。還有幾個插件需要我們手動安裝。

Git plugin、Maven Integration plugin、publish over SSH、SSH這四個插件。

系統管理->插件管理

在這里插入圖片描述

搜索相應的插件直接安裝即可,可以在已安裝列表中查看插件是否已經安裝。安裝好這些插件我們就可以進行配置了。

全局配置

系統管理->全局工具配置

maven 配置

配置默認全局 settings文件,就是linux服務器上maven中的settings文件的路徑。
在這里插入圖片描述

往下拉,配置maven的安裝路徑。

在這里插入圖片描述

jdk安裝路徑配置

配置linux服務器上jdk的安裝路徑。

在這里插入圖片描述

密鑰配置

Jenkins從gitlab或者git上clone代碼的時候,可以用密鑰登錄或者用戶名密碼登錄。在此我們用密鑰登錄。否則在下面配置maven的倉庫地址的時候就會報無權限錯誤。

Failed to connect to repository : Command “/usr/bin/git ls-remote -h git@gitlab.xxx:cmnn/admin.git HEAD” returned status code 128:

stdout:

stderr: ssh: connect to host gitlab.xxx port 22: Connection refused

fatal: Could not read from remote repository.

linux上生成密鑰對

linux上生成密鑰和在windows上生成密碼一樣,切換到當前用戶目錄下,進入.ssh目錄。

[ftpuser@localhost home]$ cd ~

[ftpuser@localhost ~]$ ls -a

. .bash_logout .bashrc .gitconfig .java jenkins.war .ssh

… .bash_history .bash_profile config .groovy .jenkins .m2

[ftpuser@localhost ~]$ cd .ssh

執行以下命令,一路enter默認即可。

[ftpuser@localhost .ssh]ssh-keygen -t rsa -C [“itpsc@qq.com”](mailto:)

[ftpuser@localhost .ssh]git config --global user.email [“itpsc@qq.com”](mailto:)

[ftpuser@localhost .ssh]git config --global user.name “itpsc”

itpsc@qq.com 是登錄gitlab賬號,這個根據自己的實際情況修改。

可以看到生成了公鑰id_rsa.pub和私鑰文件id_rsa,這兩個密鑰的作用是:公鑰需要添加到gitlab的SSHKey上,私鑰要配置到jenkins上。下面會講到。

[ftpuser@localhost .ssh]$ ls

config id_rsa id_rsa.pub known_hosts

[ftpuser@localhost .ssh]$

我們對gitlab的域名進行了修改,所以增加了一個config文件

在這里插入圖片描述

gitlab配置公鑰

登錄gitlab,點擊Profiles settings->SSH Keys->ADD SSH KEY。將上述生成的id_rsa.pub文件中的內容粘貼到Key文本框中保存即可。

在這里插入圖片描述

將公鑰配置到gitlab上后,可以用git命令克隆遠程倉庫的代碼驗證是否能連接上gitlab。可能會遇到“Bad owner or permissions on /home/ftpuser/.ssh/”的錯誤,解決辦法是修改.ssh目錄的權限。

[ftpuser@localhost ~]$ chmod 600 *

jenkins配置全局密鑰

憑據 ->添加憑據

在這里插入圖片描述

輸入任意的Username,將上述生成的id_rsa中的內容粘貼到Private Key中,保存。

在這里插入圖片描述

到此,密鑰的配置已經完了,下面創建maven項目。

新建maven項目

登錄jenkins,新建一個項目,選擇“構建一個maven項目”

在這里插入圖片描述

General配置

勾選丟棄久的構建,填寫保存構建的天數和最大個數,這個數可以按自己的需求配置。比如“保存構建的天數”設置為5,表示保存5天內的構建記錄,更早的構建記錄就會被丟棄。
在這里插入圖片描述

源碼管理

將項目的gitlab倉庫地址復制到URL輸入框中,選擇Credentials,也就是上面創建的全局密鑰,填寫發布分支。
在這里插入圖片描述

構建觸發器

勾選Build whenever a SNAPSHOT dependency is built
在這里插入圖片描述

構建環境

在這里插入圖片描述

Build

Root POM填寫pom.xml

Goals and options 填寫clean install -Dmaven.test.skip=true -Ptest,意思是排除測試的包內容。

在這里插入圖片描述

Post Steps

方式1:

這個配置是為了構建成功后,自動執行腳本運行jar包,達到自動發布的目的。

nohup java -Dfile.encoding=utf-8 -jar

/home/ftpuser/.jenkins/workspace/admin/target/admin-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev > /dev/null 2>&1 &

注意我們這里采用的是“nohup … > /dev/null 2>&1 &”命令,它的作用是jenkins執行完shell腳本后結束構建任務,且讓java進程后臺進行。否則jenkins的job無法結束,一直處于構建狀態。到此項目配置完了,就可以開始構建項目了。

方式2:

Command部分

#!/bin/bash

cd /home/ftpuser/deploy

./stop.sh

./replace.sh

echo “Execute shell Finish”

BUILD_ID=dontKillMe nohup /home/ftpuser/deploy/start.sh &

在/home/ftpuser/deploy目錄下增加stop.sh、start.sh、replace.sh三個腳本文件。

stop.sh

echo “>>>>>>>>Stopping vpclub-wx-admin>>>>>>>>>>>>>”

pid=ps -ef | grep vpclub-wx-admin-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'

if [ -n “$pid” ]

then

echo “kill -9 的pid:” $pid

kill -9 $pid

fi

replace.sh

echo “>>>>>>>>Copy vpclub-wx-admin>>>>>>>>>>>>>”

cp /home/ftpuser/.jenkins/workspace/vpclub-wx-admin/target/vpclub-wx-admin-0.0.1-SNAPSHOT.jar /home/ftpuser/deploy

startup.sh

echo “>>>>>>>>Start vpclub-wx-admin>>>>>>>>>>>>>”

java -jar /home/ftpuser/deploy/vpclub-wx-admin-0.0.1-SNAPSHOT.jar

安全配置

安全配置,新增用戶,給用戶配置權限。

新建用戶

系統管理->管理用戶->新建用戶。

在這里插入圖片描述

系統管理->全局安全配置->授權策略->項目矩陣授權策略。點擊“Add user group”添加用戶并勾選相應的權限。一般開發人員給read、view與build的權限就可以,這個可以根據需求配置。

在這里插入圖片描述

啟用項目安全

啟用項目安全的目的是,讓指定的人可以操作相應的項目。點擊已創建好的maven項目->配置,General 標簽下,勾選“啟用項目安全”并給該項目配置并授權用戶操作。

在這里插入圖片描述

jenkins還有很多強大的功能,也是springboot推薦使用的自動化部署工具。到此jenkins在centos7上的安裝,以及與gitlab的配置介紹完了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93885.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93885.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93885.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

打開或者安裝Navicat時出現Missing required library libcurl.dll,126報錯解決方法(libmysql_e.dll等)

提示 Missing required library libcurl.dll 出現原因是由于Navicat安裝目錄下libcurl.dll可能不能用了,下載該文件放到Navicat安裝目錄下即可。下載地址:libcurl.dll — download free for Windows 下載解壓包里只有個libcurl.dll 提示 Missing requir…

基于SpringBoot的流浪動物領養管理系統【2026最新】

作者:計算機學姐 開發技術:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源碼”。 專欄推薦:前后端分離項目源碼、SpringBoot項目源碼、Vue項目源碼、SSM項目源碼、微信小程序源碼 精品專欄:…

Qt實現TabWidget通過addTab函數添加的頁,頁內控件自適應窗口大小

前言:因為項目的要求,需要把幾個不同類型功能的界面集成在同一個窗口中,方便用戶不切換窗口,也能快捷的操作不同類型的功能。我首先想到的是通過選項卡方式,讓幾個類別的功能界面通過不同選項卡進行切換,這…

代碼隨想錄算法訓練營27天 | ??56. 合并區間、738.單調遞增的數字、968.監控二叉樹(提高)

題目鏈接&#xff1a;56. 合并區間、738.單調遞增的數字、968.監控二叉樹 文章鏈接&#xff1a;代碼隨想錄 貪心算法 1. 合并區間 &#xff08;待更新...&#xff09; class Solution { private:static bool cmp(const vector<int>& a, const vector<int>&…

從 H.264/H.265 到 H.266:RTSP播放器的跨代際演進

引言&#xff1a;H.266與實時視頻的交匯點 視頻編解碼的發展歷程&#xff0c;始終是 帶寬效率與視覺體驗的博弈。從 H.264 的普及&#xff0c;到 H.265/HEVC 的深化應用&#xff0c;每一次標準迭代&#xff0c;都在推動視頻向更高分辨率、更高幀率、更復雜場景的應用邁進。而 …

oc-mirror plugin v2 錯誤could not establish the destination for the release i

openshift 4.19使用的鏡像倉庫為harbor. 運行disk to registry時出現下面的錯誤&#xff1a; 2025/08/19 17:51:13 [ERROR] : [Executor] [release collector] could not establish the destination for the release image 備注&#xff1a; 我沒有賬戶&#xff0c;無法打開…

Android auncher3實現簡單的負一屏功能

Android launcher3實現簡單的負一屏功能 1.前言&#xff1a; 之前實現過Launcher3從湊提修改成單層&#xff0c;今天來講解一下如何實現一個簡單的負一屏功能&#xff0c;涉及的類如下&#xff0c;直接看代碼。 2.NegativeScreenAdapter&#xff1a; package com.example.ne…

跨網閘數據庫同步:在物理隔離中架起安全的數據橋梁

作者:DeepSeek-R1 | 日期:2025年8月17日 引言 在等保2.0和分級保護政策的要求下,高密級網絡(如政務內網、金融核心網)必須與低密級網絡(如互聯網)物理隔離。但業務又要求數據跨網流動(如市民在線提交申請、分支機構數據回傳)。如何解決這一矛盾?雙向網閘與單向光閘成…

【Android】一文詳解Android里的AOP編程

一文詳解Android里的AOP編程 1. 基于 AspectJ&#xff08;編譯期/打包期織入&#xff09; 思路&#xff1a;用 AspectJ 編譯器在 編譯階段 或 Gradle Transform 階段&#xff0c;把切面邏輯織入 class / bytecode。 特點&#xff1a; 能實現類似 Spring AOP 的注解切面&#…

AI+預測3D新模型百十個定位預測+膽碼預測+去和尾2025年8月21日第167彈

從今天開始&#xff0c;咱們還是暫時基于舊的模型進行預測&#xff0c;好了&#xff0c;廢話不多說&#xff0c;按照老辦法&#xff0c;重點8-9碼定位&#xff0c;配合三膽下1或下2&#xff0c;殺1-2個和尾&#xff0c;再殺4-5個和值&#xff0c;可以做到100-300注左右。(1)定位…

機器學習【十】neural network

系統梳理了機器學習與神經網絡的基礎知識&#xff0c;涵蓋理論、核心概念及代碼實踐。理論部分包括線性模型&#xff08;向量表示、廣義線性模型&#xff09;、分類與回歸的區別、梯度下降&#xff08;批量/隨機/小批量&#xff09;、激活函數&#xff08;Sigmoid、ReLU等&…

如何用算力魔方4060安裝PaddleOCR MCP 服務器

在當今數字化快速發展的時代&#xff0c;OCR&#xff08;光學字符識別&#xff09;技術已經成為從圖像中提取文本信息的重要工具。無論是在自動化辦公、智能文檔處理還是在內容創作領域&#xff0c;OCR 技術的應用都極大地提高了工作效率和準確性。本文將詳細介紹如何利用算力魔…

Azure的遷移專業服務是怎么提供的

好的&#xff0c;這是一個非常實際的問題。Azure的遷移專業服務&#xff08;Professional Services for Migration&#xff09;并非一個單一的“產品”&#xff0c;而是一個由微軟及其龐大的合作伙伴生態系統共同提供的、基于成熟方法論的綜合服務框架。其提供方式可以概括為&a…

Seaborn數據可視化實戰:Seaborn入門-環境搭建與基礎操作

Seaborn環境搭建與配置 學習目標 本課程將指導學員如何在不同的操作系統&#xff08;Windows, macOS, Linux&#xff09;上安裝Seaborn庫&#xff0c;以及如何配置Python環境&#xff0c;包括使用Jupyter Notebook和Spyder等集成開發環境&#xff08;IDE&#xff09;的基本操作…

Windows下RabbitMQ完整安裝指南

一、RabbitMQ 簡介 RabbitMQ 是一款基于 Erlang 語言開發的開源消息隊列中間件&#xff0c;實現了高級消息隊列協議&#xff08;AMQP&#xff09;。其最初起源于金融系統&#xff0c;專為分布式系統中的消息存儲與轉發設計&#xff0c;在可靠性、擴展性和高可用性方面表現卓越…

thingsboard 通過Entities hierarchy部件實現左邊菜單點擊,右邊的表格按左邊的分類型進行過濾篩選數據源

在 ThingsBoard 中&#xff0c;要讓“Entities hierarchy”部件&#xff08;左側樹形導航&#xff09;與右側的數據表格實現聯動——即點擊左側某個節點后&#xff0c;右側表格立刻按該節點對應的實體類型/層級進行過濾——需要把“數據源別名&#xff08;Alias&#xff09; 儀…

【Ansible】核心概念解析:架構、清單管理與配置入門

本專欄文章持續更新&#xff0c;新增內容使用藍色表示。對于系統管理員而言&#xff0c;手動管理每一臺服務器不僅維護難度極大&#xff0c;而且即使經驗豐富&#xff0c;也難免出現疏忽和錯誤。自動化技術能有效避免因手動管理系統和基礎架構而產生的各類問題。其優點包括&…

rs-fMRI_兩篇文章中分析方法的梳理(近乎翻譯)

文章一文章信息APOE ε4 influences within and between network functional connectivity in posterior cortical atrophy and logopenic progressive aphasia2024美國梅奧診所發表在Alzheimers Dement. 的文章。“APOE ε4等位基因對后皮質萎縮與進行性語言障礙型失語癥的網絡…

在互聯網大廠的Java面試:謝飛機的搞笑歷險記

在互聯網大廠的Java面試&#xff1a;謝飛機的搞笑歷險記 在一個陽光明媚的早上&#xff0c;我們的主角&#xff0c;程序員謝飛機&#xff0c;走進了一家著名的互聯網大廠&#xff0c;準備迎接他人生中最嚴峻的挑戰——Java面試。 第一輪&#xff1a;基礎技術面試 面試官&#x…

微軟AD國產化替換倒計時——不是選擇題,而是生存題

一直以來&#xff0c;微軟Active Directory&#xff08;AD&#xff09;作為企業身份管理和訪問控制的核心組件&#xff0c;承擔著用戶認證、權限分配、資源目錄管理等基礎職能。然而&#xff0c;隨著政策、合規與網絡安全壓力不斷加劇&#xff0c;AD面臨著前所未有的挑戰&#…