Jenkins奴隸機(jī)配置
- 首先登錄奴隸機(jī),確保奴隸機(jī)有JDK,沒有則下載解壓JDK。下面簡單描述下安裝JDK過程
- ORACLE官網(wǎng)下載個(gè)JDK,比如jdk-8u241-linux-x64.tar.gz
- 挪到想要的路徑下,比如/home/: mv jdk-8u241-linux-x64.tar.gz /home/
- 解壓: tar -zxvf jdk-8u241-linux-x64.tar.gz
- 至此,JDK就放在/home/jdk1.8.0_241/
- 配置bin: cd /usr/bin/ & ln -s /home/jdk1.8.0_241/bin/java
-
測試下是否正確配置: java -version,如下則正常
image.png
- 登錄Jenkins,在Jenkins首頁:
Manage Jenkins->Manage Nodes and Clouds,進(jìn)入到節(jié)點(diǎn)配置界面
image.png - 然后點(diǎn)擊
新建節(jié)點(diǎn),配置信息,其中啟動方式要改成Launch agents via SSH
image.png - 保存后,Master就會開始嘗試連接奴隸機(jī),此時(shí)會報(bào)錯(cuò),提示沒有奴隸機(jī)的ssh指紋信息,可以如下解決:
- 登錄Master所在機(jī)器A,通過A去登錄奴隸機(jī)所在機(jī)器B
- 注意因?yàn)镴enkins使用Docker部署的,因此Master所在機(jī)器在Docker Container內(nèi),進(jìn)去使用:docker exec -it xxx bash
- 然后ssh一次:ssh root@B
- 這樣A的know_hosts里面就有B的指紋信息了
-
在重啟代理嘗試連接奴隸機(jī),成功后如圖
image.png
創(chuàng)建Jenkins自動化構(gòu)建任務(wù)
- 首先創(chuàng)建一個(gè)用于登錄Gitlab的憑證
Manage Jenkins->Manage Credentials-
添加憑據(jù)
image.png 創(chuàng)建完畢后,記得復(fù)制憑證id,用于編寫流水線時(shí)要用到
- 到
插件管理,搜索DingTalk插件,安裝重啟Jenkins- 這邊是DingTalk插件使用說明,傳送門
- 到
插件管理,搜索NodeJS插件,安裝重啟Jenkins - 然后到
全局工具配置,NodeJS新增,填寫名字,選擇版本 -
首頁->新建item,進(jìn)入任務(wù)創(chuàng)建頁 - 填入名字,選擇流水線,開始填寫流水線腳本
pipeline {
agent {
label '226.243'
}
stages {
stage('Preparation') {
steps {
git branch: 'develop', credentialsId: 'Gitlab-Jenkins', url: 'http://192.168.1.1/xxxxx.git'
}
}
stage('Clean') {
steps {
sh'''
touch pid
pid=`cat pid`
if [ -n "$pid" ]
then
echo "kill pid"
kill -9 $pid 2>&1
else
echo "application is already stopped"
fi
rm -rf dist/
'''
}
}
stage('Build') {
steps{
script {
nodeHome = tool 'NodeJS10_24'
}
withEnv(["NODE_HOME=$nodeHome"]) {
sh'''
export JENKINS_NODE_COOKIE=dontKillMe
export PATH=$PATH:$NODE_HOME/bin
$NODE_HOME/bin/npm i -g http-server
$NODE_HOME/bin/npm install
$NODE_HOME/bin/npm run build:prod
cd dist
nohup $NODE_HOME/bin/http-server -p 9009 > ../run_log.out 2>&1 &
echo "$!" > ../pid
'''
}
}
}
}
post {
always {
echo 'always'
}
success {
// 當(dāng)此Pipeline成功時(shí)打印消息
echo 'success'
dingtalk (
robot: 'robot1',
type: 'LINK',
title: '前端構(gòu)建成功',
text: [
'點(diǎn)擊直接跳轉(zhuǎn)到頁面'
],
messageUrl: 'http://xxxx.com',
picUrl: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.51yuansu.com%2Fpic2%2Fcover%2F00%2F44%2F98%2F5814c9627afc2_610.jpg&refer=http%3A%2F%2Fpic.51yuansu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1619152494&t=4eb45fe7198c51f8bf54968f5dcc75d1'
)
}
failure {
//當(dāng)此Pipeline失敗時(shí)打印消息
echo 'failure'
dingtalk (
robot: 'robot1',
type: 'TEXT',
text: [
'前端構(gòu)建失敗'
]
)
}
unstable {
//當(dāng)此Pipeline 為不穩(wěn)定時(shí)打印消息
echo 'unstable'
}
aborted {
//當(dāng)此Pipeline 終止時(shí)打印消息
echo 'aborted'
dingtalk (
robot: 'robot1',
type: 'TEXT',
text: [
'前端構(gòu)建被終止'
]
)
}
changed {
//當(dāng)pipeline的狀態(tài)與上一次build狀態(tài)不同時(shí)打印消息
echo 'changed'
}
}
}
配置自動觸發(fā)
- 到
插件管理中搜索Gitlab,安裝Gitlab觸發(fā)器 - 然后到item中觸發(fā)器就會多出一個(gè)
Build when a change is pushed to GitLab. GitLab webhook URL:xxxx - 將URL復(fù)制到Gitlab項(xiàng)目中,通過
Setting->Webhook添加該url和token.




