赞
踩
## 背景
先说下背景需求,在摸鱼周报的整理流程中,最后一步需要生成公众号的原文链接,原文链接指向的是个人博客地址。博客需要发布才能产生外部链接,发布到不费事,但是操作步骤重复,且因为涉及博客推送相关的配置都在我的个人电脑里,所有步骤必须由我来完成。来回多次之后就考虑将这个流程做成自动化了,目标是让周报协作者都可以实现博客推送,用到的实现方式是 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 提供的为仓库定义自动化流程的方案,类似 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 "
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。