基于CentOS 6.5 服務器上已裝 JDK ,Tomcat 。
1. 在Linux服務器上下載安裝Jenkins
- 下載地址 : https://jenkins.io/ 下載如下的war包版本即可
1557365942123.png - 將其部署到tomcat之中并啟動,然后按提示輸入 /root/.jenkins/secrets/initialAdminPassword 中的密碼
- 安裝Jenkins插件(額外推薦插件Rebuilder、Safe Restart,可在系統管理 --> 插件管理中選擇安裝)
-
創建管理員用戶
1557366682598.png
2. 安裝git, maven 并進行相關配置
2.1 安裝git
-
安裝git
yum install git
-
生成密鑰并配置到相應的倉庫上
ssh-keygen -t rsa -C "youremail@abc.com"http://你的郵箱地址 連按三次回車 然后將 /root/.ssh/id_rsa.pub 中的公鑰添加進倉庫
2.2 安裝maven
-
安裝maven
將maven zip文件上傳至Linux服務器,并解壓 unzip filename.zip
-
修改maven 環境變量
vim /etc/profile //添加如下內容 export MAVEN_HOME=maven所在路徑 export PATH=$MAVEN_HOME/bin:$PATH //保存并退出 //啟動配置 . /etc/profile
2.3將Linux服務器注冊到Jenkins上
-
開啟服務器上的ssh服務
通過一下命令查看是否開啟 netstat -anp | grep :22 若netstat 命令報錯 則先安裝網絡工具并重啟服務器 yum install net-tools
-
在Jenkins中操作遠程服務器
系統管理 ---> 新建節點
其中JVM選項: 可以用來配置JVM的啟動參數
-
啟動剛配置的節點
若啟動時,報類似如下錯誤 /var/root/.ssh/known_hosts [SSH] No Known Hosts file was found at /var/roor/.ssh/known_hosts. Please ensure one is created at this path and that Jenkins can read it. 則在服務器端執行如下命令 cd /root/.ssh //對應各自密鑰所在文件目錄 cat id_rsa.pub > authorized_keys chmod 700 authorized_keys 最后修改節點配置頁面中的主機密鑰驗證策略項 Host Key Verification Strategy 為 Manually trusted key Verification Strategy
-
重新啟動節點
[05/09/19 10:54:49] [SSH] Starting agent process: cd "/usr/jenkins" && /usr/java/jdk1.8.0_161/bin/java -jar remoting.jar -workDir /usr/jenkins May 09, 2019 10:54:49 AM org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir INFO: Using /usr/jenkins/remoting as a remoting work directory May 09, 2019 10:54:49 AM org.jenkinsci.remoting.engine.WorkDirManager setupLogging INFO: Both error and output logs will be printed to /usr/jenkins/remoting <===[JENKINS REMOTING CAPACITY]===>channel started Remoting version: 3.30 This is a Unix agent Evacuated stdout Agent successfully connected and online
出現以上信息則啟動成功
3 Jenkins 與Github/GitLab集成配置
### 3.1 創建新任務
輸入任務名,選擇構建自由風格的軟件i項目 ---> Confirm
3.2 限制項目運行節點
選擇項目的運行節點,用GitHub的話可以勾選GitHub項目。
3.3 源碼管理
選擇git,填寫GitHub或GitLab代碼庫地址。這里會遇到授權失敗的問題,搜索了很多方法,最終通過如下兩個方法解決(一般通過私鑰授權方式即可)。
-
添加私鑰授權方式,將服務器中/root/.ssh/id_rsa中的私鑰填入進行授權,之后要保證公鑰已經添加進Github/GitLab中和寫入/root/.ssh/authorized_keys 文件中
1557387813346.png GitHub/GitLab賬戶密碼驗證
之后在Credentials中依次選擇剛才添加的驗證方式即可。
你也可以選擇使用自己搭建的GitLab,具體的搭建方式見:個人Gitlab搭建及配置
3.4 構建及部署操作
其中:
- WAR/EAR files : 指的是Jenkins工作目錄下war的存放位置,也就是你所要部署的war包名稱。
- Context path :瀏覽器訪問時的項目名。
- Credentials :部署到指定tomcat下的授權驗證方式
- Tomcat URL : 目標tomcat,部署之前要保證目標Tomcat處于啟動狀態
3.5 獲取tomcat授權方式
在沒通過指定tomcat授權的情況下,通過Jenkins部署到該Tomcat下會報出如下錯誤
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: The username you provided is not allowed to use the text-based Tomcat Manager (error 403)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:704)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.list(TomcatManager.java:876)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.getStatus(TomcatManager.java:889)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:173)
... 17 more
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://192.168.10.50:8083/manager/text/list
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:571)
... 20 more
修改對應tomcat目錄下的/conf/tomcat-users.xml 文件,添加角色及用戶。
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx"/>
修改對應tomcat下的 /webapps/manager/META-INF/context.xml文件,設置所有ip都能訪問manager,這點很重要!之前搜索了很多博客都是因為缺少了這一點導致部署失敗。
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
最后使用tomcat-user.xml文件中配置的用戶進行授權。
返回工程重新構建即可,這次記錄暫且到這。