在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 即可。

结束:

  在工作中,学会不断总结,才能让我们的工作更加轻松,加油

posted @ 2020-07-09 16:14  yuyoho  阅读(8607)  评论(1编辑  收藏  举报