使用 Github + Pipedream 从 Git repo 发布 DEV 文章

2025-06-04

使用 Github + Pipedream 从 Git repo 发布 DEV 文章

我在 Mac 上使用VS Code编写了这篇文章,并通过运行 发布了它git push。我所有的 DEV 帖子都由 Git 跟踪,我可以从本地机器上管理它们。

下面,我将告诉您为什么要进行此项设置,并向您展示如何轻松地为您自己的帖子进行配置。

工作原理

我将首先向您展示成品,以便您了解其端到端的工作原理。

首先,我创建一个新的 Markdown 文件:

---
title: My First DEV Post
---

Hello, world!

并将其推送到 Github:

git add my-first-post.md
git commit -m "Adding first post"
git push

一旦我推送,这个 Pipedream 工作流程就会在我的 DEV 帐户中创建该帖子的草稿:

我的第一篇文章草稿

我可以再次编辑git push,草稿就会更新。当我准备发布时,我会published: true在 YAML 前置内容的顶部添加以下内容:

---
published: true
title: My First DEV Post
---

Hello, world!

然后运行:

git add my-first-post.md
git commit -m "Publishing first post"
git push

并已发布:

我的第一篇文章已发布

那太酷了!

为什么要在 Git 仓库中管理 DEV 帖子?

我喜欢用VS Code写代码,喜欢它的各种键盘快捷键、插件以及其他我添加的实用工具,让它变得独一无二。当我在开发编辑器中编写 Markdown 时,我会怀念我的本地设置。这正是我设置它的主要原因:我可以在自己的编辑器中,用自己的快捷键和工具写文章

但是将文章存储在 Github repo 中还有其他好处:

  • Git 会跟踪您对文章所做的每一项更改。您可以比较不同版本之间的更改,也可以恢复到旧版本。如果您将代码库设为公开,任何人都可以发起拉取请求来修复拼写错误、失效链接等问题。
  • 您可以运行Git hooksGithub Actions来自动执行基本任务:例如,您可以在更改提交到您的 repo 之前运行脚本来验证您的 Markdown 或进行拼写检查。
  • git push您可以使用Pipedream工作流程触发其他更复杂的自动化操作。例如,一旦您将文章发布到 DEV,就可以自动将其链接发布到 Twitter。

如何设置

首先,您需要一个Github帐户和一个DEV API 密钥

首先,创建一个新的 Github repo来管理你的 DEV 帖子:

DEV 发布 Github repo 标题

然后在本地克隆 repo:

git clone git@github.com:[YOUR_USERNAME]/dev-to-posts.git

接下来,您将配置Pipedream工作流程以使用DEV API发布您的文章

Pipedream 是一个面向开发者的集成平台。Pipedream 的工作流程类似于Github Actions:每次您将新的 Markdown 文件推送到代码库时,工作流程都会运行。Pipedream 工作流程使用预构建的操作自定义 Node.js 代码编写,每个操作都可以连接到数百个 API 集成。您可以在 Pipedream 的免费套餐中免费运行此工作流程。

访问https://pipedream.com并按右上角的登录按钮注册 Pipedream 帐户:

注册 Pipedream 账户

注册后,打开此 DEV 工作流程,然后点击右上角附近的“复制” 。这会在您的帐户中创建我的工作流程的副本,该副本将在您的DEV 仓库中运行。

首先,您需要配置触发器步骤。每次在您的代码库中添加或修改 Markdown 文件时,此工作流程都会运行。您只需连接您的 Github 帐户,然后从下拉菜单中选择您的代码库即可:

连接 Github 账户

选择 DEV posts repo

然后点击触发步骤右下角的“创建源” 。这将在你的 Github 仓库中配置一个webhook,每当推送发生时都会通知此工作流。

您还需要打开此触发步骤确保它在新的推送时自动运行:

打开扳机踏板

工作流程的下一步——create_and_update_dev_posts运行 Node.js 代码将此 Markdown 推送到 DEV API。如果您向代码库添加文章,该工作流程会创建一篇新的 DEV 文章。如果您要将更新推送到现有文章,该工作流程会更新该 DEV 文章。

