Linux 搭建 Jenkins

環境準備

安裝JDK

安裝 JDK 以前寫過一篇文章,本文就不具體講了:html

注意:Java版本不能是gcj,會致使Jenkins有問題,centos7搭建jenkins小記文章中提到的java版本問題致使CentOS下的Jenkins有問題。java

安裝Git

yum install git

規避磁盤過滿問題

1.方法1:建立軟鏈接,準備較大空間node

/data掛在了較大空間,而後在其中建立相關目錄:linux

mkdir -p /data/jenkins
ln -s /data/jenkins/ /var/lib/jenkins
chown -R root:root /data/jenkins

2.方法2:丟棄構建git

設置構建最大保留天數或者保留個數,實現自動刪除構建結果。github

參考:web

CentOS

離線安裝-推薦

## http://pkg.jenkins-ci.org/redhat-stable/
wget http://pkg.jenkins-ci.org/redhat/jenkins-2.39-1.1.noarch.rpm ## 下載(也能夠Windows下載再轉過來)
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key ## 導入公鑰,發現離線安裝,不須要導入公鑰就能安裝
rpm -ih jenkins-2.7.2-1.1.noarch.rpm

自動安裝完成以後:shell

  • /usr/lib/jenkins/jenkins.war WAR包
  • /etc/sysconfig/jenkins 配置文件
  • /var/lib/jenkins/ 默認的JENKINS_HOME目錄
  • /var/log/jenkins/jenkins.log Jenkins日誌文件

在線安裝

# 添加Jenkins源
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum repolist # Update your package manager list to get the latest packages
# 安裝
yum install java-1.8.0-openjdk jenkins
service jenkins start # 啓動

基於Tomcat安裝

  • Tomcat官網下載tar包
  • 將tar包拷貝至/usr/local目錄並解壓:cd /usr/local/ && tar zxvf apache-tomcat-9.0.12.tar.gz
  • 訪問jenkins官網下載長期維護版本的jenkins.war拷貝至/usr/local/apache-tomcat-9.0.12/webapps,啓動tomcat:`cd /usr/local/apache-tomcat-9.0.12
  • 訪問:http://IP:8080/jenkins

管理員密碼訪問:apache

cat /root/.jenkins/secrets/initialAdminPassword

基於這種方式安裝的Jenkins位置處於/root/.jenkins,所以,爲了不Job佔用空間過大,須要執行以下命令建立軟鏈接:ubuntu

ln -s /data/jenkins_jobs/ /root/.jenkins/jobs

Jenkins設置

爲了避免由於權限出現各類問題,這裏直接使用root

## sudo vim /etc/sysconfig/jenkins
JENKINS_USER="root" ## 原值 "jenkins" 必須修改,不然權限不足
JENKINS_PORT="8080" ## 原值 "8080" 能夠不修改

修改目錄權限

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

Jenkins 啓動

啓動Jenkins:

sudo systemctl enable jenkins # 開機自啓動Jenkins
sudo systemctl start jenkins # 啓動Jenkins

查看服務細節:

systemctl status jenkins.service

驗證Jenkins Server訪問連接:

telnet IP 8080

若是訪問有問題,須要把防火牆關了:

systemctl stop firewalld
systemctl disable firewalld.service #重啓不自動開啓

經過以下兩個命令查看防火牆是否關閉:

systemctl list-unit-files|grep firewalld.service
iptables -t nat -S

Centos安裝參考:

Ubuntu

  • 下載https://pkg.jenkins.io/debian/jenkins.io.key
  • apt-key add jenkins.io.key

以上兩步,能夠合二爲一:

wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
  • sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
  • apt-get update
  • apt-get install jenkins
  • /etc/init.d/jenkins start。或者service start jenkins。啓動Jenkins。
  • 經過:http://{ip}:8080 訪問jenkins。

cat /var/lib/jenkins/secrets/initialAdminPassword獲得默認密碼填入下面的密碼框中

安裝好以後,能夠修改相關配置改變默認端口:

  • /etc/default/jenkins

Ubuntu安裝參考:

Jenkins master優化

增長同時打開文件句柄數

增長同時打開文件句柄數,linux默認一個進程能同時打開的文件句柄是1024個,在jenkins master確定是不夠的,須要調整成65535

CentOS系統,修改/etc/security/limits.conf,在文件最後增長一行:

root             -       nofile          65535

重啓後生效,能夠經過命令ulimit -a查看

設置tomcat 日誌循環,限制日誌的大小

https://stackoverflow.com/questions/8342336/how-to-set-maximum-number-of-rolls-and-maximum-log-size-for-tomcat

Jenkisn配置

Jenkins用戶

admin帳號初始密碼:

cat /var/lib/jenkins/secrets/initialAdminPassword

Jenkins使用

Jenkins關閉、重啓、重載

http://localhost:8080/[exit/restart/reload]

參考:

Jenkins Job指定執行節點

  • 關聯job,進入job的配置頁面,勾選Restrict where this project can be run

利用了標籤的功能

參考:

Jenkins升級

能夠經過系統管理(System management)--> 系統信息(System Info)查找.war的文件

executable-war  /usr/lib/jenkins/jenkins.war

先列出官網地址:https://jenkins.io/download/

升級以前,中止Jenkins服務(記得備份原來的jenkins.war,以防萬一)

http://jenkinsIP:port/exit

從官網下載最新的war包,而後替換掉上面路徑下的war。

替換完成後,重啓:

systecmctl start jenkins # centos
service jenkins start # ubunutu

參考:

Jenkins插件

  • dashboard view:Dashboard-view自定義jenkins任務集視圖
  • Workspace Cleanup:這個插件能夠再每次build以前清空workspace
  • Monitoring:監控一些機器的狀態信息了
  • Folders:新建任務時,支持建立文件夾,可嵌套地定義文件夾來級別 views / jobs
  • SSH Slaves:添加節點時,能夠採用SSH方式連接;
  • PostBuildScript:根據 Build 狀態執行腳本
  • Post Build Task
  • Pipeline:必須 【請勾選】
  • Build Pipeline:用於建立pipline視圖
  • Configuration Slicing:主要功能是能夠批量設置job的屬性,好比設置保留多少天的構建記錄,神器之一,有效解決Jenkins磁盤過滿的問題
  • Multijob:配置Multijob必備的插件;
  • Timestamper
  • Build Timeout plugin:構建超時插件
  • Custom Tools
  • Git:Git插件 【請勾選】
  • Git Parameter
  • GitLab
  • Gitlab Hook
  • Gitlab Authentication
  • Parameterized Trigger plugin:插件可讓你在構建完成時觸發新的Job構建,並以各類方式爲新Job構建指定參數。
  • Node and Label parameter
  • Publish Over SSH
  • Groovy plugins:併發任務解決
  • Windows Slaves Plugin:鏈接Windows Slaves,默認安裝了
  • Matrix Authorization Strategy Plugin:矩陣形式認證策略插件,默認安裝了

插件使用參考:

Jenkins Slave

Slave機器上須要安裝好git、配置好Java環境(尤爲是一些相似JAVA_HOME的變量)。

經過SSH鏈接node--推薦

  • 先安裝SSH Slaves插件,這樣在新增節點時,ssh配置將更加友好。
  • 點擊 Credentials, 點擊 Jenkins -> Global credentials -> Add CredentialsUsernamePassword 表示執行機的帳號和密碼。
  • 新建節點,「啓動方式」 選擇 Launch slave agents via SSHCredentials 選擇剛剛新建的鑰匙,Host Key Verification Strategy 選擇 Manually trusted Key Verification Stragegy

最後Launch agent便可;

經過JNLP鏈接node

該方法比較麻煩,不詳細介紹了。

注意:須要下載兩個文件到agent機器上:

  • agent.jar
  • slave-agent.jnlp

參考:

Jenkins FAQ

Q1: 忽略Jenkins升級提醒

對於輕微強迫症的我來講,看着升級提醒,還不能叉掉,實在忍不了,Google以後,有解決方法:

Manage Jenkins => Configure System => Administrative monitors configuration
系統管理-》系統設置-》管理監控配置
去掉「Jenkins更新通知」
UnCheck "Jenkins Update Notification" and apply

Q2: Cannot run program "java": error=2, No such file or directory

雖然登陸到master機器或者執行機上,java都配置好了,可是仍然遇到了錯誤,後來看到一篇博客中提到的方法,在usr/bin下建立了一個Java的軟鏈接,就解決了。

ln -s /usr/java/jdk1.8.0_171/bin/java /usr/bin

Q3: jenkins.JenkinsException: Error in request. Possibly authentication failed [500]: Internal Server Error

在JJB項目中,發生了上面的錯誤,定位問題了半天,發現多是Jenkins自己出問題了,而不是項目出問題。之前運行OK的Jenkins怎麼忽然發生這個問題了呢?多是以下緣由形成:

  • var/lib/jenkins/jobs:目錄下Job佔據過多空間。在Jenkins中的節點管理裏查看master機器的剩餘磁盤空間`也能夠觀察到
