Docker与TeamCity实现ASP.NET Core应用的持续集成

在现代软件开发中,持续集成(Continuous Integration, CI)是一种非常重要的实践,它允许开发人员频繁地将代码变更集成到主分支中。这有助于及早发现和解决问题,从而提高软件质量和开发效率。本文将介绍如何使用Docker和TeamCity实现ASP.NET Core应用的持续集成和部署。

问题

如何使用Docker和TeamCity为ASP.NET Core应用实现持续集成

解决方案

首先,需要设置TeamCity。由于喜欢使用Docker,将在Docker中设置TeamCity。使用以下docker-compose.yml文件,只需在该文件所在路径下运行docker-compose up

version: '3.1' services: teamcity: image: jetbrains/teamcity-server:2017.1.4 volumes: - teamcity-server-datadir:/data/teamcity_server/datadir - teamcity-server-logs:/opt/teamcity/logs ports: - 8111:8111 teamcity-agent: image: jetbrains/teamcity-agent:2017.1.4 volumes: - /var/run/docker.sock:/var/run/docker.sock environment: SERVER_URL: http://teamcity:8111 volumes: teamcity-server-datadir: teamcity-server-logs:

这将拉取镜像并在本地主机的8111端口启动TeamCity。按照简单的步骤配置TeamCity。

TeamCity运行后,配置一个Agent。点击顶部菜单的“Agents”链接,转到Unauthorized,点击列表中的Agent,然后点击Authorize Agent按钮:

通过点击顶部菜单的“Projects”链接创建一个新项目。选择“From a repository URL”并粘贴仓库链接:

为构建配置输入名称,保留了默认值。接下来,将被要求配置构建步骤,点击“configure build steps manually”链接:

接下来,选择“Command Line”作为Runner类型,并添加使用Docker构建镜像的自定义脚本:

注意:这假设Dockerfile位于解决方案文件夹的根目录。请参阅GitHub上的源代码作为参考。

保存并点击右上角的Run按钮以测试构建步骤:

一旦构建完成,可以查看日志:

运行docker images命令以查看TeamCity创建的镜像:

基于此镜像运行一个容器:

docker run --rm -it -p 8080:80 naushadt25/fiver:ci-1

浏览到http://localhost:8080/api/movies以测试应用程序。

现在,对应用程序进行更改并提交。TeamCity将启动一个新的构建:

一旦构建完成,将拥有另一个镜像:

现在,可以测试、运行和部署应用程序的多个版本。以下是在两个不同端口上运行的两个版本:

在尝试这个过程中,不小心破坏了应用程序的测试,TeamCity没有构建(因此,没有创建镜像):

通过很少的努力,能够打包应用程序的多个版本,这要归功于Docker

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485