1.gitlab使用docker构建流水线
- eg:项目名称:vitepro
image: node:alpine
stages:
- install
- lint-code
- build
- deploy
##cache作用:各个job之间会进行缓存的存储以及回滚
##配置缓存路径
cache:
key: vitepro
# 代表缓存的包名,前端的依赖包都是node_modules,具体看你项目生成的包
paths:
- node_modules
job_install:
stage: install
tags:
- vite
script:
- npm install
job_build:
stage: build
tags:
- vite
script:
- npm run build
artifacts:
paths:
- dist/ # 存储起来生成制品,每个任务都可使用
job_deploy:
stage: deploy
image: docker
tags:
- vite
script:
- docker build -t myteimages .
- if [ $(docker ps -aq --filter name=myvite-container) ];then docker rm -f myvite-container;fi
- docker run -d -p --name myvite-container myteimages
- image: docker原因如下:
流水线docker build是在服务器的docker里面跑的,而服务器docker没有docker环境
- Dockerfile文件
FROM node: latestlas builder
WORKDIR /app
COPY package.json .
RUN npm install --registry=http://registry. npm. taobao.org
COPY . .
RUN npm run build
FROM nginx: latest
COPY --f rom=builder /app/dist /us r/share/nginx/html
- 在docker里面进行docker build报错,则需要到gitlab-runner中配置目录卷,称之为docker in docker的配置
解决办法:进入到gitlab-runner安装环境中
在该文件中,找到对应的runner,此处为key=3NnvWWZV的runner
将/usr/bin/docker:/usr/bin/docker,/var/run/docker.sock:/var/run/docker.sock增加至volumes
2.单独注册一个新的runner
单独注册runner
- URL,是runner是的url
- token,是runner的token
- tag-list,是runner的tag
- 到安装runner的服务器上运行
- 用下面的方法可以注册一个runner
docker run --rm -V /srv/gitlab-runner/config:/etc/gitLab-runner gitLab/gitlab-runner register \
-non- interactive \
--executor "docker" \
--docker- image alpine: latest \
--url "http://git Lab. m a)yun.top/" \
--registration-token "xNZW4ids6x45sk3A7v3b" \
--description "for-vite" \
--tag-list "vite" \
--run-untagged="true" \
--locked="false" \
--access-level="not_ protected"
-
结果可以看到一个绿色runner,可以使用
-
参考:GitLab CI/CD系列教程(五):使用docker镜像部署前端项目,Gitlab CI/CD教程以及实战docker自动部署前端项目(全)