使用 TeamCity Cloud 和 Docker Hub 为 Asp.Net Core 实施您的第一个构建管道
嘿伙计们,最近我有这个要求,需要我使用 Github、TeamCity Cloud 服务器和 Docker Hub 为 .Net Core 应用程序集成构建过程。
所以我研究了它并继续实施它,下面是我所做的简要说明。
-
我使用了 Visual Studio 创建的开箱即用项目,并在其中手动添加了一个 docker 文件。
-
然后我继续在 TeamCity 云服务器上创建一个免费试用帐户,在该服务器上我使用此 docker 文件构建、发布并将 docker 映像推送到我的 Docker Hub 存储库
-
最后,我在另一台机器上提取了 docker 镜像,我们的天气预报 api 启动并运行 🚀 🚀。
既然我确实可以找到一个合适的资源来实现它,我想为什么不自己尝试一下。所以在这里我试图解释我遵循的步骤。
先决条件
-
Team City 云服务器上的帐户https://www.jetbrains.com/teamcity/cloud/
-
带有存储库的 Docker Hub 帐户,用于发布 asp.net 核心解决方案的映像https://hub.docker.com
-
Docker Desktop 安装在本地以提取和运行部署的映像
-
带有 docker 文件的 Dot Net 核心解决方案示例。您可以参考我在这里使用的https://github.com/rajat-srivas/dotnetcore-teamcity-docker
-
我还假设您了解 docker 并在这里了解如何实现此集成
TeamCity 云服务器上的项目设置
-
登录你的团队城市云服务器
-
点击项目,然后创建项目
[](https://res.cloudinary.com/practicaldev/image/fetch/s--aYth55Eq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/8bu0vh9ngr43jjsnjhzs.png)
-
接下来,我们将把 TeamCity 服务器连接到 GitHub 存储库,这样它就可以在每次有新提交时提取代码
-
提供存储库 URL (https://github.com/rajat-srivas/dotnetcore-teamcity-docker),以及访问存储库的凭据
[](https://res.cloudinary.com/practicaldev/image/fetch/s--Ws0jlMhg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/1tw5b8l8bw0208fp595t.png)
-
提供项目名称并单击继续
-
接下来,我们需要将 Docker Hub 存储库连接到团队城市。
-
进入项目设置页面并单击连接。
-
点击 Add Connection 并配置 Docker Registry
[](https://res.cloudinary.com/practicaldev/image/fetch/s--6zVwSbem--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/yp1hrw9yu0sd5cozxrok.png)
-
返回构建页面
-
单击添加构建功能并选择 Docker 支持。
-
单击添加注册表连接并使用创建的 docker 连接
[](https://res.cloudinary.com/practicaldev/image/fetch/s--JvGwy2RM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/8p9pj0lt7vwddpeomg1v.png)
实现构建管道🏗
-
点击 Build Steps 开始创建构建管道
-
对于当前的解决方案,我们需要四个构建步骤:
-
Net Build u003d> 构建 .net 解决方案
-
Net Publish u003d> 在指定的输出目录中发布 .Net 解决方案
-
Docker Image Build u003d> 读取指定的 docker 文件以创建包含 .net core 解决方案发布的文件夹内容的 docker 镜像
-
Docker Image Push u003d> 在 Docker hub 上推送图像
[](https://res.cloudinary.com/practicaldev/image/fetch/s--m1XinPmD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/6rj43q76zja6ggmgh3mr.png)
-
参考上面的图片来创建所提到的构建
-
现在让我们继续配置各个步骤
.Net 构建
[](https://res.cloudinary.com/practicaldev/image/fetch/s--svw8_nZJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/e05a4ixmjq93zbw3ovmz.png)
- 在这里,我们只需将命令设置为 Build 并提供存储库中的解决方案名称
.Net 发布
[](https://res.cloudinary.com/practicaldev/image/fetch/s--QLmNMOyK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/77qnk7ll1w0elmml0a8s.png)
- 接下来我们需要指定发布文件的文件夹。这需要与 docker 文件中的 COPY 命令源相同。
Docker 构建
- 这里 rajatsrivas/testdeploy 是 Docker 集线器上的存储库名称,我的图像将在其中发布
[](https://res.cloudinary.com/practicaldev/image/fetch/s--nVUSyDnV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/zkf2ww483mq7n8fvb3f3.png)
- 我正在使用 build.counter 标志来自动对生成的 docker 映像进行版本控制,以便使用触发的实际构建来跟踪它
码头工人推送
[](https://res.cloudinary.com/practicaldev/image/fetch/s--c00f4oWr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/c2i7lmct3jr0w4c6ffxw.png)
- 现在,构建配置中唯一要做的就是将创建的映像推送到我们的 Docker Hub 存储库
手动触发/运行构建
-
点击右上角的运行触发构建。
-
一旦构建成功,镜像应该发布到指定的 docker 仓库中😄🍻
[](https://res.cloudinary.com/practicaldev/image/fetch/s--N4Ic007O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/xqhad02firsw0kzukv9p.png)
使用 Docker Hub 映像运行应用程序
最后,让我们尝试使用 docker 存储库中的映像运行应用程序
-
使用命令从 docker hub 拉取镜像。 搬运工拉 rajatsrivas/testdeploy:
-
使用以下命令运行容器 Docker run -p 80:80 --name rajatsrivas/testdeploy:
结论
就是这样,我们已经成功地使用 Github、TeamCity 和 Docker Hub 为 Asp.Net 核心项目实现了我们的第一个构建管道。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--44wBjrPz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/p2c8wpzv9wwzp5vays06.png)
希望您发现这些步骤很有用,并且您可以使用它来构建您自己的更复杂的构建管道。不断学习,不断建设......
更多推荐
所有评论(0)