现在好多使用gitlab-ci的持续集成的教程,大部分都是发布到linux系统上的,但是目前还是有很大一部分企业使用的都是windows系统使用IIS在部署.NET应用程序。这里写一下如何使用gitlab-ci配合gitlab-runner持续集成到IIS吧。
安装gitlab网上有很多安装gitlab的方法,这里推荐使用docker安装,真的超级超级方便。
这里有一篇文章
docker安装配置gitlab详细过程
https://www.cnblogs.com/zuxing/articles/9329152.html
这里就不细说了。毕竟重点不是说怎么安装gitlab哈哈哈。
windows配置IIS环境
需要在服务器安装Node,yarn,git,dotnet2.2-sdk,dotnet-hosting。所需安装包如下图所示(自己去找下载链接哈哈哈):
第一次需要手动使用git配置用户密码,否则无法拉取gitlab上的代码。
单独使用git clone命令,将代码拉取下来。成功验证完用户权限信息后可删除文件。
这里说一下为什么选gitlab-runner,不使用jenkins。(两种方式我都尝试过)
jenkins很强大很好,不需要自己安装编译环境,直接可以集成各种编译环境。但是需要额外部署一个jenkins服务,和gitlab服务分开,需要gitlab的webhost触发事件。(没有运维团队一个人用的话觉得比较麻烦)
而gitlab-runner在windows环境把编译环境安装完,直接启动一个服务,把gitlab-runner注册到gitlab上即可。
在服务器上安装gitlab-runner
下载地址
https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-amd64.exe
在服务器中创建gitlab-runner目录,将下载好的gitlab-runner.exe放入,打开CMD。执行安装命令,gitlab-runner.exe install
其他操作系统安装方式查看 https://docs.gitlab.com/runner/install/
注册gitlab-runner到私有gitlab,执行命令gitlab-runner.exe register
打开 查看gitlab-runner注册时所需的url以及注册token。
./gitlab-runner.exe register
第一步填入URL
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )第二步填入token
Please enter the gitlab-ci token for this runner xxx第三步填入runner描述
Please enter the gitlab-ci description for this runner [hostname] my-runner第四步填入runner标签
Please enter the gitlab-ci tags for this runner (comma separated): my-tag,another-tag第五步选择runner执行环境
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell: Shell因为是直接部署到IIS,所以没有选择docker容器的方式。
这里是windows服务器所以使用powershell作为默认shell执行环境
启动gitlab-runner
执行命令gitlab-runner.exe start即可启动。
使用gitlab-ci需要在项目跟路径添加.gitlab-ci.yml文件,在文件中添加CI所需要的命令。
详细的命令参数在此页面可查看
每一个最高级的名字分别表示一个任务。
before_script和after_script中的指令是在管道执行前后所运行的指令。
gitlab-ci中默认有三个管道,执行顺序分别是build,test,deploy,同一个stage的任务是并行执行的。
这里我们只需要配置执行的编译发布脚本即可,一步到位哈哈哈,当然也可以分几个步骤,这里我偷懒了哈哈哈
Script下表示需要执行的命令。Only表示限定哪个分支可以触发。
这里配合IIS的话我们直接将编译完的发布文件拷贝到IIS的站点目录下即可。
为了方便,将powershell脚本单独编写到build.ps1文件中,下面针对52ABP前后端分离项目编写如下powershell脚本。
将.gitlab-ci.yml和build.ps1文件放入项目根目录,提交文件。
Gitlab-CI识别到.gitlab.yml文件后会自动执行CI脚本。