写在前面
参照文章: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"]
---------------
顺便写一下前端项目自动部署
-
gitlab新建仓库(或已有仓库),找到仓库的token,将其注册到gitlab-ci-multi-runner register 下去
得到 类型是shell ,名称叫做tnfrontv2 的tages
-
在项目的本地新建.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仓库文件也是在这个根目录下。
上面只是最简单的自动化部署,需要在本地生成部署包。其实,打包这步操作也是可以在服务器上完成的。但是这里为了简便,本地直接打包上传。