gitlab CICD

服务器私有化部署gitlab社区版

社区版包4g,需要服务器上有足够的空间,部署私有化gitlab,配置端口,运行gitlab

安装gitRunner

Runner是CI/CD的执行者,运行你写的cicd文件,选择shell脚本,然后写yam文件,runner就会运行

  • 注册Runner,将runner与gitlab建立连接
  • runner有3种类型,共享(shared)Runner,组(group)Runner,项目(project)Runner
  • 代码提交或者合并的时候触发流水线,gitlab ci就会放进队列,找合适的runner来执行ci
  • 运行并反馈给gitlab

构建ci文件

skip ci 提交信息这样写,可以跳过执行流水线

配置流水线

  1. build
  2. test
  3. deploy
  4. 构建可以写一套,使用only来判断,只有某些分支才触发
  5. 认证服务器可以写成通用的(优化手段)
yml 复制代码
# 工作流规则:只有push操作触发
workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "push"'

# 定义阶段
stages:
  - build        # 构建阶段
  - deploy_test  # 测试环境部署
  - deploy_prod  # 生产环境部署

# 使用Node镜像
image: node:18

# 缓存node_modules加速构建
cache:
  paths:
    - node_modules/

# ==================== SSH密钥配置基座 ====================
.ssh_config:
  before_script:
    # 安装openssh-client(如果镜像没有)
    - apt-get update && apt-get install -y openssh-client
    # 创建SSH目录
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    # 写入私钥(从GitLab变量读取)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa
    # 添加服务器到known_hosts
    - ssh-keyscan -H $SSH_HOST >> ~/.ssh/known_hosts

# ==================== 构建作业 ====================
build_job:
  stage: build
  only:
    - test
    - master
  script:
    - echo "📦 开始安装依赖..."
    - npm ci
    
    - echo "🔨 开始构建项目..."
    - npm run build
    
    - echo "✅ 构建完成"
  artifacts:
    paths:
      - dist/
    expire_in: 1 hour

# ==================== 测试环境部署 ====================
deploy_test:
  extends: .ssh_config
  stage: deploy_test
  only:
    - test
  needs: ["build_job"]
  variables:
    SSH_HOST: $TEST_SSH_HOST
    SSH_USER: $TEST_SSH_USER
    DEPLOY_PATH: $TEST_DEPLOY_PATH
  script:
    - echo "🚀 开始部署到测试环境 ($SSH_HOST)..."
    
    # 清理目标目录
    - ssh $SSH_USER@$SSH_HOST "rm -rf $DEPLOY_PATH/*"
    
    # 复制dist文件到服务器
    - scp -r dist/* $SSH_USER@$SSH_HOST:$DEPLOY_PATH/
    
    - echo "✅ 测试环境部署完成!"

# ==================== 生产环境部署 ====================
deploy_prod:
  extends: .ssh_config
  stage: deploy_prod
  only:
    - master
  needs: ["build_job"]
  variables:
    SSH_HOST: $PROD_SSH_HOST
    SSH_USER: $PROD_SSH_USER
    DEPLOY_PATH: $PROD_DEPLOY_PATH
  script:
    - echo "🚀 开始部署到生产环境 ($SSH_HOST)..."
    
    # 备份当前版本
    - ssh $SSH_USER@$SSH_HOST "cp -r $DEPLOY_PATH ${DEPLOY_PATH}_backup_$(date +%Y%m%d_%H%M%S) || true"
    
    # 部署新版本
    - ssh $SSH_USER@$SSH_HOST "rm -rf $DEPLOY_PATH/*"
    - scp -r dist/* $SSH_USER@$SSH_HOST:$DEPLOY_PATH/
    
    # 如果是前端项目,可能需要reload nginx
    - ssh $SSH_USER@$SSH_HOST "sudo nginx -s reload || true"
    
    - echo "✅ 生产环境部署完成!"
相关推荐
Lorin 洛林15 小时前
一文读懂 Agent Skills
前端·网络
newbe3652416 小时前
我们如何使用 impeccable 优化前端界面设计与实现稳定性
前端·人工智能·分布式·github·aigc·wpf
KaMeidebaby1 天前
卡梅德生物技术快报|蛋白 N 端测序在重组贻贝融合蛋白表征中的应用,解决原核表达序列偏移工艺难题
前端·人工智能·物联网·算法·百度
kyriewen1 天前
我筛了 1400 个 Claude Code Skills,留下 5 个天天在用的
前端·ai编程·claude
JNX_SEMI1 天前
AT2401C 2.4GHz 全集成射频前端单芯片技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
anOnion1 天前
Agentic 前端开发之 实时显示 AI Agent 终端输出
前端·javascript·人工智能
随风一样自由1 天前
【前端领域】2026最新前端领域全梳理(框架/工具/AI/跨端/底层标准/就业趋势)
前端·人工智能·前端框架
这是个栗子1 天前
【前端性能优化】优化数据加载:用 Promise.all 从串行到并行
前端·javascript·性能优化·异步编程·前端优化·promise.all
fei_sun1 天前
黑洞路由(Null Route/空接口路由)
服务器·前端·javascript
大爱一家盟1 天前
告别卡点BGM同质化 2026原创卡点音乐素材下载网站 TOP5 推荐
大数据·前端·人工智能