1. 檢查服務器包配置[可選]
一般不需要apt的額外配置, 如果有刪除配置或者移動到別處, 使其不生效:
sudo rm /etc/apt/apt.conf
sudo apt-get update
2. 安裝JDK
jenkins依賴java, 安裝java8+版本,並且配置java_home:
sudo apt search openjdk
sudo apt-get install openjdk-8-jdk
sudo vim /etc/bash.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
3. 安裝jenkins
在ubuntu環境下安裝:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
一些默認文件位置:
路徑 | 描述 |
---|---|
/etc/default/jenkins | jenkins運行配置 |
jenkins | 默認文件用戶 |
/var/log/jenkins/jenkins.log | 日誌路徑 |
/var/lib/jenkins/ | jenkins home |
4. 高級設置
- Crowd 2 Integration
- 配置slave
- 新建node
- 配置node啓動方式: 通過Java Web啓動代理, 注意只有在全局安全配置中設置了JNLP代理協議的TCP端口該選項纔可選
- 查看salve頁面下載agent.jar 和 slave-agent.jnlp 文件, 並且放到salve服務器的jenkins_home目錄下
- 登錄salve服務器切換到jenkins用戶, 運行上一步salve頁面執行命令, 如: java -jar agent.jar -jnlpUrl http://slave.server.ip:8080/computer/slave-01/slave-agent.jnlp -secret 2a99268dbfc5d5f4c517d237d48078b1163f -workDir "/var/lib/jenkins/"
- GitLab和Jenkins集成
- Jenkins選擇一個pipeline任務, Build Triggers->高級->Secret token, 生成一個token
- Gitlab選擇一個項目, Setting->Integrations, 新建一個webhook, 其中
- URL: Jenkins的任務位置: http://jenkins-in.devops.com/project/halo-kong
- Securet Token: 是上一步獲取的Jenkins生成的token, 穿件完可以點擊Test測試一下
5. 遇到問題
-
解決方式: sudo /etc/init.d/jenkins restart
-
配置agent的守護進程(否則java -jar agent.jar....命令中斷後集羣就垮了)
sudo easy_install supervisor echo_supervisord_conf > supervisord.conf sudo mv supervisord.conf /etc/supervisord.conf sudo vim /etc/supervisord.conf # 修改include爲files = /etc/supervisor/*.conf sudo mkdir -p /etc/supervisor sudo vim /etc/supervisor/jenkins-slave-agent.conf
jenkins-slave-agent.conf:
[program:jsa] directory = /var/lib/jenkins/ command = java -jar agent.jar -jnlpUrl http://slave.server.ip:8080/computer/slave-01/slave-agent.jnlp -secret 2a99268dbfc5d5f4c517d237d48078b1163f -workDir "/var/lib/jenkins/" autostart = true autorestart = true user = jenkins redirect_stderr = true stdout_logfile = /var/lib/jenkins/jenkins-slave-agent.log
supervisorctl commond:
sudo supervisorctl reread # 讀取新配置 sudo supervisorctl update # 啓動更新 sudo supervisorctl status # 查看狀態 sudo supervisorctl stop jsa # 停止一個子進程 sudo supervisorctl start jsa # 啓動一個子進程 sudo supervisorctl restart jsa # 重啓一個子進程
-
在agent node 運行docker-compose build報告無法連接到http+docker://localhost docker
原因: 權限
解決方法: sudo chown jenkins:docker /var/run/docker.sock
-
在agent node 運行docker push報告 no basic auth credentials
原因: load credential文件位置不對
解決方案: 指定加載權限文件位置如: docker --config /var/lib/jenins/ push xxxxx
-
原因: 默認配置了固定的分支, 如果需要動態配置分支就不可以了
解決方案: 使用gitlab插件內置的一些變量, 比如使用gitlabSourceBranch變量結合checkout進行切換, 如
checkout([$class: 'GitSCM', branches: [[name: '${gitlabSourceBranch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitlab-user', url: 'http://git.devops.com/devops/devops.git']]])