You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让GitLab流水线的扫描组件与构建阶段并行执行?

GitLab流水线优化:让扫描任务与构建任务并行执行

问题场景

现有GitLab流水线包含build和scans两个串行阶段:

  • build阶段包含validate-dev构建任务
  • scans阶段包含密钥扫描、漏洞扫描两个子组件
    当前扫描任务需等待构建任务完成后才启动,希望调整为扫描与构建并行运行以缩短耗时。此前尝试新建任务引入组件时,出现“流水线结果为空”的错误。

解决方案

GitLab流水线中,同一阶段内的所有任务会并行执行,不同阶段则按顺序串行执行。只需将扫描任务的执行阶段修改为与构建任务一致,即可实现并行运行。

修改步骤

  1. 调整两个扫描组件的stage输入参数,将原scans改为build(与构建任务同属一个阶段)
  2. 可移除stages配置中的scans项(若无需保留该阶段)

修改后的完整配置

stages:
  - build  # 扫描与构建任务均归属此阶段,并行执行

workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

include:
  - component: ******/secrets-scan@~latest
    inputs:
      allow_failure: true
      stage: build  # 修改为build阶段
    rules:
      - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  - component: ******n/vulnerabilities-scan@~latest
    inputs:
      allow_failure: true
      stage: build  # 修改为build阶段
      verbose: true
    rules:
      - if: $CI_PIPELINE_SOURCE == "merge_request_event"

validate-dev:
  stage: build
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "dev"'
      when: on_success
    - when: never
  trigger:
    include:
      - local: "ci/sf-deploy.gitlab-ci.yml"
        inputs:
          SF_ENV: "dev"
    strategy: mirror

说明

  • 归属build阶段的所有任务会在流水线启动后立即并行执行,无需等待其他任务完成
  • 保留allow_failure: true可确保扫描任务失败不会中断整个流水线
  • 直接修改现有组件的stage参数,可避免因配置重复或规则冲突导致的“流水线结果为空”错误

内容的提问来源于stack exchange,提问作者Oupat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 04:07:27