基于Ubuntu18.04部署Jenkins使用方法
Jenkins簡(jiǎn)介
- 好處:使開(kāi)發(fā)者從繁雜的集成中解脫出來(lái),專(zhuān)注于更為重要的業(yè)務(wù)邏輯實(shí)現(xiàn)上。
- Jenkins中文網(wǎng)站:http://www.jenkins.org.cn/。
- 說(shuō)白了就是:可持續(xù)集成。
什么是可持續(xù)集成呢?持續(xù)集成系統(tǒng)的組成
一個(gè)自動(dòng)構(gòu)建過(guò)程,包括自動(dòng)編譯、分發(fā)、部署和測(cè)試等。一個(gè)代碼存儲(chǔ)庫(kù),即需要版本控制軟件來(lái)保障代碼的可維護(hù)性,同時(shí)作為構(gòu)建過(guò)程的素材庫(kù)。一個(gè)持續(xù)集成的服務(wù)器。
持續(xù)集成的原則
版本控制
需要版本控制軟件保障團(tuán)隊(duì)成員提交的代碼不會(huì)導(dǎo)致集成失敗。常用的版本控制軟件有 svn,Git, ClearCase 等。
集成服務(wù)器
需要有專(zhuān)門(mén)的集成服務(wù)器來(lái)執(zhí)行集成構(gòu)建。根據(jù)項(xiàng)目的具體實(shí)際,集成構(gòu)建可以被軟件的修改來(lái)直接觸發(fā),也可以定時(shí)啟動(dòng),如每半個(gè)小時(shí)構(gòu)建一次。
構(gòu)建的成功
必須保證構(gòu)建的成功。如果構(gòu)建失敗,修復(fù)構(gòu)建過(guò)程中的錯(cuò)誤是優(yōu)先級(jí)最高的工作。一旦修復(fù),需要手動(dòng)啟動(dòng)一次構(gòu)建。
docker部署
# 安裝docker
sudo apt-get update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt install -y docker-ce
#可選項(xiàng)目,如果需要非root用戶(hù)啟動(dòng)執(zhí)行這個(gè)
# 配置amaozaji用戶(hù)操作docker
sudo group add docker
adduser amaozaji
passwd amaozaji
sudo gpasswd -a amaozaji docker
sudo systemctl restart docker
# 關(guān)閉swap
swapoff -a
# 系統(tǒng)參數(shù)調(diào)整
echo "vm.max_map_count = 262144" >> /etc/sysctl.conf
sysctl -p
# 修改docker默認(rèn)的存儲(chǔ)路徑
Ubuntu18.04下:
添加配置文件:/etc/systemd/system/docker.service.d/docker-overlay.conf
內(nèi)容如下:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph="/data/var/lib/docker" --storage-driver=overlay
# 修改容器內(nèi)日志文件大小和個(gè)數(shù)
vim /etc/docker/daemon.json
{
"log-driver":"json-file",
"log-opts": {
"max-size":"100m",
"max-file":"10"
}
}
# 重載配置文件并重啟服務(wù)
systemctl daemon-reload
systemctl restart docker
# 安裝docker模塊(如果沒(méi)有pip工具,先安裝:apt-get install python-pip)
pip install docker==4.0.0
保存生成配置文件
使用 main_config_editor 保存生成一個(gè)配置文件,可以直接用默認(rèn)配置開(kāi)始。每次修改會(huì)實(shí)時(shí)生效,且保存在本地文件夾中。
可以直接用默認(rèn)配置開(kāi)始。
同時(shí)支持 PUT 和 GET 請(qǐng)求修改配置文件,便于 CI 集成。
腳本 update_config_editor.sh :
#!/bin/bash
set -e
set -x
docker pull config_editor
docker rm -f config_editor || echo "ok"
docker run -d --name config_editor -p 8000:8000 --restart=always -v /data/source_config:/config config_editor
啟動(dòng)后訪問(wèn) http://主機(jī)名:8000/ 確認(rèn)是否可以看到配置文件編輯器。
在需要控制的主機(jī)上增加認(rèn)證公鑰
增加認(rèn)證公鑰,只需要被 jenkins 控制并安裝組件的機(jī)器上執(zhí)行(需要sudo權(quán)限):
mkdir /root/.ssh/
echo 'ssh-rsa AA2EAAAADAQABAAABAQDgsoxCDtHGSaPqwVppkhRsZ6Qha85q77etYuzNM/dEkJJwMKmCxw1q/iBecopL0XRDyUVlK7y2eWZ0KCom5tpMf+pCZkK1SRUxcI5eId4juZnDKHqSXqVaalJDRr9zD7vKYdpaDTALX5RLhC3jr3cF/SImAlpTlQ0bmBttk7pJkF1AjBYRIDYezCN4nITsuGnqSgD/XUzSpjivO8P7SNnxRY8eHASstKiJC8zU2GQF6exGVGPAWdPi99y/3/HPJn jenkins' >> /root/.ssh/authorized_keys
如果操作無(wú)誤但Jenkins執(zhí)行任務(wù)時(shí)還是認(rèn)證失敗,可以通過(guò) jenkins 的私鑰連接確認(rèn)。
ssh -i private_key.pem root
下載啟動(dòng) jenkins
常用腳本,CONFIG_URL 是配置文件的訪問(wèn)地址,即上一步配置文件修改器的訪問(wèn)地址。
腳本 update_jenkins.sh :
##!/bin/bash
set -e
set -x
# 下載jenkins docker
docker pull jenkins
docker rm -f amaozaji_jenkins || echo "No need to rm amaozaji_jenkins"
# 啟動(dòng) docker 并設(shè)置配置文件下載地址
docker run --name amaozaji_jenkins -d --net=host -e CONFIG_URL=http://localhost:8000/main.yaml jenkins
啟動(dòng)后訪問(wèn) http://主機(jī)名:8080/ 確認(rèn)是否可以看到Jenkins頁(yè)面。