跳到主要内容

gitlab-ci

gitlab-runner

gitlab-runner+docker的自动部署一般分为四步:

1、安装gitlab-runner,gitlab-runner是可以共享的,可以很多个项目用一个
2、根据源码打包,这里可以时java代码,也可以时node框架下的前端代码,也可以时其他代码
3、制作镜像,根据dockerfile文件或者其他制作镜像,并推送到本地或者远程镜像仓库
4、根据镜像,启动实例

安装gitlab-runner

基于docker安装gtilab-runner; 默认前提时你已经下载到了gitlab-runner:latest镜像

#启动gitlab-runner
docker run -d --name gitlab-runner --restart always \
-v /rkhome/soft/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab-runner:latest

#注册gitlab-runner
docker exec -it gitlab-runner gitlab-runner register -n \
--url http://82.157.54.***/ \
--registration-token zXvWcu3Exe_4*** \
--description "bsmis-runner" \
--docker-privileged=true \
--docker-pull-policy="if-not-present" \
--docker-image "jdk:1.8" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \
--docker-volumes /root/m2:/root/.m2 \
--executor docker

其中gitlab-runner配置可以分别从权限(root用户)、分组、项目下的设置-->runner下查看,如图:

noload

创建gitlab-ci配置文件

.gitlab-ci.yml

image: docker:latest  #1
variables: #2
PROJECT_NAME1: bsmis-gateway
PROJECT_VERSION: V1.0
cache: #3
paths:
- .m2/repository
services: #4
- docker:dind
stages: #5
- package
- deploy
maven-package: #6
image: maven:3.5-jdk-8-alpine
tags:
- bsmis-eai # 使用的gitlab-runner需要有这个标签
stage: package
script:
- mvn clean package -Dmaven.test.skip=true -Puad
artifacts:
paths:
- $PROJECT_NAME1/target/*.jar

deploy-master: #7
tags:
- bsmis-eai # 使用的gitlab-runner需要有这个标签
stage: deploy
script:
- docker build -t $PROJECT_NAME1:$PROJECT_VERSION -f ./$PROJECT_NAME1/DockerFile . # 根据Dockerfile文件构建镜像
- docker rm -f $PROJECT_NAME1 # 停止并删除测试容器
- docker run -d -p 10001:10001 --name $PROJECT_NAME1 $PROJECT_NAME1:$PROJECT_VERSION # 运行容器,$TAG是开头设置的变量,表示的是镜像
- docker system prune -f #删除空镜像
only:
- master

说明:
#1:image 使用的docker镜像,也可用:image:name和image:entrypoint
#2:variables 在作业级别上定义作业变量。
#3:cache.path 缓存的路径
#4:services 使用docker服务映像。也可用:services:name,services:alias,services:entrypoint,和services:command
#5:stages 定义pipeline的执行顺序,阶段内所有任务并行执行,全部执行成功开始下一阶段任务,任何失败都会导致停止
#6:‘maven-package’ 打包作业,这个名字是自定义的

tags:限制使用的gitlab-runner; stage:在那个阶段执行,必须和前面的stages某一个对应; script:执行的脚本; only:用于设置作业策略以限制创建作业的时间 artifacts.path:传递路径,下一步骤中可以找到,如果不加,会找不到

#7:‘deploy-master’ 部署作业
注:更多参数说明请自行百度

创建DockerFile

dockerfile

#使用的镜像
FROM jdk:1.8
#将容器中的 /tmp 目录映射到宿主机的目录
VOLUME /tmp
# 维护人
MAINTAINER Razil "zhujunjie"
#复制文件
COPY target/*.jar demo.jar
#赋权限
EXPOSE 7777
#入口 启动运行的命令
ENTRYPOINT ["java","-jar","demo.jar"]

安装前端环境

  git clone https://gitee.com/zhujunjieit/nvm.git /opt/nvm

cd /opt/nvm

echo "source /opt/nvm/nvm.sh" >> ~/.bashrc

source ~/.bashrc

nvm install v14.21.3