zoukankan      html  css  js  c++  java
  • 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仓库文件也是在这个根目录下。

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

  • 相关阅读:
    js 字符中 带 函数 再传对象参数
    window server 2012 II8 假陌生 碰到的问题
    IIS 下载文件 报错“401
    easyui使用时出现这个Uncaught TypeError: Cannot read property 'combo' of undefined
    eclipse+gnuarm+使用报错
    mini2440:通过JLink烧写BootLoader到Nor Flash
    在Linux中搭建一个FTP服务器
    SPFA模板
    Bellman_ford模板
    前向星&链式前向星
  • 原文地址:https://www.cnblogs.com/liuge36/p/12614749.html
Copyright © 2011-2022 走看看