使用宝塔面板配置webhook,自动拉取代码

步骤一

安装webhook

在宝塔控制面板-》软件商店 找到webhook,点击安装

 

 

 步骤二

点击设置-》添加-》输入名称和执行脚本

注意:1.名称必须与码云上的项目名称一致,还要去拉取下来后的文件夹名称一致

   2.执行脚本如下(不做修改)

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "-------开始-------"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
echo "param参数错误"
echo "End"
exit
fi
#服务器 git 项目路径
gitPath="/www/wwwroot/$1"
#码云项目 git 网址
gitHttp="git@gitee.com:sgrh/$1.git"


echo "路径:$gitPath"

#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo  git clone $gitHttp gittemp
sudo  mv gittemp/.git .
rm -rf gittemp
fi
#拉取最新的项目文件
sudo git reset --hard origin/master
#git clean -f
sudo  git pull origin master
echo "拉取完成"
#执行npm
#执行编译
#npm run build
#设置目录权限
chown -R www:www $gitPath
echo "-------结束--------"
exit
else
echo "该项目路径不存在"
echo "End"
exit
fi

提交即可

步骤三

登入码云,找到项目,添加webhooks

输入url和webhook密码

url和webhook密码在步骤二我们添加完可以看到,把相应的值复制进去即可,提交即可

 

 步骤四

接下来就是测试

最重要的一步就是要下git pull 码云上的代码

然后就是提交一下代码到码云,看看是否同步到你的项目

查看webhook执行日志,如下即可

 

 

=====================注意====================================

如果发现脚本能执行,但是一直pull 不到 最新版本可能是权限原因

将脚本换成  

   sudo  git reset --hard origin/master
   sudo  git pull origin master

 

### Jenkins 自动部署 Git 代码使用 Job 名称配置 #### 使用 Webhook 和 Pipeline 实现自动化流程 为了实现从 Git 代码而不需要依赖特定的作业名称,可以利用 Jenkins 的 Pipeline 功能配合 GitLab 或 GitHub 提供的 Webhooks 来完成这一目标。这种方式下,每当有新的提交推送到远程仓库时,Webhook 将通知 Jenkins 执行预定义的操作。 #### 创建多分支流水线项目 创建一个多分支流水线项目而不是传统的自由风格项目能够帮助更好地管理多个分支上的变更。这允许 Jenkins 根据源码控制系统中的路径动态发现并处理不同的分支或 PR (Pull Request),无需手动指定具体的 job name。 ```groovy // Jenkinsfile 示例 pipeline { agent any triggers { // 定义触发条件, 这里假设使用的是 GitLab webhook genericTrigger( token: 'your_secret_token', regexpFilterText: '$CI_COMMIT_REF_NAME', regexpFilterExpression: 'master|develop' ) } stages { stage('Checkout') { steps { checkout([$class: 'GitSCM', branches: [[name: env.BRANCH_NAME]], userRemoteConfigs: [[url: "git@192.168.1.30:jie/web-page.git"]]])[^1] } } stage('Build') { steps { sh './gradlew build' // 假设是一个 Gradle 构建项目 } } stage('Deploy') { when { expression { return BRANCH_NAME ==~ /^(master)$/ } } steps { script { // 部署逻辑... } } } } } ``` 上述 `Jenkinsfile` 中的关键部分在于 `triggers` 节点下的设置,它指定了当接收到匹配正则表达式的推送事件时会触发构建过程;而在 `checkout` 步骤中,则是从给定 URL 地址克隆对应分支的最新版本代码下来。 #### 设置 GitLab Webhook 前往 GitLab 项目的 Settings -> Webhooks 页面新增一条 Hook 记录: - **URL**: http(s)://<jenkins-server>/generic-webhook-trigger/invoke?token=your_secret_token - **Secret Token**: your_secret_token (确保与 Jenkinsfile 中一致) - **Triggers**: 只勾选 Push events 即可 这样每次向 master 或 develop 分支 push 新代码都会触发展开一次完整的 CI/CD 流程,包括但不限于最新的源文件、编译打包直至最终发布上线[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值