完整的 CI/CD 与 Docker + GitHub Actions + DigitalOcean(Droplets + Container Registry)

如今,CI/CD 已成为开发软件时必不可少的一部分。它可以节省大量金钱、时间并降低风险......在本文中,我将向您展示如何为我的个人博客设置 CI/CD 并提供免费服务。
如果您不熟悉任何服务,请查看它们的定义:
-
GitHub Action:GitHub 的 CI/CD 平台。 https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions
-
DigitalOcean Container Registry:存储和管理私有 Docker 镜像的地方,有 1 个存储库的免费计划。
https://www.digitalocean.com/products/container-registry/
- DigitalOcean Droplets:虚拟机提供商。便宜、稳定且易于设置。
https://www.digitalocean.com/products/droplets/
首先,看看这个工作流程。

-
每次我们向 GitHub 推送新的提交时,它都会开始处理 GitHub Actions 工作流。
-
GitHub Actions 将在其运行器中构建一个 Docker 镜像并将该镜像推送到 Container Registry。
-
然后 GitHub Actions 将连接到 Droplets 并将镜像从 Container Registry 部署到该 Droplets。
让我们看看如何设置这个工作流程。
添加操作密码
您需要在 GitHub Action workflow.yml 文件中使用一些秘密变量,因此最好通过将它们存储在 Github Secrets 中进行加密。
您可以转到存储库_Settings_ → Secrets → Actions,然后单击_New repository secret。_

GitHub 秘密
我们需要一些变量:
- DIGITALOCEAN_ACCESS_TOKEN:您为访问DigitalOcean API 而生成的令牌。
从_DigitalOcean仪表板→API→令牌/密钥→生成新令牌_(记得检查读取和写入权限)
-
HOST: 你的 ssh 主机 (Droplets ipv4)
-
PASSPHRASE:加密私钥,在您为 Droplets 创建 ssh 密钥时生成。
-
SSHKEY:ssh私钥的内容。前 ~/.ssh/id_rsa 的原始内容
-
USERNAME:ssh用户名,默认:root
现在我们有足够的秘密变量可以在 CI/CD 工作流文件中使用。
创建工作流 YAML 文件
-
在存储库目录中创建一个名为_.github/workflows_的目录。
-
在该目录中,创建一个名为 build-and-deploy.yml 的新文件并添加以下代码:
1.控制工作流何时运行:在这种情况下,每次我们在主分支中进行推送。
2.定义一些不需要加密的环境变量。
- IMAGE_NAME: 你的 Docker 镜像名称
- REGISTRY:您的 DigitalOcean 注册表容器 URL

注册表容器 URL
3\。我们在这里有 2 个工作:运行 build_and_push 然后在完成后运行 deploy.

运行作业
在 YAML 文件中需要注意一些事项:
-
因为 DigitalOcean Container Registry 只有 500MB 的免费计划,所以我们应该在构建和推送新镜像后删除所有旧镜像。
-
部署时,最好停止运行容器,将其移除,然后运行新镜像(将从 DigitalOcean Container Registry 中拉取)。
如果您觉得这个博客有帮助,请分享并鼓掌👏👏👏
您可以在LinkedIn和Twitter. 上与我联系
如果您有任何意见、问题或建议,请随时在下面的评论部分发表!

加入FAUN:网站💻**|播客🎙️|[Twitter][🐦5|🐦5**|Facebook *👥**|Instagram📷|Facebook 群组🗣️|Linkedin 群组💬|Slack📮 | zwz * 新闻](https://thechief.io)📰|更多.**
如果这篇文章对你有帮助,请多点下方的拍手👏按钮,表示对作者的支持👇
更多推荐
所有评论(0)