前言
最近公司需要弄一套自動化運維部署,於是抽空學習了一下,用了兩天左右完成Jenkins的安裝部署和各種專案的配置化,於是整理一下進行分享。
介紹
Jenkins是一個獨立的開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。前身是Hudson是一個可擴充套件的持續整合引擎。可用於自動化各種任務,如構建,測試和部署軟體。Jenkins可以通過本機系統包Docker安裝,甚至可以通過安裝Java Runtime Environment的任何機器獨立執行。
Jenkins特點:
- 開源免費;
- 跨平臺,支援所有的平臺;
- master/slave支援分散式的build;
- web形式的視覺化的管理頁面;
- 安裝配置超級簡單;
- tips及時快速的幫助;
- 已有的200多個外掛
安裝教程
這裡我們使用的是離線包方式安裝。
官網映象地址: https://mirrors.jenkins.io/
下載地址: https://jenkins.io/download/
華為映象地址: https://mirrors.huaweicloud.com/home
百度網盤地址:連結:https://pan.baidu.com/s/10FNG5p-upLgNlCUUrdUIMA
提取碼:r9x6
直接下載war包,並安裝好jdk之後,輸入:nohup java -jar jenkins.war --httpPort=8888 &
進行啟動,然後網頁瀏覽器輸入 ip:8888開啟設定好賬號密碼之後登入即可,外掛安裝推薦使用官方推薦。
依賴環境安裝
因為需要對一些專案進行打包,因此需要安裝這些環境的依賴,這裡我們就安裝dk、git、maven(java專案),nodejs(前端專案)即可。
jdk安裝
說明: 一般CentOS自帶了openjdk,但是我們這裡使用的是oracle的JDK。所以要寫解除安裝openjdk,然後再安裝在oracle下載好的JDK。如果已經解除安裝,可以跳過此步驟。
首先輸入 java -version
檢視是否安裝了JDK,如果安裝了,但版本不適合的話,就解除安裝
輸入
rpm -qa | grep java
檢視資訊
然後輸入:
rpm -e --nodeps “你要解除安裝JDK的資訊”
如: rpm -e --nodeps java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
確認沒有了之後,解壓下載下來的JDK
tar -xvf jdk-8u144-linux-x64.tar.gz
移動到opt/java資料夾中,沒有就新建,然後將資料夾重新命名為jdk1.8。
mv jdk1.8.0_144 /opt/java
mv jdk1.8.0_144 jdk1.8
然後編輯 profile 檔案,新增如下配置
輸入:
vim /etc/profile
新增:
export JAVA_HOME=/opt/java/jdk1.8
export JRE_HOME=/opt/java/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
新增成功之後,輸入
source /etc/profile
java -version
檢視是否配置成功
maven安裝
將maven進行解壓,上傳到伺服器的/opt目錄下,然後在conf目錄下修改setting配置,
setting配置如下
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
</servers>
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<profiles>
<!-- 設定maven預設jdk -->
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profiles>
</settings>
新增maven的環境,編輯/etc/profile檔案,新增如下配置:
export MAVEN_HOME=/opt/apache-maven-3.5.0
export PATH=.:${JAVA_HOME}/bin:$MAVEN_HOME/bin:$PATH
新增成功之後,輸入
source /etc/profile
mvn -v
檢視是否配置成功
git
下載地址:
https://git-scm.com/downloads
centos7預設安裝了git服務,如果gitlab(專案原始碼)服務地址和Jenkins不在統一伺服器上,則需要配置ssh key。
命令如下:
git config --global user.name "xx"
git config --global user.email "x@x.com"
ssh-keygen -t rsa -C "x@x.com"
clip < ~/.ssh/id_rsa.pub
然後在gitlab的賬號中新增即可。
nodejs
node下載地址:
http://nodejs.cn/download/current/
https://nodejs.org/dist/
下載離線包,進行解壓,然後重新命名為nodejs,進行移到到/usr/local中,最後建立軟鏈
建立軟鏈:
tar -zxvf node-v11.15.0-linux-x64.tar.gz
mv node-v11.15.0-linux-arm64/ nodejs
mv nodejs/* /usr/local/nodejs
ln -s /usr/local/nodejs/bin/node /usr/local/bin
ln -s /usr/local/nodejs/bin/npm /usr/local/bin
npm install -g yarn
ln -s /usr/local/nodejs/bin/yarn /usr/local/bin
Jenkins使用
簡易流程圖
外掛安裝
Jenkins管理->外掛管理,進行下載新增。
注:外掛安裝之後需要Jenkins重啟,勾選外掛下載之後可以手工勾選
Maven Integration
Git Parameter Plug-In
可以在構建時進行分支選擇
Publish over SSH
ssh遠端服務外掛,必裝。
ThinBackup
Jenkins備份配置服務的外掛
服務配置
環境配置
關於依賴環境的服務配置,必做,最好先安裝上面的外掛。
依賴環境
主要是上面安裝的環境的路徑填寫。
釋出服務配置
ssh遠端服務配置
Jenkins管理->系統配置
構建專案
專案構建有很多種選擇,這裡我們就用java專案(依賴maven)和前端專案(依賴nodejs)來做示例。
首先回到主介面,點選新建專案。
java專案構建
這裡我們是建立java專案,因此我們選擇maven方式構建。
這裡構建的專案可以使用我之前寫的springboot專案,https://github.com/xuwujing/springBoot-study/tree/master/springboot-package
建立完成之後,我們根據圖片來進行填寫,下面是設定了在編譯時進行引數配置,可以手動選擇分支,可以不進行配置。
這裡需要配置git專案地址和制定分支
編譯前的操作,無特殊要求,可以不操作
打包操作,可以使用預設值
配置的遠端服務地址
配置完畢之後,點選儲存即可。
進行構建
構建成功之後,在遠端服務的設定好的路徑可以檢視服務已更新並且已經啟動成功!
前端專案構建
這裡我們是建立前端專案,我們可以選擇freestyle方式進行構建。
這裡的配置基本同上
這裡的構建選擇執行shell命令:
進行遠端傳輸
進行構建
額外操作
自定義工作空間
將git的專案下載到指定目錄,並進行操作
在general中點選高階->勾選自定義空間
依賴關係
在打包的時候,會遇到依賴關係,比如打包A專案,需要B專案先進行打包,但是又不想每次點選兩次,因此就可以用Jenkins的上下級關係打包,A專案依賴B專案,那麼打包B專案之後自動打包A專案即可。
執行分支選擇
在專案的配置中勾選如下引數
配置檔案備份
需要全域性配置的外掛 ThinBackup
點選backup now 即可進行備份
異常處理
這裡是我在進行配置的時候遇到的一些錯誤,整理如下
1. returned status code 128
原因:鑑權問題,ssh key的鑑權;
解決辦法:ssh key的配置,若是配置好了,可在Jenkins伺服器手動 git clone一下在進行設定。
2. 配置金鑰時報錯的解決:Failed to add SSH key. Message invalid privatekey(Jenkins 2.257)
原因: 祕鑰過長,Jenkins不支援
解決辦法: 重新生成短祕鑰,
ssh-keygen -m PEM -t rsa -b 4096
-m 引數指定金鑰的格式,PEM是rsa之前使用的舊格式
-b 指定金鑰長度。對於RSA金鑰,最小要求768位,預設是2048位。
3. Npm install 報錯
Failed at the node-sass@4.14.1 postinstall script. npm ERR! This is probably not a problem with npm.
參考:
https://blog.csdn.net/weixin_41940690/article/details/106977906
https://zhuanlan.zhihu.com/p/250812475
解決辦法:
npm i --unsafe-perm=true
4. Npm 執行許可權問題
參考:
https://blog.csdn.net/qq_40202111/article/details/105972546
https://www.jianshu.com/p/ab1c92a61809
https://segmentfault.com/q/1010000019989912
https://blog.csdn.net/wangooo/article/details/108443291
實際並未解決問題,
最終辦法:
npm install &&
chmod -R 777 node_modules/ &&
npm run build
5. @vitejs/plugin-vue requires vue (>=3.2.13) or @vue/compiler-sfc to be present in the dependency tree
參考:
https://blog.csdn.net/bey_bey_bey/article/details/120744400
原因: package.json缺失配置, "vue-loader": "^14.2.4",
解決辦法: 新增成功即可.
如果還是不行,使用
npm install @vue/compiler-sfc
6. error icss-utils@5.1.0: The engine “node“ is incompatible with this module
參考:
https://blog.csdn.net/weixin_40013817/article/details/115194426
執行如下命令
yarn config set ignore-engines true
其他
音樂推薦
原創不易,如果感覺不錯,希望給個推薦!您的支援是我寫作的最大動力!
版權宣告:
作者:虛無境
部落格園出處:http://www.cnblogs.com/xuwujing
CSDN出處:http://blog.csdn.net/qazwsxpcm
個人部落格出處:http://www.panchengming.com