GitLab PipeLine配置

163 阅读3分钟
  1. 安装runner环境,启动runner
  2. 注册一个runner
  3. 配置YML文件

GitLab

GitLab的CICD是一个强大的持续集成和持续部署的工具,结合Sonar,可以做到代码merge自动检测复杂度和异常指标,可以做到异常代码不允许merge。

结合Sentry,可以做到将版本和源码映射发布到sentry,以便于sentry报警可以方便定位到源码位置和有问题的发布版本。

Pipeline

流水线,将集成部署分为了一个个小任务,组成了一条流水线,我们可以使用YML文件自定义流水线的每个环节。

runner

每个子任务都需要一个运行环境,多个子任务可以共享一个运行环境,这个环境就是runner。 要将流水线跑起来,我们需要安装runner,注册runner,并将子任务放在runner上去运行。

新建runner

image.png 位于项目设置-CICD-Runner

新建runner

GitLab中的runner分为两种主要类型:组runner和项目runner。它们的主要区别在于适用范围和管理方式。

项目runner(Project runner):

仅适用于特定的单个项目 由项目维护者管理 更加灵活,可以针对特定项目需求进行定制 适合有特殊CI/CD需求的项目

组runner(Group runner):

可以被整个组内的所有项目共享使用 由组管理员管理 提供更好的资源利用率,适合多个相似项目 便于统一管理和维护

主要区别:

适用范围:

项目runner只能被单个项目使用

组runner可以被整个组内的多个项目共享使用

管理权限:

项目runner由项目维护者管理

组runner由组管理员管理

资源利用:

组runner可以更有效地利用资源,避免重复配置

项目runner可能导致资源浪费,特别是当多个项目需要相似配置时

配置灵活性:

项目runner允许更精细的项目特定配置

组runner提供了更统一的配置,适合标准化的CI/CD流程

安全性:

项目runner可以更好地隔离敏感项目

组runner在共享环境中运行,可能需要额外的安全考虑

选择建议:

如果有多个项目使用相似的CI/CD配置,使用组runner可能更有效率 对于有特殊需求或敏感的项目,可以考虑使用项目runner 大型组织可能会同时使用两种类型的runner,以平衡效率和灵活性

image.png

image.png

在标签中使用CICD变量

  • 勾选上-运行未打标签的任务。

image.png

注册runner见注册runner

根据runner的运行平台,先安装一个runner,以Linux为例: 使用极狐GitLab Runner 10,可执行文件重命名为 gitlab-runner

  1. 为您的系统下载二进制文件:

    # Linux x86-64
    sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.gitlab.cn/latest/binaries/gitlab-runner-linux-amd64"
    
    # Linux x86
    sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.gitlab.cn/latest/binaries/gitlab-runner-linux-386"
    
    # Linux arm
    sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.gitlab.cn/latest/binaries/gitlab-runner-linux-arm"
    
    # Linux arm64
    sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.gitlab.cn/latest/binaries/gitlab-runner-linux-arm64"
    
    # Linux s390x
    sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.gitlab.cn/latest/binaries/gitlab-runner-linux-s390x"
    
    # Linux ppc64le
    sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.gitlab.cn/latest/binaries/gitlab-runner-linux-ppc64le"
       
    # Linux x86-64 FIPS Compliant
    sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.gitlab.cn/latest/binaries/gitlab-runner-linux-amd64-fips"
    

    您可以为每个前沿-下载其他标签发布中描述的可用版本下载二进制文件。

  2. 授权执行:

    sudo chmod +x /usr/local/bin/gitlab-runner
    
  3. 创建极狐GitLab CI 用户:

    sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
    
  4. 安装并作为服务运行:

    sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
    sudo gitlab-runner start
    

    确保您在 $PATH 中拥有 /usr/local/bin/ 进行 root 操作,否则可能会出现 command not found 错误。 或者,您可以在其他位置安装 gitlab-runner,比如 /usr/bin/

  5. 注册 Runner

image.png

单个命令:

sudo gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --token "$RUNNER_TOKEN" \
  --executor "docker" \
  --docker-image alpine:latest \
  --description "docker-runner"

配置YML文件(示例,具体可以看官方文档)

sonarqube-check:
  image: 
    name: sonarsource/sonar-scanner-cli:latest
    entrypoint: [""]
  variables:
    SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"  # 缓存SonarQube插件
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .sonar/cache
  script: 
    - sonar-scanner
      -Dsonar.projectKey=projectKey
      -Dsonar.sources=.
      -Dsonar.host.url=url
      -Dsonar.login=${SONAR_TOKEN}
      -Dsonar.scanner.timeoutSeconds=300
  allow_failure: true
  
  only:
    - merge_requests
    - sunshu_cicd_build