linux

如何利用GitLab进行持续集成

小樊
50
2025-11-22 22:16:47
栏目: 编程语言

使用 GitLab 实现持续集成

一 核心概念与工作机制

二 快速上手步骤

  1. 在仓库根目录创建 .gitlab-ci.yml,定义 stagesjobsscript
  2. 安装并注册 GitLab Runner(选择合适的 Executor,如 shell、docker)。
  3. 将代码推送到 GitLab,自动触发 Pipeline 并在 UI 查看 作业日志 与结果。
  4. 根据需要在项目 Settings → CI/CD → Variables 配置变量(如密钥、镜像仓库凭据),并在作业中使用。

三 示例 .gitlab-ci.yml

# 示例:Node.js + 缓存 + 产物 + 部署到测试环境
stages:
  - build
  - test
  - deploy

variables:
  NODE_VERSION: "18"
  PRODUCTION: "false"

build_job:
  stage: build
  image: node:$NODE_VERSION
  script:
    - npm ci
    - npm run build --if-present
  artifacts:
    paths:
      - dist/
    expire_in: 1 week
  cache:
    paths:
      - node_modules/

test_job:
  stage: test
  image: node:$NODE_VERSION
  script:
    - npm test -- --ci
  dependencies:
    - build_job

deploy_staging:
  stage: deploy
  image: alpine:latest
  before_script:
    - apk add --no-cache openssh-client rsync
    - mkdir -p ~/.ssh && chmod 700 ~/.ssh
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa
    - ssh-keyscan -H $STAGING_HOST >> ~/.ssh/known_hosts
  script:
    - rsync -avz --delete -e ssh dist/ $STAGING_USER@$STAGING_HOST:/var/www/myapp/
  environment:
    name: staging
    url: https://staging.example.com
  rules:
    - if: $CI_COMMIT_BRANCH == "main" && $PRODUCTION == "false"

deploy_prod:
  stage: deploy
  image: alpine:latest
  before_script:
    - apk add --no-cache openssh-client rsync
    - mkdir -p ~/.ssh && chmod 700 ~/.ssh
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa
    - ssh-keyscan -H $PROD_HOST >> ~/.ssh/known_hosts
  script:
    - rsync -avz --delete -e ssh dist/ $PROD_USER@$PROD_HOST:/var/www/myapp/
  environment:
    name: production
    url: https://example.com
  when: manual
  only:
    - main

四 运行与优化要点

五 常见问题排查

0
看了该问题的人还看了