利用jekines进行批量部署(pipeline流水线模式)
1.新建节点
(1)【Manage Jenkins】–> 【Manage Nodes and Clouds】
(2)填写节点名称及远程工作目录(/mnt)
2.启动节点服务器
(1)安装java环境
(2)下载agent.jar包
(3)在节点服务器将节点明细页面里的命令用nohup方式启动,例如
nohup java -jar agent.jar -jnlpUrl https://jenkins-dev.huafaih.com/computer/节点名/slave-agent.jnlp -workDir “/mnt” &
3.新建item
(1)【jenkins】 -->【新建item】–>【流水线】
(2)填写流水线,保存
pipeline {
agent none
environment {
M2_HOME = '/usr/local/apache-maven-3.5.4'
}
stages {
stage('前端打包开始') {
agent {
node{
label 'xxzh-slave'
customWorkspace '/mnt/workspace/manager/web'
}
}
steps {
// Get some code from a GitHub repository
git branch: 'master',
credentialsId: 'git',
url: 'https://gitlab.test.com/xxzh/test-web.git'
sh 'npm install --unsafe-perm=true --allow-root'
sh 'rm -rf ./dist/*'
sh 'npm run build:stage'
sh 'rm -rf ../api/manage/src/main/resources/static/app'
sh 'mkdir -p ../api/manage/src/main/resources/static/app'
sh 'cp -rf ./dist/* ../api/manage/src/main/resources/static/app'
echo 'Build success1'
}
}
stage('后台打包开始') {
agent {
node{
label 'xxzh-slave'
customWorkspace '/mnt/workspace/manager/api'
}
}
steps {
// Get some code from a GitHub repository
git branch: 'master',
credentialsId: 'git',
url: 'https://gitlab.test.com/xxzh/test-manager.git'
sh '${M2_HOME}/bin/mvn clean compile install -Dmaven.test.skip=true -P test -e'
echo 'Build success2'
}
}
stage('部署开始') {
agent {
node{
label 'xxzh-slave'
}
}
steps {
//备份
// 用ansible命令将节点服务器部署包上传至应用服务器
sh 'ansible manager -i /mnt/hosts -m copy -a "src=/mnt/workspace/manager/api/manage/target/manage-0.0.1-SNAPSHOT.jar dest=/zhfi/opr/apps/manager"'
sh 'ansible manager -i /mnt/hosts -m shell -a "systemctl restart manager" '
echo '部署成功'
}
}
}
}
(3)使用ansible
1>下载安装:yum install ansible -y
2>新建ansible配置文件(/mnt目录下新建hosts文件):
[manager]
manager-01 ansible_connection=local
manager-02 ansible_ssh_host=xxx.xxx.xxx.xxx ansible_ssh_user=root ansible_ssh_pass=password
(4)设置开机启动
vim /etc/systemd/system/manager.service
[Unit]
Description=
Documentation=
[Service]
Type=simple
WorkingDirectory=/zhfi/opr/apps/manager
ExecStart=/usr/local/jdk1.8.0_251/bin/java -jar manage-0.0.1-SNAPSHOT.jar
Restart=always
RestartSec=30
#查看进程状态
systemctl status manager
#启动
systemctl restart manager
#修改后要重载
systemctl daemon-reload