此前,我维护的多个 GitHub 项目都需要同时部署 GitHub Pages 和 Gitee Pages 国内镜像站点。

对于 GitHub,当我们将项目的变更 push 到 GitHub 远程仓库时,会触发 GitHub Pages 的自动化部署,将项目的最新内容更新到 GitHub Pages 站点。如下图所示:

这个开源工具,为我省下了大量的时间!_git

然而,对于 Gitee,一个头疼的问题是,虽然我们可以利用一些镜像同步脚本或工具(如:git-mirror-action)将 GitHub 项目同步至 Gitee 仓库,但我们却​无法自动化部署 Gitee Pages,而必须手动登录 Gitee,并且手动点击更新​。

为什么呢??因为,​Gitee Pages 自动化部署要收费​!99 块钱一年!!如果我们想要在不交钱的情况下实现 Gitee Pages 自动化部署(白嫖?),那么按照此前,只能努力让我们的 Gitee 开源项目变得足够好,得到官方的推荐后,会显示“您的项目为推荐项目,已自动为您开通 Gitee Pages Pro”,这样就可以自动化了。

这个开源工具,为我省下了大量的时间!_git_02

插播一个码云官方最新消息,“因业务调整,Gitee Pages Pro 暂时关闭个人用户购买入口,已开通用户的仓库不受影响。GVP 项目和付费企业使用不受影响。” ​也就是说,现在想花钱图个省事都不行了​。。

然而,对于很多私人博客,或者说开源项目刚创建不久的,通常来说这种项目 stars 数很少,想得到官方的推荐,呵呵,不可能!所以我开发了 ​Gitee Pages Action​ 工具,​无须人工,即可实现 Gitee Pages 的自动化部署​!只需要在我们的 GitHub 项目 ​​Settings​​​ 页面下配置 keys,然后在 ​​.github/workflows/​​ 下创建一个工作流,引入一些配置参数即可。

抛一下开源工具的地址,点击阅读也能直达,这个开源工具将会持续维护,欢迎关注

​​

下面我为大家详细讲一下工具的入参,以及具体如何使用,若有使用上的问题,也欢迎随时反馈。

入参


参数

描述

是否必传

默认值

​gitee-username​

Gitee 用户名

-

​gitee-password​

Gitee 密码

-

​gitee-repo​

Gitee 仓库(严格区分大小写)

-

​branch​

要部署的分支

​master​

​directory​

要部署的分支上的目录

''

​https​

是否强制使用 HTTPS

​true​

示例

以下是一个完整的使用示例。

在你的 GitHub 仓库 ​​.github/workflows/​​​ 文件夹下创建一个 ​​sync.yml​​ 文件,内容如下:

name: Sync
on:
push:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Sync to Gitee
uses: wearerequired/git-mirror-action@master
env:
# 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
with:
# 注意替换为你的 GitHub 源仓库地址
source-repo: "git@github.com:doocs/advanced-java.git"
# 注意替换为你的 Gitee 目标仓库地址
destination-repo: "git@gitee.com:Doocs/advanced-java.git"
- name: Build Gitee Pages
uses: yanglbme/gitee-pages-action@master
with:
# 注意替换为你的 Gitee 用户名
gitee-username: yanglbme
# 注意在 Settings->Secrets 配置 GITEE_PASSWORD
gitee-password: ${{ secrets.GITEE_PASSWORD }}
# 注意替换为你的 Gitee 仓库,仓库名严格区分大小写,请准确填写,否则会出错
gitee-repo: doocs/advanced-java

先使用 ​​wearerequired/git-mirror-action​​​ 将 GitHub 仓库同步到 Gitee 仓库,再使用 ​​yanglbme/gitee-pages-action​​ 实现 Gitee Pages 的自动部署。

请确保在 GitHub 项目的 ​​Settings​​​ -> ​​Secrets​​​ 路径下配置好 ​​GITEE_RSA_PRIVATE_KEY​​​ 以及 ​​GITEE_PASSWORD​​ 两个密钥。其中:

•​​GITEE_RSA_PRIVATE_KEY​​​: 存放你的 ​​id_rsa​​​ 私钥。•​​GITEE_PASSWORD​​: 存放你的 Gitee 账户密码。

如果一切配置正常,并成功触发 Gitee Pages Action ,我们可能会收到一封来自 Gitee 的告警邮件/站内信。放心,这是 GitHub Action 程序帮我们登录到 Gitee 官网,并为我们点击了项目的部署按钮。

FAQ

问题 1:遇到短信验证码导致无法自动部署,怎么解决?

因为 Gitee Pages Action 使用的是 GitHub 自家的服务器(美国),在这种情况下,当 Action 自动帮我们登录 Gitee 的时候,会触发 Gitee ​帐号异常登录告警​,提示用户在非正常的 IP 地址登录了 Gitee,需要输入验证码。

解决方案​是:关注「​码云 Gitee​」 微信公众号,绑定个人微信到码云帐号。这样 Action 在登录的过程中,Gitee 就不会下发短信验证码,而是通过「​码云 Gitee​」公众号给我们发送一个登录通知,Action 就能成功登录了。

这个开源工具,为我省下了大量的时间!_ooc_03

问题 2:报 deploy error occurred, message: 'NoneType' object has no attribute 'group' 错误,怎么办?

报了这个错误,说明 Action 已经成功帮我们登录 Gitee 帐号了,但在访问 Gitee Repo 的过程中出现问题。

这种情况,一般是 Gitee Pages Action 的参数配置错误导致,请仔细检查你的配置信息。

注意:​​gitee-repo​​​ 参数严格区分大小写,请准确填写,比如 ​​doocs/advanced-java​​​,当你写成 ​​doocs/Advanced-java​​​ 的时候,是访问不到的,不信你可以试试访问:​​https://gitee.com/Doocs/Advanced-java​​​

谁在使用?

目前,​蚂蚁金服数据可视化团队​、​有赞技术团队​、还有 ​Doocs 开源社区​等多个开源项目都在使用 Gitee Pages Action,所以,我也把它推荐给你。感兴趣的朋友,也可以 star 关注一波!

这个开源工具,为我省下了大量的时间!_github_04


长按识别下图二维码,关注公众号「​Doocs 开源社区​」,第一时间跟你们分享好玩、实用的技术文章与业内最新资讯。