GitLab CI/CD使用runner实现自动化部署前端Vue2 后端.Net 7 Zr.Admin项目

1、查看gitlab版本

建议安装的runner版本和gitlab保持一致

2、查找runner

执行

bash 复制代码
yum list gitlab-runner --showduplicates | sort -r

找到符合gitlab版本的runner,我这里选择 14.9.1版本

如果执行出现找不到下载源,添加官方仓库

执行

bash 复制代码
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash

3、安装runner

执行

bash 复制代码
yum install -y  gitlab-runner-14.9.1

查看安装runner的版本

执行

bash 复制代码
gitlab-runner -v

重启runner

执行

bash 复制代码
gitlab-runner restart

4、注册runner

进入项目信息页面

获取注册runner命令和注册所需的token

查看注册命令

真实的token,在进入获取注册命令页面之前的地方

注册runner

执行

bash 复制代码
sudo gitlab-runner register --url http://192.168.100.155:8088/ --registration-token GR1348941XFxw7VY3HN8qiyT-zXiT

上面的命令是从 Show runner installation instructions 页面复制,每个人的都不一样

执行命令后,会提示各个对应信息,直接复制给出的提示信息值即可

在要输入tags时,要记录输入的tags值,这个tags值对应流水线gitlab-ci.yml文件中的tags属性对应值

执行器executor一般为shell

注册完查看runner

执行

bash 复制代码
gitlab-runner list

页面上查看注册好的runner

可以再次编辑runner

点击编辑按钮

编辑页面显示的信息就是之前执行注册命令时填写的信息

5、CI/CD(创建gitlab-cli.yml)

进入CI/CD菜单,点击Editor进入gitlab-cli.yml编辑页面

查看创建的gitlab-ci.yml

执行gitlab-ci.yml文件定义的内容

查看执行过程的详细信息

点击 job的 Status列(passed那里),进入查看执行信息

6、gitlab-cli.yml 解析

bash 复制代码
# This file is a template, and might need editing before it works on your project.
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml

# This is a sample GitLab CI/CD configuration file that should run without any modifications.
# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts,
# it uses echo commands to simulate the pipeline execution.
#
# A pipeline is composed of independent jobs that run scripts, grouped into stages.
# Stages run in sequential order, but jobs within stages run in parallel.
#
# For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages

# 定义执行步骤,放在前面的先执行
# 这里的执行顺序为 build->test->deploy
stages:          # List of stages for jobs, and their order of execution
  - build
  - test
  - deploy

#执行步骤详细内容
#stage:build 对应build步骤
build-job:       # This job runs in the build stage, which runs first.
  stage: build #对应执行步骤
  tags: # 指定的执行runner
    - zr-runner-0
  script: #执行脚本
    - echo "Compiling the code..."
    - echo "Compile complete."

#stage:test 对应test步骤
unit-test-job:   # This job runs in the test stage.
  stage: test    # It only starts when the job in the build stage completes successfully.
  tags: 
    - zr-runner-0
  script:
    - echo "Running unit tests... This will take about 60 seconds."
    - sleep 60
    - echo "Code coverage is 90%"

#stage:test 对应test步骤
lint-test-job:   # This job also runs in the test stage.
  stage: test    # It can run at the same time as unit-test-job (in parallel).
  tags: 
    - zr-runner-0
  script:
    - echo "Linting code... This will take about 10 seconds."
    - sleep 10
    - echo "No lint issues found."

#stage:deploy deploy
deploy-job:      # This job runs in the deploy stage.
  stage: deploy  # It only runs when *both* jobs in the test stage complete successfully.
  tags: 
    - zr-runner-0
  script:
    - echo "Deploying application..."
    - echo "Application successfully deployed."

7、自动部署Zr.Admin项目

bash 复制代码
# This file is a template, and might need editing before it works on your project.
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml

# This is a sample GitLab CI/CD configuration file that should run without any modifications.
# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts,
# it uses echo commands to simulate the pipeline execution.
#
# A pipeline is composed of independent jobs that run scripts, grouped into stages.
# Stages run in sequential order, but jobs within stages run in parallel.
#
# For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages

