总体架构目录:ASP.NET Core分布式项目实战-目录html
在以前的文章中写过k8s+Jenkins+GitLab-自动化部署asp.net core项目 的topic,此次讲解一下gitlab-ci的CI/CD,说实话,自动化部署是在是很是的舒服,并且gitlab-ci很适合中小项目的部署,大项目推荐使用k8s。linux
阅读目录:git
一、gitlab-ci及gitlab-runner说明github
二、部署环境介绍web
三、安装gitlab和gitlab-runnerdocker
四、asp.net core项目配置shell
一、GitLab-CIcentos
即GitLab上的CI功能,持续集成功能
能够实现代码提交后自动测试、编译、发布、部署等自动化工做
持续集成是一种软件开发实践,即团队开发成员常常集成它们的工做,经过每一个成员天天至少集成一次,也就意味着天天可能会发生屡次集成。api
二、GitLab-Runner
GitLab在接收到代码提交事件时,经过.gitlab-ci.yml的配置信息与对应节点上的runner进行交互。
Runner须要在CI上进行注册后方可以使用。
Runner至关于代替人工在安装了Runner的服务器上运行yml文件上的配置。一般由GitLab上的项目更新触发。bash
IP(CentOS7) | 组件 |
192.168.161.140 | gitlab、Docker |
192.168.161.142 | gitlab-runner、Docker、git、dotnet sdk |
0、Docker安装的命令请看我以前写的文章
传送门:Docker系列之CentOS7安装Docker(一)
一、在140这台服务器上在Docker上运行gitalb
此gitlab因为是测试,所以没有进行数据的挂载,在生产环境中须要用到数据的挂载。
命令以下:这边要注意一下 gitlab须要用到22端口,而CentOS服务器ssh链接也是用22端口,所以须要让gitalb使用。具体操做能够看:CentOS服务器安装Telnet来远程链接服务器
docker run --detach --hostname localhost --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always gitlab/gitlab-ce:latest
这样便可运行成功
二、在142服务器上安装git
在gitalb-ci.yml 文件中我有用到git 来进行拉取代码到本地服务器上的。
命令:
yum install -y git
三、在服务器上安装dotnet SDK
gitlab-ci.yml文件中git拉取完代码后须要把代码进行编译、发布出来,所以须要用到dotnet sdk。
在安装.NET以前,您须要注册Microsoft密钥,注册产品存储库并安装所需的依赖项。这只须要每台机器完成一次。打开命令提示符并运行如下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
安装.NET SDK,更新可用于安装的产品,而后安装.NET SDK。在命令提示符中,运行如下命令:
sudo yum update sudo yum install libunwind libicu sudo yum install dotnet-sdk-2.0.0
四、如今能够在服务器上安装gitlab-runner了
安装gitlab-runner的方式不少,有使用gitlab存储库的,以及手动安装,具体的能够参考官方给出的方案,这边我采用手动安装gitlab-runner
下载二进制文件
# Linux x86-64 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
赋予权限:
sudo chmod +x /usr/local/bin/gitlab-runner
建立gitlabCI用户:
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
安装并做为运行服务:
sudo /usr/local/bin/gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo /usr/local/bin/gitlab-runner start
五、如今就开始注册咱们的gitlab-runner啦
注册runner须要配合咱们的gitlab来操做。
第一步:咱们先打开一下咱们的gitlab,切换到咱们的Runners栏目
在这里咱们能够看到一个是 url和token,这两个内容是咱们必须的。
第二步:切换回咱们的服务器上
执行命令 注册:
gitlab-runner register
接下来要填写的信息比较多,具体请看下面的内容。
注:第一个和第二个不要写错了,直接复制便可。
注册完成后便可在gitlab Runners 中能够看到
第三步:点击修改一下 runner
把此栏目的勾选一下,不然在自动化部署时项目没法监测到runner的存在,除非项目上传的时候带上tag标签。
而后咱们选择一下 此runner 挂钩的 项目。咱们选择项目,点击后面的 “Enable”便可。
到目前为止gitlab配置完成,如今配置一下asp.net core项目吧
注:我已经把项目代码上传到github上,可供下载:gitlabci
一、建立一个asp.net core webapi项目
在项目中添加 .gitlab-ci.yml 文件,该文件是用来配置Runner对当前项目进行的操做。
variables: GIT_STRATEGY: none stages: - test test_job: stage: test only: - master script: - cd /home/gitproject - rm -rf /home/gitproject/gitrunner - git clone http://root:12345678@192.168.161.140/Team/gitrunner.git - cd ./gitrunner - dotnet build --configuration Release - rm -rf /home/project/gitrunner - docker stop gitci - docker rm gitci - docker rmi gitciimages - dotnet publish -c Release --output /home/project/gitrunner - cd /home/project/gitrunner - docker build -t gitciimages . - docker run -d -v /home/project/gitrunner:/code -p 5001:80 --name gitci --restart always gitciimages
具体的参数说明能够参考 gitlab官网给出的。gitlab-ci.yml 配置
二、固然在项目里面也须要 Dockerfile文件
Dockerfile,而且把Dockerfile文件设置为 始终复制,否则在发布的过程当中会丢失文件。
FROM microsoft/aspnetcore COPY . /code WORKDIR /code EXPOSE 5001 CMD ["dotnet","gitlabcicd.dll"]
三、如今咱们就可使用 git上传代码啦
上传后咱们就能够在 gitlab Commits里面查看啦
进入执行查看
四、自此便可在咱们的142服务器上的docker 查看到咱们所运行的容器啦。
上面的runner安装以前讲解了一种,其实还有不少种,具体能够看一下官方给出的案例。
到目前为止发现自动化部署是在是太方便了。有gitlab- CI/CD、以及k8s CI/CD,固然还有gitlab结合jenkins CI/CD,有兴趣的同窗能够看看我以前的文章。欢迎给我留言
注:我已经把项目代码上传到github上,可供下载:gitlabci
官方文档:https://docs.gitlab.com/runner/install/linux-repository.html
注册runner:https://docs.gitlab.com/runner/register/index.html
gitlab-ci.yml 配置:https://docs.gitlab.com/ee/ci/yaml/README.html#only-and-except-simplified
DotnetSDK:https://www.microsoft.com/net/download/linux-package-manager/centos/sdk-2.0.0
asp.net Core 交流群:787464275 欢迎加群交流
若是您认为这篇文章还不错或者有所收获,您能够点击右下角的【推荐】按钮精神支持,由于这种支持是我继续写做,分享的最大动力!
微信公众号:欢迎关注 QQ技术交流群: 欢迎加群