在GitLab上使用CI/CD 实现程序自动化部署
前言:
在产品大前期的开发过程中,由于种种原因,导致程序一天中可能发布好些次,这无疑极大的浪费了咱们开发的宝贵时间。因此,出此篇文章,就是为了减少咱们开发把时间浪费非必要的地方,腾出更多的时间来处理更重要的技术难题
正文:
准备工作:
首先,咱们先在GitLab上准备新建一个 演示的项目,操作步骤如下:
接下来,咱们就进入项目,然后进行设置
点击之后,进入到如下界面,然后咱们可以看到2、3步骤的URL以及令牌,这个就是咱们等下要使用的
然后,咱们通过Xshell连接到服务器 192.168.217.129(这个是我前几期的文章中,装的虚拟机服务器),通过输入如下命令来配置,如果遇到gitlab-runner在服务器上找不到,请先移步到我的《在CentOS上安装GitLab-CI以及运行Runner的方法步骤》查看安装步骤:
docker exec -it gitlab-runner gitlab-runner register
按照如下步骤进行1,2,3,4 其中到3,4步骤时,可以不输入任何内容,直接回车即可。
以上步骤做完之后,咱们再回到上一个页面进行刷新看看效果,这时,runner下面已经存在一个可用的了,剩下的工作就是配置,咱们继续往下走。
接下来,咱们转换到项目中,在项目中,创建Dockerfile文件
在弹出的文件选项中,目标选择Linux。
然后咱们就开始配置Dockerfile文件的内容,最终效果如下:
上面涉及到的nuget.config 配置文件内容如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="Nuget" value="https://api.nuget.org/v3/index.json" /> </packageSources> </configuration>
以上是配置项目用到的nuget包的地址,使用自动生成时,会去寻找nuget引用的包。如果项目中,有使用到自己公司的nuget包,则继续在nuget.config 文件中增加公司的nuget地址节点即可。
然后自动化发布,还需要使用到docker-compose.yml配置文件,贴上配置信息
version: "3.6" services: webapi-service: build: . container_name: microservice_webapi-service #指定启动的容器名称 ports: - "8031:8031" #端口映射 environment: - ASPNETCORE_URLS=http://*:8031 - workid=1 - eureka:instance:ipAddress=192.168.1.110 #服务器的地址 - eureka:instance:port=8031 extra_hosts: - "eureka1:192.168.1.111" - "eureka2:192.168.1.111" - "eureka3:192.168.1.111" - "service-apollo-meta-server-prod.sre:192.168.1.111" volumes: - /usr/MicroService/log/webapi-service:/app/Log4net
最后一步,添加.gitlab-ci.yml
贴上.gitlab-ci.yml 源代码:
.template: &onlyMaster # 创建一个锚,指定只有提交到master分支才执行ci only: - master # 设置两个阶段,build和deploy stages: - build - deploy build_image: stage: build #指定哪个阶段 <<: *onlyMaster #使用锚 script: #执行脚本 - docker-compose build deploy: stage: deploy <<: *onlyMaster script: - docker-compose up -d
添加完成,提示如下,表示咱们的配置是有效的
最后切换到项目,查看流水线。
出现如下效果,就表示咱们已经大功告成了。再也不同为了每次发包浪费太多的时间了
以后咱们就直接在自己的电脑上,拉取代码git pull ,提交代码 git push 即可。
结束:
在工作中,学会不断总结,才能让我们的工作更加轻松,加油