月度归档:2019年11月

使用宝塔面板进行项目的自动部署WebHook

首先你要知道什么是WebHook,如果你真的不想知道那也没关系。总之就是在你push到git仓库时会从git仓库触发一个http请求。关于http的地址根据你不同的git仓库有不同的方式去配置。

首先配置宝塔面板,你需要安装宝塔插件中的 WebHook

随便起一个名字然后保存

这时你会在列表中看到新增加的名称,点击查看密钥 获取密钥并配置到git仓库中,如下gitee.com仓库

注意ip和端口号之间有一个冒号 :

关于使用git ssh 需要你配置ssh密钥,可以使用

ssh-keygen -t rsa -C “name@mail.com”

如果没有才执行这个命令并将公钥设置为部署公钥
查看命令是 cat ~/.ssh/id_rsa.pub

如下代码点击编辑后输入并保存

需要替换gitPath的项目储存路径和 gitSSH 为你的项目的gitSSH地址信息

#!/bin/bash
#输出空白行 隔断
echo ""
#输出当前时间
date  +"%Y-%m-%d %H:%M.%S"
echo "Start"
#判断宝塔WebHook参数是否存在
#if [ ! -n "$1" ];
#then
#          echo "param参数错误"
#          echo "End"
#          exit
#fi
#git项目路径
gitPath="/www/wwwroot/www.daohang.dev"
#git 网址 这里要修改成你的仓库地址
gitSSH="git@gitee.com:yanlong-li/daohang.dev.git"
# 定义自定义脚本的文件名称
buildScript="buildScript.sh"
echo "Web站点路径:$gitPath"

#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                git clone $gitSSH gittemp
                mv gittemp/* gittemp/.[^.]* .
				rm -rf gittemp
        fi
        #拉取最新的项目文件
        #git reset --hard origin/master
		echo "正在拉取远程代码"
        git pull
        #设置目录权限
        #chown -R www:www $gitPath
        echo "拉取结束"
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi
# 下面是自定义的一个脚本,用于自定义的执行动作 如果不需要可以删除
if [ -f "$buildScript" ]; then
  chmod +x $buildScript
  ./$buildScript
else
  echo '不存在执行脚本';
fi
echo "脚本执行结束"

下面是我用来编译 Vue的一个脚本,也一起放上来

前提你要安装了 mp2管理器 或者手动安装了 node+npm


# 编译脚本 buildScript.sh

logUpdatePath="log/update"
logBuildPath="log/build"
# 更新依赖
logDate=$(date  +"%Y-%m-%d-%H-%M")
if [ ! -d "$logUpdatePath" ]; then
    mkdir -p $logUpdatePath
fi
if [ ! -d "$logBuildPath" ]; then
    mkdir -p $logBuildPath
fi
echo "更新依赖"
npm install
echo "编译项目"
npm run build
echo "设置权限"
chown -R www:www dist/[^.]*
echo "运行结束"
注意 有时候可能在Webhook中无法识别到node和npm,重装WebHook即可
使用图中的方法进行新建一个,然后提交后点击测试,然后查看日志,如果是空白则需要重装WebHook

如何 Git 上使用 GPG 进行验证提交教程

首先你可以可以参阅 Gitee(码云) 和github发布的各自平台的添加教程

https://gitee.com/help/articles/4248#article-header0

https://help.github.com/en/github/authenticating-to-github/managing-commit-signature-verification

以下来自码云

如何在码云上使用 GPG

GPG

GPG Key 生成与导出

Windows

  1. 下载 https://gpg4win.org/
  2. 生成 GPG Key
输入图片说明

输入用户名和邮箱,注意邮箱必须与 Gitee 提交邮箱一致

输入图片说明
  1. 导出
输入图片说明

另外在Windows平台请注意

请仔细确认你的GPG 主目录是在哪个位置,如下图:

比如我的就是
C:/Users/Yanlongli/AppData/Roaming/gnupg/pubring.kbx
而 Git默认寻找位置是
C:\Users\Yanlongli\.gnupg
这会产生如下问题

gpg: directory ‘/c/Users/Yanlongli/.gnupg’ created
gpg: keybox ‘/c/Users/Yanlongli/.gnupg/pubring.kbx’ created

gpg: skipped “68EFDB840679A70E”: No secret key
gpg: signing failed: No secret key
error: gpg failed to sign the data
fatal: failed to write commit object

这就是目录不对
我们可以通过软连接的方式链接到该目录 — 注意需要管理员权限
mklink /d C:\Users\Yanlongli\.gnupg C:\Users\Yanlongli\AppData\Roaming\gnupg

如果出现如下错误,直接删除 所有 .gnupg 目录下 .lock结尾的文件即可

gpg: invalid size of lockfile ‘/c/Users/Yanlongli/.gnupg/gnupg_spawn_agent_sentinel.lock’
gpg: cannot read lockfile
gpg: can’t connect to the agent: Invalid argument
gpg: keydb_search failed: No agent running
gpg: skipped “68EFDB840679A70E”: No agent running
gpg: signing failed: No agent running
error: gpg failed to sign the data
fatal: failed to write commit object