CICD

写在前面

参照文章:https://blog.csdn.net/liuge36/article/details/83055512
之前写了比较完整的相关,但是发现,工作中只是需要用到以下简单的点就可以了
总结简单的自动化部署的项目的方法:

前置:

gitlab:做代码托管 服务器A 公司服务器
gitlab-ci (Runner): 服务器B 安装Docker 医院服务器

01 为项目注册一个runner ,这个runner去git仓库拉取代码最新下来,做自动部署

开始执行注册命令:gitlab-ci-multi-runner register
输入gitlab服务器的地址: http://22.18.12.161:10088/
输入token:某一个具体项目中》details>settings》ci/cd>runners:找到token码   xxx

输入runner的描述:默认或自定义
输入tags: 比如:test,demo  我输入的是:tnv2
回车
回车
这个时候,就是会看见succeeded
接下来,需要进行选择runner执行操作的方式
比如:shell

02 当注册好的runnner,被触发了,它该具体做些什么事情呢?

在HelloWorld》CI/CD》pipelines

通过.gitlab-ci.yml的文件去定义CI的pipelines

要想实现后端自动化部署,主要是通过本地代码提交到master分支,
master分支变化去触发CI/CD的自动化作业的执行。

这个自动化的作业其实就是 手写的 .gitlab-ci.yml 文件的内容

stages:
  - deploy
docker-deploy:
  stage: deploy
  script: 
    - docker build -t tongnanimagesv2 .
    - if [ $(docker ps -aq --filter name=tnbackwebv2) ]; then docker stop tnbackwebv2;fi
    - if [ $(docker ps -aq --filter name=tnbackwebv2) ]; then docker rm tnbackwebv2;fi
    - docker run -d -p 8900:8900 --name tnbackwebv2 tongnanimagesv2
  tags:
    - tnv2 # tnv2是shell类型的runner

上面的job作业解释:

# 这句话是使用当前目录. 下的DockerFile进行image镜像的构建
docker build -t tongnanimagesv2 . 

# 下面的两句是做 检测 指定的容器是否在运行状态,有的话,先停止,再删除
 - if [ $(docker ps -aq --filter name=tnbackwebv2) ]; then docker stop tnbackwebv2;fi
 - if [ $(docker ps -aq --filter name=tnbackwebv2) ]; then docker rm tnbackwebv2;fi
 
// 基于上面的语句,似乎可以在构建tongnanimagesv2镜像之前,先删除,删除的条件就是之前如果存在,就删除;
这里不确定每次构建是否会覆盖,如果不是覆盖,那么每次都创建,就会很多的镜像(待验证)
# 这里话是运行创建的镜像为一个容器
 - docker run -d -p 8900:8900 --name tnbackwebv2 tongnanimagesv2
# tags=tnv2 这个是我们在为项目注册runner的时候,自定义的名称(能够到你的机器上执行shell)
  tags:
    - tnv2 # tnv2是shell类型的runner

# DockerFile
---------------
from frolvlad/alpine-oraclejdk8:slim 
VOLUME /tmp 
ADD target/test-0.0.1.jar app.jar 
ENTRYPOINT ["java","-jar","/app.jar"]
---------------

顺便写一下前端项目自动部署

  1. gitlab新建仓库(或已有仓库),找到仓库的token,将其注册到gitlab-ci-multi-runner register 下去

    得到 类型是shell ,名称叫做tnfrontv2 的tages

  2. 在项目的本地新建.gitlab-ci.yml 文件

stages:
  - deploy
docker-deploy:
  stage: deploy
  script:
    - rm -rf /home/gitlab-runner/tnn/tn
    - cp -r ./dist /home/gitlab-runner/tnn/
    - mv /home/gitlab-runner/tnn/dist /home/gitlab-runner/tnn/tn
  tags:
    - tnfrontv2 # demo4是shell类型的runner

这个文件的位置在项目的根目录下,注意.git仓库文件也是在这个根目录下。

上面只是最简单的自动化部署,需要在本地生成部署包。其实,打包这步操作也是可以在服务器上完成的。但是这里为了简便,本地直接打包上传。

posted @ 2019-03-21 10:47  liuge36  阅读(197)  评论(0编辑  收藏  举报