Jenkins是一個基於java開發的開源 CI&CD 軟件,用於自動化各種任務,包括構建、測試和部署軟件。
jenkins官網:https://jenkins.io
jenkins下載地址:https://jenkins.io/download/
請檢測是否安裝docker,如果沒有安裝或想提速下載請走這里---->>> Linux Centos7(Mac) 安裝Docker教程
准備:
這里搭建測試整個流程的時候使用的是jenkins+gitee+springboot項目
1、登錄碼雲https://gitee.com/ 創建自己的代碼倉庫。
2、創建springboot項目上傳到倉庫。
一、下載Jenkins鏡像,安裝啟動
有個很殘酷的消息在docker的鏡像倉庫中Jenkins的官方鏡像停止維護了,並且推薦使用jenkins/jenkins:lts鏡像,所有我這里使用的是Jenkins社區提供維護的鏡像
來吧~~~咱們下面就開始
1、創建docker掛在目錄,目的是將docker中Jenkins的持久化數據寫到本地,否則每次重啟jenkins都會重置
mkdir -p /root/jenkins
2、下載Jenkins鏡像,並啟動容器
這個過程可以分成兩步,也可以直接運行第二步,docker run 會先下載鏡像在構建容器並啟動容器:
docker pull jenkins/jenkins
執行docker run,
docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v /root/jenkins:/var/jenkins_home jenkins/jenkins
參數詳情哈~~
-d :指定容器后台運行
--name:我給容器起個名字叫jenkins
-p: 端口映射格式(本地端口:容器端口),8080是訪問端口,50000用戶其他機器上設置了一個或多個基於JNLP的Jenkins代理程序鏈接使用,這個端口可以不要滴(-p 50000:50000參數可以去掉)
-v:物理卷映射,就是本地與容器共享磁盤,格式(本地目錄:容器目錄)
jenkins/jenkins 鏡像存儲名稱或者id
3、查看初始化秘鑰的兩種方式
第一、執行以下命令查看日志,這里有個重點,注意敲黑板了:日志中有個字符串入下圖,第一次登陸需要使用的秘鑰
docker logs jenkins
第二、如果發現日志沒有哈哈哈,幸運眷顧你,不是第一次啟動吧,那你來這里呀~,看看圖片是不是跟日志上的一致,嘿嘿~
cat /root/jenkins/secrets/initialAdminPassword
二、登錄初始化Jenkins
提示(可忽略):
加速初始化可以配置鏡像加速 1、切換目錄, cd /root/jenkins 2、修改hudson.model.UpdateCenter.xml文件 vim hudson.model.UpdateCenter.xml 3、將文件中的鏈接修改為(清華大學鏡像源)https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
1、訪問方式 http://127.0.0.1:8080 ,格式: http://IP或域名:端口,第一次進入初始化加載頁面稍慢3-8分鍾,需要大家注意下哈~,莫着急。
2、訪問之后會出現下面的頁面,將日志中的秘鑰復制進去點擊繼續
3、點擊繼續后進入小等待、點擊一下安裝社區推薦插件(一下就好),哈哈哈~恭喜你進入一個漫長的等待,因為需要取社區下載插件並安裝,過程如下面的圖片。
4、經過漫長艱辛的等待我們迎來的曙光,來來咱們一起設置下第一位管理員的信息,設置好點擊保存完成
5、在實例配置中走默認即可,這也是啟動時候配置的地址。點擊保存並完成,就結束了
三、全局配置並應用項目
1、JDK配置
如果獲取jenkins容器中的默認jdk安裝路徑:
第一步、需要登錄jenkins
docker exec -it jenkins /bin/bash
第二步、執行命令
echo $JAVA_HOME
第三步、獲取java環境安裝地址配置到全局配置的jdk部分
2、maven配置
3、ssh配置
系統默認安裝docker容器位置 /var/jenkins_home/.ssh
可以暫時跳過,看下面第四步創建應用下面的第二步源碼管理中添加git配置中的第一種方案ssh免密
4、插件安裝
登錄jekins后菜單路徑為系統管理-系統配置-插件管理,可以查看
四、創建應用
1、首頁菜單中新建任務,輸入任務名稱,選擇風格確定即可
2、源碼管理中添加git配置
我們可以看到添加url的時候會出現沒有權限,這種情況我們有兩種方式解決,第一種ssh公鑰免密,第二種設置賬號密碼,不管第一種還是第二種都需要有項目的權限(比如開源或者賬號密碼)我用的是開源,gitlab另一種配法:jenkins連接gitlab,提示returned status code 128,附解決辦法
第一種ssh公鑰免密:先登錄jenkins的docker容器
docker exec -it jenkins /bin/bash
然后執行生成秘鑰並復制,可以直接執行下面命令,知其然來這里-->Linux 設置秘鑰登錄(SSH免密連接)
cd /var/jenkins_home/.ssh ssh-keygen -b 4096 -C niunafei0315@163.com touch authorized_keys cat id_rsa.pub >> authorized_keys cat authorized_keys
第二種通過設置Credentials屬性。
因為我采用的是第一種,ssh免密方式下面是結果,
3、這里部署使用的是腳本部署,先添加頂層maven,指定使用的版本輸入命令
# maven命令,輸入框的時候去掉mvn的命令
mvn clean install -Dmaven.test.skip=true
遠程部署命令【Jenkins】遠程部署
狂踩大小坑
1、執行docker run 命令,爆出異常 touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
太坑了我選的是root目錄下,所以原因是映射文件的權限不足,那就給權限唄。
解決方式:
chmod 777 /root/jenkins
2、安裝jenkins時出現 No such plugin: cloudbees-folder的解決辦法
1、打開鏈接“http://ftp.icm.edu.pl/packages/jenkins/plugins/cloudbees-folder/”,在最下面找到並打開“latest”目錄。
2、將目錄中的“cloudbees-folder.hpi”下載下來后放在“jenkins安裝目錄\war\WEB-INF\detached-plugins”文件夾中。
執行1、2步驟后刷新頁面仍然出現“ No such plugin: cloudbees-folder”錯誤,猜測這個“hpi”文件可能是項目啟動時候加載,是需要重啟jenkins服務才可以,因此執行:
3、在“控制面板-管理工具-服務”中找到“jenkins”服務,重啟服務。docker 使用命令docker restart jenkins
再次打開jenkins的鏈接 http://localhost:8080/ 后已經可以正常安裝插件,問題解決。
解決方案轉載於:https://www.cnblogs.com/changjianblog/p/10916098.html
打包異常 https://www.cnblogs.com/sxdcgaq8080/p/10489326.html
3、初始化完成顯示部分插件安裝失敗,
方案:更換系統管理--插件管理--高級--升級站點 ,然后在已安裝中查看異常插件,進行可選插件中搜索並直接安裝
站點鏈接提供:
http://updates.jenkins.io/update-center.json http://mirror.xmission.com/jenkins/updates/update-center.json
4、jar中沒有主清單屬性【解決辦法】
原因是maven-plugin中存在repackage需要排除掉
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <!--一定要設置成true.這樣才會用對應env目錄下的配置文件覆蓋原來的--> <filtering>true</filtering> </resource> </resources> </build>