首页 > 其他分享 >使用宝塔WebHook自动同步Gitlab提交的代码

使用宝塔WebHook自动同步Gitlab提交的代码

时间:2024-10-06 17:00:51浏览次数:1  
标签:宝塔 git ft Gitlab WebHook echo v1 密钥 sudo

一、配置SSH

创建 SSH 密钥

  1. 打开终端。

  2. 生成 SSH 密钥: 使用以下命令生成一个新的 SSH 密钥对:

    ssh-keygen -t rsa -b 4096 -C "[email protected]"
    • -t rsa 指定密钥类型为 RSA。
    • -b 4096 指定密钥长度为 4096 位。
    • -C "[email protected]" 用于添加注释(通常是你的电子邮件)。
  3. 按提示操作:

    • 系统会询问你保存密钥的位置,默认是 ~/.ssh/id_rsa,你可以直接按 Enter。
    • 然后会询问你是否设置密码,可以选择输入密码或直接按 Enter(不设置密码)。

查看 SSH 密钥

  1. 查看公钥

    要查看生成的公钥,你可以使用以下命令:

    cat ~/.ssh/id_rsa.pub

    这将显示公钥,内容以 ssh-rsa 开头,后面跟着你的邮箱地址。

  2. 查看私钥

    如果需要查看私钥,可以使用:

    cat ~/.ssh/id_rsa

    注意:请勿共享私钥或将其泄露给他人。私钥应该保持私密。

 

GitLab后台填写SSH密钥:

GitLab->个人资料设置->SSH密钥

 

二、配置宝塔WebHook

软件商店 安装 WebHook。添加Hook。

写入脚本:

#!/bin/bash
echo ""
# 输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
 
# git项目路径(这里根据自己的项目路径进行修改)
gitPath="/www/wwwroot/项目路径"
# git网址(这里根据自己的Git地址进行修改)(ssh的地址||http地址)
gitHttp="[email protected]:service/xxx.git"
echo "Web站点路径:$gitPath"
 
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                sudo git clone $gitHttp gittemp
                sudo mv gittemp/.git .
                sudo rm -rf gittemp
        fi
        
         # 检查远程分支的最新提交
        latestRemoteCommit=$(git ls-remote origin ft_v1 | awk '{print $gitPath}')
        echo "远程分支最新提交:$latestRemoteCommit"
        
        # 检查当前分支
        currentBranch=$(git rev-parse --abbrev-ref HEAD)
        echo "当前分支:$currentBranch"
        
        # 如果当前不在需要的分支上,则切换分支
        if [ "$currentBranch" != "ft_v1" ]; then
            git checkout ft_v1 || git checkout -b ft_v1 origin/ft_v1
        fi
        
        # 拉取最新的项目文件
        echo "拉取最新的项目文件"
        git fetch --all
        currentLocalCommit=$(git rev-parse HEAD)
        echo "当前本地提交:$currentLocalCommit"
        
        # 检查是否有新的提交需要拉取
        if [ "$currentLocalCommit" != "$latestRemoteCommit" ]; then
            echo "拉取远程分支的最新提交"
            sudo git pull origin ft_v1
        else
            echo "本地已经是最新提交"
        fi
        
        # 输出 Git 状态和日志
        echo "Git 状态:"
        git status
        echo "Git 日志:"
        git log -1 --oneline
        echo "查看当前分支:"
        git branch
        echo "查看远程分支跟踪关系:"
        git branch -vv
    
        echo "拉取结束End"
        exit
else
        echo "该项目路径不存在"
        echo "新建项目目录"
        mkdir $gitPath
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                sudo git clone $gitHttp gittemp
                sudo mv gittemp/.git .
                sudo rm -rf gittemp
        fi
        echo "拉取最新的项目文件"
        sudo git reset --hard origin/ft_v1
        sudo git pull
        echo "设置目录权限"
        sudo chown -R www:www $gitPath
        echo "End"
        exit
fi

保存之后,得到WebHook密钥

 复制地址:https://192.168.0.1:123456/hook?access_key=123456789abcdefghijklmnopqrstuvwxyz&param=aaa

在GitLab后台,进入到项目->设置->Web钩子。填写带密钥的地址,私密授权码可省略。

 

添加完之后,可以点击“测试”按钮进行测试。

 

其它

1.代码不同步

  在文件中进入项目,查看有没有.git目录,没有的话,打开终端,拉取一下代码,并切换到提交代码的分支上。

2.同步的不是最新提交的代码

  如果git使用的是http方式拉取的代码,试着切换到SSH地址,并在Gitlab配置ssh密钥。在文件的终端上查看一下当前分支,和WebHook脚本中的分支一致,再测试一下。

  • 更新远程URL为SSH(如果已使用HTTP)
    git remote set-url origin [email protected]:username/repo.git
  • 将现有的本地分支与远程分支关联
    例如,如果你的本地分支是 ft_v1,而远程分支也是 ft_v1,可以这样做:
    git branch --set-upstream-to=origin/ft_v1 ft_v1

