当前位置:   article > 正文

利用 Github Action 实现博客自动发版

自动发版

## 背景

先说下背景需求,在摸鱼周报的整理流程中,最后一步需要生成公众号的原文链接,原文链接指向的是个人博客地址。博客需要发布才能产生外部链接,发布到不费事,但是操作步骤重复,且因为涉及博客推送相关的配置都在我的个人电脑里,所有步骤必须由我来完成。来回多次之后就考虑将这个流程做成自动化了,目标是让周报协作者都可以实现博客推送,用到的实现方式是 Github Action。

实现思路

在开始之前先了解下原先的发布流程,如下图表示:

整个过程涉及 3 个仓库:

  • Moyu Repo。管理周报文章的公共仓库,协作者可以通过它拉取和推送内容。

  • Blog Repo。管理博客内容的私有仓库,周报只是其中一部分。

  • Blog Website。博客的网站,它部署在一台腾讯云服务器上,它也是私有的。

因为涉及两个私有仓库,普通协作者都没有他们的访问权限,所以发布流程都依赖我来完成。解决方案就是消除发布流程对权限的依赖,理想流程是这样的:

这样触发入口就都集中在了共有仓库,协作者也可以参与博客发布。要实现这个流程需要将需求分为两步:

1、Moyu Repo 通过 Github Action 推送 Moyu 内容到 Blog Repo。

2、Blog Repo 通过 Github Action 发布内容到网站。

这其中最关键的是访问私有仓库时如何处理权限的问题。

Github Action

这里先简单了解下 Github Action。它是 Github 提供的为仓库定义自动化流程的方案,类似 Jenkins、GitLab CI/CD。Github Action 有一套自己的流水线配置方式,所有的流程都可以通过一个 yml 文件下发。Gtihub Action 有自己的虚拟机,支持 Windows Server/Linux/Mac,使用者无需关心环境配置问题,可以直接使用。

配置入口如下图所示:

点击set up a workflow yourself,即创建了一个用于编排自动化任务的 workflow,它对应一个 yml 文件,所有的配置流程都在这里进行。

自动化任务配置前我们需要先考虑这几个问题:什么时机触发?在什么设备运行?如何执行自动化任务?我们看一个简单的例子来学习下 Github Action 如何定义这些行为:

yml name: GitHub Actions Demo on: [push] jobs: Explore-GitHub-Actions: runs-on: ubuntu-latest steps: - run: echo "

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/185973
推荐阅读
相关标签