要使此步骤生效,您只需连接您的 DEV API 密钥即可。点击此步骤顶部附近的“连接帐户”按钮。与触发步骤一样,这将提示您输入您的 DEV API 密钥:

连接 DEV API 密钥

现在你已经准备好推送你的第一篇文章了。在上面克隆的 Git 仓库中创建一个新的 Markdown 文件,并添加以下内容:

---
title: My First DEV Post
---

Hello, world!

添加、提交并将此文件推送到 Github:

git add my-first-post.md
git commit -m "Adding first post"
git push

一旦你推送这些更改,你应该会看到 Pipedream 工作流程中出现一个新事件:

新的 Pipedream 活动

这将触发工作流程,在 DEV 中创建一个新的草稿文章:

新的 DEV 草案

要发布文章,请在文件顶部的YAML 前置内容published: true部分添加以下内容:

---
title: My First DEV Post
published: true
---

然后运行:

git add my-first-post.md
git commit -m "Publishing first post"
git push

您应该会看到您的全新文章在 DEV 中出现并发布:

我的第一篇文章再次发布

要取消发布,请将published标志设置为false

---
title: My First DEV Post
published: false
---

由于您拥有 Pipedream 工作流程的副本,您可以随意修改代码。您可以更新 DEV 步骤来更改文章的发布方式,或者添加一个步骤,以便在发布新文章时向 Slack 发送消息或发布推文。如果您进行了任何编辑,请在下方评论区分享,或发布您自己的文章!

这篇文章的其余部分讨论了集成的其他细节,例如管理文章中的图像,以及您可以用来更改帖子详细信息的其他YAML 前端内容。

在 DEV UI 中更改文章

除非您也对 repo 中的文件进行更改,否则您对 DEV UI 中的文章所做的任何更改都将被覆盖

如何在帖子中添加图片

目前,DEV 没有用于上传图像的 API,因此我使用Cloudinary来托管我的图像,并在我的 Markdown 中引用 Cloudinary URL:

![My image](https://res.cloudinary.com/dkbxegavp/image/upload/v1590355743/dev.to%20posts/dev-to-draft_bmqlgb.png)

理论上,这个工作流程可以更改为在文章 Markdown 中引用本地图像:

![My image](./images/my-image.png)

一旦您将图像提交到您的 repo,Pipedream 工作流程就可以将图像直接上传到 Cloudinary,并将文章引用更改为指向托管版本。

请记住 - 您之前复制的 Pipedream 工作流程是您可以修改的。您可以向该工作流程添加任何您想要的逻辑,例如将图片上传到 Cloudinary 或其他托管服务提供商,或者在您的发布流程中添加任何其他自定义内容

仅限默认分支

工作流程仅处理默认 repo 分支上的提交(master除非您更改了它)。其他分支的提交将被忽略,直到它们合并到您的默认分支。

一个 Markdown 文件:一篇帖子

您推送到 DEV 仓库的每个 Markdown 文件都会生成一个单独的 DEV 帖子。您的文件必须带有.md扩展名才能被处理。工作流程会忽略所有非 Markdown 文件。

前言

Pipedream 工作流使用DEV 支持的相同 YAML 前端内容来更新已发布状态、标题、标签等。

任何 front matter 变量都不是必需的。如果您不添加 front matter,您的文章将以草稿形式保存到 DEV,标题将基于文件名(见下文)。

标题

title如果存在,则始终使用前置变量

如果title不存在,工作流程将使用文章的文件名,并将连字符和下划线转换为空格。保留大小写:

my-first-post.md -> my first post
My_First_Post.md -> My First Post
My First Post.md -> My First Post

如果您依赖此约定,然后稍后想要设置title前置变量,则工作流将根据变量的值更新标题,并使用它来代替文件名。

文章来源:https://dev.to/dylburger/publish-dev-articles-from-a-git-repo-with-github-pipedream-505j
PREV
VS Code 中的 Git 速查表
NEXT
六边形架构和清洁架构(附示例)