# 定义执行步骤,放在前面的先执行
# 这里的执行顺序为 build->test->deploy
stages:          # List of stages for jobs, and their order of execution
  - build-net7
  - build-vue2
  - deploy

#执行步骤详细内容
#stage:build 对应build步骤
build-job-net7:       # This job runs in the build stage, which runs first.
  stage: build-net7 #对应执行步骤
  tags: # 指定的执行runner
    - zr-runner-0
  script: #执行脚本
    - echo "Compiling the code..."
    #停止容器
    - docker stop $(docker ps -a | grep 'zr-admin' | awk '{print $1}') || true
    #删除容器
    - docker rm $(docker ps -a | grep 'zr-admin' | awk '{print $1}') || true
    #删除镜像
    - docker rmi $(docker images | grep zr-admin | awk '{print $3}') || true
    #构建docker
    -  cd /lsp/code/zradmin/
    - docker build -f Dockerfile -t zr-admin .
    - echo "Compile complete."
  # 设置GIT_STRATEGY为none来避免拉取代码
  variables:
    GIT_STRATEGY: none

build-job-vue2:       # This job runs in the build stage, which runs first.
  stage: build-vue2 #对应执行步骤
  tags: # 指定的执行runner
    - zr-runner-0
  script: #执行脚本
    - echo "Compiling the code..."
    - cd /lsp/code/zradmin/ZR.Vue/
    - npm cache clean --force
    - npm install --unsafe-perm=true --allow-root
    - npm run build:prod
    - echo "Compile complete."
  # 设置GIT_STRATEGY为none来避免拉取代码
  variables:
    GIT_STRATEGY: none
  cache:
    paths:
    - node_modules/
  artifacts:
    paths:
      - dist/


#stage:deploy deploy
deploy-job:      # This job runs in the deploy stage.
  stage: deploy  # It only runs when *both* jobs in the test stage complete successfully.
  tags: 
    - zr-runner-0
  script:
    - echo "Deploying application..."
    - echo "启动后端..."
    - docker run --net=host -p 8888:80 zr-admin
    - echo "启动后端成功"
    - echo "启动前端"
    - systemctl restart nginx
    - echo "启动前端成功"
    - echo "Application successfully deployed."

由于存在调试代码,设置了执行任务不需要更新代码

设置GIT_STRATEGY为none来避免拉取代码

variables:

GIT_STRATEGY: none

如果在执行的过程中出现 权限问题

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

执行

bash 复制代码
#查看是否将docker加入用户组
groups

#如果没有,加入
sudo usermod -aG docker $USER

#给插件赋权
sudo chmod 666 /var/run/docker.sock

然后查看runner的权限

执行

复制代码
#如果执行下面语句报错,就是有权限问题
sudo -u gitlab-runner -H docker info

#然后执行下面这句
sudo usermod -aG docker gitlab-runner

如果runner是解决权限问题之前创建的,建议在赋权之后重新创建runner

执行完上面的命令,还出现权限问题,重启系统再试试!!!

如果还不行,就将runner改成root权限,默认安装完runner,用的是gitlab-runner用户

具体操作参考gitlab-runner执行权限不足

相关推荐
wewowilling3 小时前
认识微服务
java·运维·微服务·springcloud
玖石书3 小时前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
weifont5 小时前
自动化抓取和上架商品:能不动手,就少动手
运维·前端·自动化
拂拉氏5 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
Mikko76 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
光依旧6 小时前
发版就掉请求?Spring Boot优雅停机的四步
运维·spring boot·nginx·高可用·优雅停机·mcp server
yichengerp7 小时前
电子行业常用erp系统有哪些?推荐适合中小电子厂的易呈erp软件,操作简单,易落地
大数据·运维·人工智能·云计算·制造
天国梦7 小时前
国密门禁品牌怎么选?2026年最新3个避坑要点
运维·服务器·数据库·python
信可维8 小时前
自动化操作多平台账号:登录态、双会话与 User Data 的 3 个坑
运维·自动化
龙仔7258 小时前
RustDesk 自建服务器 Key 强校验配置笔记
运维·服务器·笔记