标签:宝塔,git,ft,Gitlab,WebHook,echo,v1,密钥,sudo
From: https://www.cnblogs.com/wlwman/p/18448876

相关文章

  • 宝塔面板“抱歉,站点已暂停”提示页面的修改
    在宝塔面板中,如果站点被暂停,通常会显示一个默认的提示页面:“抱歉,站点已暂停”。如果你希望自定义这个提示页面,可以通过以下步骤进行修改:1.备份站点文件在进行任何修改之前,建议先备份站点文件,以防万一修改出错。bash tarczfbackup.tar.gz/www/wwwroot/your_domain2.......
  • 宝塔开启Redis高速缓存功能方法
    Redis是一种高性能的键值存储系统,具有多种优势,适用于网站缓存场景。以下是Redis的主要优点:多数据结构支持:Redis支持简单的键值对(K/V)类型的数据。还支持列表(List)、集合(Set)、有序集合(ZSet)和哈希表(Hash)等多种数据结构。主从模式支持:Redis支持主从复制模式,可以轻松实......
  • 帝国cms使用Linux系统数据盘扩容后宝塔控制面板数据盘大小不变的解决方法
    当遇到磁盘空间不足的情况时,可以通过以下步骤对数据盘进行扩容,并确保宝塔控制面板能够正确识别新的磁盘大小。以下是详细的步骤:步骤1:备份数据在操作硬盘扩容前,通过磁盘快照功能备份服务器系统盘与数据盘。步骤2:关闭服务器并购买磁盘空间关闭服务器。购买并等待配置完成......
  • linux 上安装gitlab代码仓库
    作者:程序那点事儿日期:2024/02/0804:06安装过程安装节点:192.168.43.106wgethttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.9.1-ce.0.el7.x86_64.rpmrpm-igitlab-ce-15.9.1-ce.0.el7.x86_64.rpmvim/etc/gitlab/gitlab.rbgitlab-ctl......
  • Gitlab分支管理规范和提交代码规范
    gitlab分支管理规范分支说明:测试代码库共有三个分支,main分支、dev分支、release分支--main分支:存放运行稳定的最新代码,一般不直接将未审核的代码合入到main分支--dev分支:存放个人开发的用例脚本,可用于用例故障修复,新的用例开发等--release分支:对应上线的产品版本,在发布......
  • 宝塔Nginx开启fastcgi_cache分别缓存WordPress移动和pc端
    FastCGI_cache是Nginx的缓存模块,能够从Nginx层面实现网页静态化,有效提高网站的并发能力、减少PHP运行时间和请求响应时间,大大提升页面加载速度。Fastcgi_cache能够直接在nginx层面提供缓存内容,而无需涉及PHP或WordPress,在没有第三方广告情况下加速效果很不错!网上不少此教程,但是没......
  • Spring Boot起步,CRUD、错误处理与宝塔部署
    新建一个SpringBoot项目这里使用的idea编辑器。快速生成java项目。生成项目目录java代码解读复制代码java-app:项目的根目录。.idea:IntelliJIDEA的项目配置文件夹。.mvn:Maven的相关配置。src:源代码目录。main:主代码部分。java:Java源代码文件夹。......
  • GitLab 中文发行版最新的 17.4 发布了哪些与代码托管、CI/CD、安全合规相关的功能?
    沿袭我们的月度发布传统,极狐GitLab发布了17.4版本,该版本带来了当所有检查通过就会自动合并、WebIDE中的扩展市场现已可用以及获取Kubernetes资源事件等几十个重点功能的改进。下面是部分重点功能的详细解读。极狐GitLab为GitLab的中文发行版,中文版本对国内用户更友好、......
  • 掌握 GitHub Webhook:综合指南
    GitHubWebhooks提供了一种强大的方法来自动化工作流程并将GitHub与外部服务集成,根据存储库中的事件提供实时更新。无论您是想触发部署、发送通知还是跨平台同步数据,GitHubwebhooks都提供了灵活高效的解决方案。在本指南中,我们将探讨GitHubWebhooks是什么、它们如何工作以......
  • 宝塔面板WordPress建站教程:海外服务器选择与详细安装步骤
     一、什么是宝塔面板?宝塔面板(BTPanel)是一款简单易用的服务器管理工具,适合那些不熟悉命令行操作的用户。它允许你通过一个图形化界面轻松管理服务器和网站,尤其适合新手用户快速搭建像WordPress这样的网站。二、准备工作选择服务器与域名搭建网站的第一步是选择合适的服务器......