在现代软件开发中,持续集成(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。