du -ah --max-depth=1

/etc/rc.local是啥?

參考:

Q4: starting jenkins bash /usr/bin/java permission denied

解決辦法主要分了兩步:

  1. 將本來位於/root/buildbox/javaxxx/下的目錄移到了/usr/java/下,從新配置java環境;
  2. vim /etc/init.d/jenkins中的candidates字段補充上java路徑/usr/java/jdk1.8.0_151/bin/java

參考:

Q5: 執行Jenkins服務器界面運行一段時間後就會卡死,界面顯示空白

緣由:tomcat的日誌(/home/apache-tomcat-8.0.30/logs)查看catalina.out日誌,得知是java虛擬機內存空間溢出。
解決:到後臺tomcat的bin目錄下,修改 tomcat的啓動腳本:startup.sh,在最上面添加 export JAVA_OPTS=「-XX:MaxPermSize=1024m -Xms1024m -Xmx3096m」

Q6: 構建完成後須要清除workspace

須要安裝「Workspace Cleanup Plugin插件」,在構建任務配置時,能夠在「增長構建後操做步驟」中選擇Delete workspace when build is done

Q7: Linux環境變量問題,沒有加載/etc/profile文件,獲取不到須要的環境變量。

添加節點時,Prefix Start Slave Command 選擇輸入 source /etc/profile &&

加一個前置動做。注意&&以後要有空格!!!

Q8:Jenkins定時構建用法

Jenkins定時構建

Q9:Error 403 No valid crumb was included in the request

Q10:Jenkins Master-Slave: Key exchange was not finished, connection is closed

掛載執行機時,報錯,經過編輯 /etc/sshd_config 文件,註釋 MACs 和 Kex 所在的行,解決了問題,記得註釋以後,systemctl restart sshd

Q11:清理過時的 Jobs

#clear jenkins jobs logs
@hourly find /var/lib/jenkins/jobs/ -mindepth 1 -maxdepth 1 -mtime +30 -type d -exec rm -rf {} \; -o -type f -exec rm -rf {} \;

參考:

相關文章
相關標籤/搜索