1. 程式人生 > >Linux 環境下搭建 Jenkins(Hudson)平臺

Linux 環境下搭建 Jenkins(Hudson)平臺

效果 swd gpo conf 有一個 信息 hudson track 文件

安裝jenkins:
安裝 jenkins 有兩種方式:
安裝方式一:

[java] view plain copy
  1. sudo java -jar jenkins.war –httpPort=18080 –ajp13Port=18009

但是很多時候我們是使用SSH方式到目標機器上的,放我們關閉SSH連接時,這個命令也會被中斷,jenkins服務會被終止,我們不可能一直保持這SSH連接,怎麽辦?可以把這行命令寫成 shell 腳本,然後使用 nohup sh jenkins.sh &
命令啟動這個腳本,這樣jenkins就能正常提供服務了。
安裝方式二:安裝 RPM包
為了能夠使用jenkins庫,首先需要導入jenkins庫的 key:

[java] view plain copy
  1. sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo sudo rpm –import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

安裝軟件(以jenkins-x.x.x.rpm為例):yum install jenkins-x.x.x.rpm
刪除軟件:yum remove jenkins-x.x.x.rpm或者yum erase jenkins-x.x.x.rpm
升級軟件:yum upgrade jenkins或者yum update jenkins
查詢信息:yum info jenkins
開啟服務(關閉,重啟):

[java] view plain copy
  1. sudo service jenkins start|stop|restart

檢查jenkins是否安裝完成: localhost:8080 (默認是8080 端口,如果采用安裝方式一,那麽就需要指定的端口)
運行job時遇到的問題:
mvn:command not found
遇到的問題: 不能使用MVN命令;
排查過程:
①Jenkins 默認創建進程,啟動任務的用戶名是 jenkins,使用root權限查看passwd,可以看到這個用戶默認情況下 ssh 為false,也就是說這個用戶默認情況下是不能使用ssh進行登錄的,除非修改 passwd中相應字段為 bash,然後sourse;
jenkins:x:500:500:mengqc:/home/jenkins:/bin/fasle
passwd文件的格式: 註冊名:口令:用戶標識號:組標識號:用戶名:用戶主目錄:命令解釋程序
②默認情況下 Jenkins 的安裝目錄是 /var/lib/jenkins/ ,項目根目錄是 /var/lib/jenkins/jobs/workspace

從目錄上看,就知道這個是需要 root 權限才能執行一些命令,但是我們通過界面 執行一些命令使用的是admin用戶,縱使我們在 根目錄下 能適應mvn命令,但是問題也不能解決。

還有一個簡單的測試Maven 是否加入到了環境變量中的方法,在執行mvn命令時,填寫maven安裝的絕對路徑,如果能夠執行,說明不是權限的問題,而是環境變量的問題。

解決方案一:
①安裝 ssh slave 插件;
②啟動slave 服務;
③jenkins-系統管理-節點管理:重新設置 slave機器的 Remote FS root 為 /home/admin/xxx
(主要是添加了workspace的目錄) $ITEM_ROOTDIR
④把master的節點數設為0,這樣默認情況下就會使用 slave節點。
問題:
如果修改 工作目錄(Remote FS root),可能會遇到:

[java] view plain copy
  1. “main”java.lang.NoclassDefFoundError:hudson/maven/agent/Main

原因:我們修改了slave的工作目錄,但是slave服務沒有重啟導致;
解決方法:使用我們的腳本 對slave進行 重啟操作。
解決方案二:

在 /home/admin/目錄下新建一個工作目錄,然後將 /var/lib/jenkins目錄設置成一個跳轉鏈接 ,鏈接到admin目錄下 [sudo ln -s /home/admin/xxx/ /var/lib/jenkins] ,然後將/var/lib/jenkins 目錄下的文件 mv 到/home/admin/xxx/ 目錄下。
mvn和一些基本的命令是可以運行了,但是運行shell腳本時還是沒有權限,因為 新建的這個跳轉連接user=root ,group=root,並且對這個鏈接 使用chown/chgrp 都是沒有效果的,執行一些操作命令是還是沒有權限; 解決方案三:修改默認 jenkins 用戶為 admin
①安裝jenkins
Java代碼 (我們一般使用的是admin權限)
[java] view plain copy
  1. sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
  2. sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
  3. sudo yum install jenkins
  4. rpm -ql jenkins


②. 配置jenkins
Java代碼
// edit JENKINS_PORT, JENKINS_USER
sudo vi /etc/sysconfig/jenkins (把 JENKINS_USER 設置為 admin)
③. 修改jenkins權限(如果修改JENKINS_USER情況下)
Java代碼
[java] view plain copy
  1. ####
  2. sudo chown -R admin /usr/lib/jenkins
  3. sudo chgrp -R admin /usr/lib/jenkins
  4. ####
  5. sudo chown -R admin /var/log/jenkins
  6. sudo chgrp -R admin /var/log/jenkins
  7. sudo chown -R admin /var/lib/jenkins
  8. sudo chgrp -R admin /var/lib/jenkins
  9. sudo chown -R admin /var/cache/jenkins
  10. sudo chgrp -R admin /var/cache/jenkins (這個如果不改,會出現404)

④. 啟動jenkins
Java代碼
sudo /sbin/service jenkins start
或者 sudo service jenkins start

Linux 環境下搭建 Jenkins(Hudson)平臺