发布于 2026-01-06 0 阅读
0

从 GitHub 到 Glitch 的自动化部署:为什么选择 GitHub 到 Glitch?Git Hooks 能帮上忙吗?工作流程:如何自行设置?未来展望?DEV 全球展示挑战赛,由 Mux 呈现:展示你的项目!

将我的部署从 GitHub 自动化到 Glitch

为什么选择 GitHub 而不是 Glitch?

Git Hooks 能派上用场吗?

工作流程

如何自行设置

未来?

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

程序员都喜欢自动化。任何需要重复执行的任务?那就自动化吧!我一直在努力实现自动化的一项任务就是将代码从 GitHub 部署到 Glitch。这是我最新的流程。它还在完善中,但欢迎查看并告诉我你的想法。

为什么选择 GitHub 而不是 Glitch?

Glitch 是一个很棒的在线编写和测试全栈应用的工具。但我同样喜欢 GitHub 的代码审查工具,尤其是在团队协作时。我理想的工作流程是:先在 Glitch 上开发一个 remix 版本,然后推送到 GitHub,与团队进行代码审查,最后部署到 Glitch 主项目。

这一点在我推广 Glitch 应用之后就非常重要了。我不想在用户积极浏览和修改 Starter-Discord 的时候再去编辑和测试它。

我最初的解决方案是使用Probot。它利用 Glitch API 从 GitHub 导入代码。问题在于 Glitch API 尚未公开。它目前还不稳定,我们不建议使用它来构建自己的工具。我知道我使用的接口即将进行一些 API 变更。由于我无法再使用它,我需要一个新的解决方案。

郑重警告:这只是一个概念验证,使用了晦涩难懂的 Git 知识。而且我本人对 Git 的掌握也并不精通。请自行斟酌使用。欢迎更有经验的人士提供反馈。

Git Hooks 能派上用场吗?

由于 Glitch 每个项目都有自己的 Git 仓库,我想知道是否可以利用 Git 仓库来代替 Git 脚本。我知道有一种叫做 Git Hooks 的东西,可以根据仓库的活动自动执行一些操作。但我以前从未使用过它。

经过几个小时的阅读和测试,我得到了一个可以部署任何新代码到主分支的工作原型。

但这并没有解决 GitHub 的问题。为此,我决定尝试一些新的东西:GitHub Actions。我阅读了一些文档,并试用了几个工具,最终选择了wei 开发的 git-sync。我遇到了一些随机的 bug,主要与身份验证有关,花了几个小时才解决。

工作流程

假设我想更新Dev.to 手册中的 Glitch 项目。我不想在用户使用它的时候直接编辑它,所以我:

  • 在 Glitch 上重新混音
  • 进行修改并提交到新分支
  • 将新分支推送到 GitHub 仓库
  • 我在 GitHub 代码库中创建了一个 PR,将新分支合并到 master 分支。
  • 然后我和我的团队会审查这些更改。
  • 一旦获得批准,我们就合并。

现在,自动化就从这里开始。

  • 合并操作会触发 GitHub Action。
  • GitHub Action 会将代码推送到 Glitch 主应用程序的 Git 仓库中。
  • 当 Glitch 主应用的 Git 仓库收到该数据时,就会触发 Git Hook。
  • Git Hook 会将所有现有代码替换为新代码。

如何自行设置

提醒一下,此操作会清除 Glitch 项目中的所有代码,并将其替换为 Github 中的代码,因此请谨慎使用!

你需要:

  • 代码将部署到的“主”Glitch 项目
  • 项目将使用一个公开的 GitHub 代码库进行部署。

步骤 1:在 Glitch 终端中

  1. 前往故障终端
  2. 跑步git config receive.denyCurrentBranch ignore
  3. 在终端中使用你喜欢的文本编辑器创建一个 Githook。我用的是 Vim。vim .git/hooks/post-receive
  4. 将这段 bash 脚本放入你的 hook 函数中:
#!/bin/bash
unset GIT_INDEX_FILE
git --work-tree=/app  --git-dir=/app/.git checkout -f
Enter fullscreen mode Exit fullscreen mode
  1. 授予你的钩子执行权限chmod +x .git/hooks/post-receive

步骤 2:创建 GitHub 密钥

  1. 返回您的 Glitch 项目,然后点击“工具”-->“Git、导入和导出”。
  2. 此副本Your project's Git URL: 包含身份验证令牌,请务必保密!
  3. 由于这是个秘密,请前往您的 GitHub 代码库并进入“secrets”部分。
  4. 将所有内容粘贴到一个新的秘密文件中,并命名为“”。glitch_git_URL

步骤 3:创建 GitHub Action

  1. 前往“操作”,然后从“自行设置工作流程”创建一个新的工作流程。
  2. 这是使用 git-sync 操作并传入密钥的代码。请将值替换SOURCE_REPO为您的 https GitHub URL(例如https://github.com/glitchdotcom/devto.git)。
on: 
 pull_request:
  types: [closed] 
jobs:
  repo-sync:
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
    - name: repo-sync
      uses: wei/git-sync@v1
      env:
        SOURCE_REPO: "https://github.com/glitchdotcom/devto.git"
        SOURCE_BRANCH: "master"
        DESTINATION_REPO: ${{ secrets.glitch_git_URL }}
        DESTINATION_BRANCH: "master"
      with:
        args: $SOURCE_REPO $SOURCE_BRANCH $DESTINATION_REPO $DESTINATION_BRANCH

Enter fullscreen mode Exit fullscreen mode

第四步:测试一下!

现在到了激动人心的时刻。用你喜欢的方式更新你的 GitHub 代码。然后点击“操作”按钮,即可查看更新效果……

未来?

现在您已经了解如何从 GitHub 设置自动部署。如果您对此足够感兴趣,我们可以开发一种方法来自动完成所有这些步骤。如果说有什么比自动化更棒的,那就是自动化的自动化。现在,不妨试用一下,并告诉我们您的想法!

赋予你的 Glitch 应用超能力——保持应用运行、解除速率限制,并获得更多内存和磁盘空间。

文章来源:https://dev.to/glitch/automating-my-deploys-from-github-to-glitch-2fpd