两种方式,使用Gogs Webhook和Generic Webhook Trigger插件,建议用Gogs Webhook方式简单省事,官网推荐 建议看下面第二种方式。
一、 jenkins Generic Webhook Trigger插件,源码管理配置git地址。Generic Webhook Trigger方式,
Post content parameters -
Variable:ref
Expression:$.ref
选择JSONPath
Token :ht-pre 与gogsweb hook 地址对应,例如gogs 配置地址: http://xxx.xxx.xxx.xxx:8099/generic-webhook-trigger/invoke?token=ht-pre
Cause:Generic Cause
Optional filter-
Expression(触发的分支release或test) :^\S*refs/heads/release|refs/heads/test$
Text :$ref
BUILD_ID=demo
ssh root@192.168.9.160 '/home/ht-pre/sh/deploy.sh'
deploy.sh
#!/bin/bash
cd /home/ht/wwww
/usr/bin/git checkout -b release -t origin/release
/usr/bin/git fetch --all
git branch --set-upstream-to=origin/release release
/usr/bin/git reset --hard origin/release
/usr/bin/git checkout release
/usr/bin/git pull --rebase
chown -R www:www /home/ht/www
vue shell
BUILD_ID=demo
cd $WORKSPACE
echo $WORKSPACE
node -v
npm -v
#npm install --registry=https://registry.npm.taobao.org
cnpm install
#chmod -R 777 $WORKSPACE
npm run build
/usr/bin/tar -zcvf dist.tar.gz dist/
#/usr/bin/rsync -avzP --delete $WORKSPACE/dist.tar.gz root@47.95.234.153:/www/wwwroot/dist.tar.gz
scp -r $WORKSPACE/dist.tar.gz root@IP:/www/wwwroot/dist.tar.gz
rm -rf dist.tar.gz
#ssh root@47.95.234.153 'rm -rf /www/wwwroot/admintest.shangdan.cn/*'
ssh root@IP '/data/sh/deploy-vue.sh'
[root@4test ~]# cat /data/sh/deploy-vue.sh
#!/bin/bash
cd /www/wwwroot/
rm -rf /www/wwwroot/admintest.sd.cn/*
/usr/bin/tar -zxvf dist.tar.gz
mv dist/* /www/wwwroot/admintest.sd.cn/
rm -rf dist*
cd /www/wwwroot/admintest.sd.cn/
#/usr/bin/chattr -i .user.ini
/usr/bin/chown -R www:www /www/wwwroot/admintest.sd.cn/
/usr/bin/chmod -R 755 /www/wwwroot/admintest.sd.cn/
#/usr/bin/chmod 644 ./.user.ini
#/usr/bin/chattr +i .user.ini
/usr/bin/nginx -s reload
2、gogs 配置web hook
http://xxx.xxx.xxx.xxx:8099/generic-webhook-trigger/invoke?token=ht-pre
有定时任务的,shell 例如tt321_task
#!/bin/bash
cd /docker/www/tt321_task
/usr/bin/git checkout -b master -t origin/master
/usr/bin/git fetch --all
git branch --set-upstream-to=origin/master master
/usr/bin/git reset --hard origin/master
/usr/bin/git checkout master
/usr/bin/git pull --rebase
#pid=$(cat /docker/www/tt321_task/tmp/task.pid)
kill -9 `cat /docker/www/tt321_task/tmp/task.pid`
sleep 2s
nohup /usr/local/php/bin/php /docker/www/tt321_task/bin.php task >> /dev/null 2>&1 &
‘
’
‘
============================================================================
二、采用 gogs webhook 最近安装新版本jenkins,
最近发现Generic Webhook Trigger配置繁琐。gogs简单,官网文档https://plugins.jenkins.io/gogs-webhook/
步骤:
1、前提jenkins能正常启动,默认推荐插件已安装,详情略。
2、jenkins 安装Gogs plugin 插件。
3、Jenkins新建任务,例如crm,构建一个自由风格软件项目。
4、jenkins配置gogs Webhook,构建触发器、构建部署shell。
5、配置gogs web钩子,测试,结束。
下面从第二步开始
2、Jenkins 安装Gogs plugin 插件,
3、Jenkins新建crm任务,自由风格
4、jenkins配置gogs Webhook,构建部署shell
Gogs Webhook Branch filter项配置分支名和秘钥文本,例如release分支,格式:refs/heads/release
构建触发器
构建shell,具体脚本看方式一
5、配置gogs web钩子,添加web 钩子,选择gogs,继续配置gogs钩子,秘钥文本crm
格式;http(s)://<< jenkins-server >>/gogs-webhook/?job=<< jobname >>
lhttp://jenkins的IP/gogs-webhook/?job=crm
例如: http://192.168.9.100:8080/gogs-webhook/?job=crm
git push代码到release分支,开始执行构建。结束
流水线方式
gogs的配置保持不变,只更新jenkins配置,
首先创建流水线,例如crm(可删除crm任务重建crm)
gogs webhook 与方式二配置一致
触发器
流水线脚本,可以从其他文章中找一份,会修改会用即可,例如只修改对应阶段stage步骤steps,本项目是php的,java的可参考其他文档,我使用shell脚本在服务器中执行部署,所以此处只修改最后阶段Deploy步骤。
pipeline {
agent any
stages {
stage('Clone') {
steps {
echo '拉取成功'
# git branch: 'dev', credentialsId: 'c9484090-017e-433c-9f88-9a27787feb2b', url: 'http://115.28.168.100:10080/crm/crm.git'
}
}
stage('Build') {
steps {
echo '构建完成'
}
}
stage('Test') {
steps {
echo '测试成功'
}
}
stage('Deploy') {
steps {
sh 'ssh root@192.168.9.157 \'/data/sh/crm.sh\''
echo '运行成功'
}
}
}
}
打开流水线语法
生成流水线脚本:sh ‘ssh root@192.168.9.157 ‘/data/sh/crm.sh’’
复制到Deploy阶段步骤中
点击应用
提交代码到release分支开始测试,成功,