在现代 Web 开发中,持续集成/持续部署(CI/CD)已经成为提高开发效率和保证代码质量的重要工具。本文将介绍如何在 Deno 项目中使用 GitHub Actions 进行自动化 CI/CD,示例代码可在 GitHub 仓库 中找到。
准备
在开始之前,我们需要对几个概念进行解释:
- Deno:一种基于 V8 引擎的 TypeScript 运行时,可以用于编写 Web 服务器和命令行工具等。
- GitHub:一个代码托管平台,也提供了集成工具 GitHub Actions,可以实现代码自动化集成和部署。
- Docker:一个虚拟容器平台,可以用于运行应用程序和测试环境。
为了让我们的 CI/CD 流程更高效,我们将使用 Docker 来构建和测试我们的 Deno 应用程序。
第一步:创建工作流程
在我们的 Deno 项目的仓库目录下,我们需要创建.github/workflows
目录,然后在其中创建一个.yml
文件(例如:deno_ci_cd.yml
)。
-- -------------------- ---- ------- ----- ---- ----- --- ----- --------- ------ ----- ------ -------- ------------- ------ - ----- -------- --- ---- ----- ------------------- - ----- ----- --- ---- --- ---- ----- ---------------------- ----- ------------- ---- ------ ---------- - ----- ------- -- ------ --- ----- --------------------------- ----- -------- - ----- ---- ----- -----------------------
此处我们定义了一项名称为“Deno CI/CD”的工作流程。它将在推送代码时运行(仅限于 main
分支)。我们定义了一个单独的作业(Job),其中包含三个步骤:
- 检出代码。
- 构建和测试代码。
- 构建并推送一个 Docker 镜像到 Docker Hub。
第二步:构建和测试
接下来,让我们为工作流程添加构建和测试步骤。这里我们将使用 Deno 和 Docker 来构建和测试我们的代码。
-- -------------------- ---- ------- - --- ----- ------ - --- ------ - ----- -------- --- ---- ----- ------------------- - ----- ----- --- ---- --- ---- ----- ---------------------- ----- ------------- ---- ------ ---------- - ---- ---- ---- ----------- - ----- ----- ------ ----- ----- --------------------------- ----- -------- - ----- ----- ----- -----------------------
在这里,我们添加了两个步骤:
- 我们使用
denoland/setup-deno@v2
操作来安装 Deno 并将其配置为 PATH 环境变量中的可执行程序。使用deno test
命令运行测试。 - 我们使用
docker/build-push-action@v2
来构建 Docker 镜像并将其打一个 latest 的 tag。
第三步:构建 Docker 镜像并推送
由于我们的代码在 Docker 容器中运行,我们需要利用 Docker Hub 存储我们的镜像。在这里,我们将使用 docker/build-push-action
操作来构建和推送我们的镜像。
-- -------------------- ---- ------- ----- ------ - --- ------ - ----- -------- --- ---- ----- ------------------- - ----- ----- --- ---- --- ---- ----- ---------------------- ----- ------------- ---- ------ ---------- - ---- ---- ---- ----------- - ----- ----- -- ------ --- ----- ---------------------- ----- --------- --- ----------------------- -- --------- --- ----------------------- -- - ----- ----- ------ ----- ----- --------------------------- ----- -------- - ----- ---- ----- -----------------------
添加了一个步骤来让 GitHub Actions 登录到 Docker Hub,使用枚举存储的密文 Docker 凭据作为参数,以便能够使用它来推送 Docker 镜像。
第四步:触发自动化 CD
我们已经能够构建和测试我们的代码,并将其打包到一个 Docker 镜像中。现在是时候在生产环境中使用我们的应用程序了。我们可以使用 GitHub Actions 来在新版本推出时自动部署我们的应用程序。
-- -------------------- ---- ------- ----- ------ - --- ------ - --- - ----- ------ -- ---------- --- ---------- -- ----------------- ----- -------------------------- ----- ----- --- ----------------- -- --------- --- --------------------- -- ---- --- ---------------- -- ----- --- ----------------- -- ------- - ---- ------ ---- ----------------------- ---- ------ ---- ------- ---- ------ -- ------- ---- ------ --- -- -- --------- -------------- -----------------------
最后一个步骤实现了自动部署。我们使用 appleboy/ssh-action
操作来通过 SSH 登录到生产服务器,并执行以下操作:
- 拉取 Docker 镜像。
- 关闭和删除现有的容器实例。
- 启动新容器实例,并使用新的镜像运行它。
总结
使用 GitHub Actions 开发和部署 Deno 应用程序是非常简单的。我们需要做的只是创建一个 CI/CD 工作流程并定义我们想要构建、测试并推送到 Docker Hub 的代码。之后,我们可以使用自动化部署工具来推出我们的应用程序并让它们自动运行。对开发人员而言,这是一种极具效率的方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647fe00948841e9894f61606