通过GitHub Actions和Netlify将GitHub Issues用作Hugo前端

2020-12-04 20:29:36

我习惯了将快速的博客帖子创意转储到博客回购中的问题中。在实际发表在我的博客文章上之前,这是一个方便的访问它们并与朋友分享反馈的地方。

草稿不断积累,我该如何欺骗自己发表更多论文?也许通过减少下一步所需的工作量?我们开始做吧!

我的博客是使用Hugo静态生成的,代码托管在Github上,然后当请求请求传入时,Netlify会在合并时对其进行构建,预览和发布。

博客文章草稿作为Github问题发布,因此存在明显的差距:我们如何将问题转换为对Netlify的请求请求?输入Github动作!

如果我们想继续前进,我的整个工作流程都将放在这里,但让我们分解一下。

我决定在一个问题标记为“发布”后触发发布过程,因此我们首先开始:

名称:发布有关以下问题的问题的帖子:类型:[' labeled' ]工作:构建:如果:$ {{github.event.label.name ==' publish' }}运行:ubuntu最新步骤:...

接下来,我们要指定步骤,首先是将存储库检出到操作的环境中:

一旦提供了源代码,我们便希望根据问题元数据生成博客文章。这是一个非常基本的版本,尽管最后我做了更多的调整:

-名称:生成Post env:POST_TITLE:$ {{github.event.issue.title}} POST_BODY:$ {{github.event.issue.body}}运行:|猫> " content / posts / $ {POST_TITLE} .md" << EOF $ {POST_BODY} EOF

这会将已为减价的问题主体推入基于减价标题命名的减价文件中。这是添加前题,修饰标题或博客设置要求的其他地方的好地方。

通过环境变量运行有效负载有助于避免转义各种字符,例如`。

最后,我们使用彼得·埃文(Peter Evan)的create-pull-request操作发出拉取请求,该操作非常简单:

这是我们所需要的最低要求,但是我们可以在此处指定各种其他选项:例如自动删除分支,设置自定义标题,正文等。这是我正在做的事的一个例子:

-名称:Create Pull Request使用:peter-evans / [受电子邮件保护]和:delete-branch:真实标题:"发布:$ {{github.event.issue.title}}"身体:自动发芽出版。合并将发布至:https://shazow.net/posts/$ {{github.event.issue.title}}关闭#$ {{github.event.issue.number}}审稿人:$ {{github.repository_owner} } commit-message:" post:$ {{github.event.issue.title}}"

当我的博客文章草稿准备好后,我添加了标签,Github操作将其移除,从而创建了拉取请求:

提取请求会自动将我作为审阅者,并包含“ Closes #X”(关闭#X)行,一旦PR合并,它将关闭草稿发行。很方便!

一旦准备好拉取请求,Netlify就将其删除,构建所有内容并生成一个方便的预览:

我可以确保一切看起来正确,甚至可以直接在pull请求中应用编辑。这是使用所有出色的Pull Request Review功能发送长博客帖子以征求反馈的又一重要步骤!

一切都说完了,合并合并请求将触发Netlify将我的更改发布到我的域中,然后合并将解决原始问题,我完成了!

拖放图片可在Github Issues中使用,因此撰写带有大量屏幕截图或您所拥有内容的快速帖子非常容易。

对我而言,重要的是我与第三方服务之间的关系不太紧密,因此拉取请求和代码合并流程可确保所有发布状态继续存在于我的Git存储库中。 我仍然可以按照以前的方式发布博客文章:提取最新的回购信息,写一些markdown,然后推动发布。 我添加了一些frontmatterify脚本来处理传入的降价,并将远程Github Issue上传的图像转换为请求请求中包含的本地图像。 该脚本还生成了我用于Hugo的前题。 有点笨拙,但现在可以使用。