Docker容器内存超限,如何正确配置Bitbucket Pipeline的step size为2x?
解决Bitbucket Pipeline内存超限及配置错误问题
你遇到的“step is null or missing”错误,是因为直接用step: size: 2x替换了原有的锚点引用,导致丢失了步骤的核心配置(如script、name等)。以下是两种正确的配置方案:
方案一:全局修改步骤定义(所有引用该步骤的分支都用2x规格)
直接在定义的build-step中添加size: 2x字段,这样所有引用该锚点的步骤都会自动使用2x容器规格:
image: maven:3.3.9 definitions: steps: - step: &build-step name: SonarQube analysis size: 2x # 新增该行,提升容器规格 script: - pipe: sonarsource/sonarcloud-scan:1.4.0 variables: SONAR_HOST_URL: ${SONAR_HOST_URL} SONAR_SCANNER_OPTS: -Xmx2048m # 可选:根据2x内存调整分配,建议设为2048m SONAR_TOKEN: ${SONAR_TOKEN} caches: sonar: ~/.sonar clone: depth: full pipelines: branches: '{master}': - step: *build-step
方案二:仅针对master分支单独配置2x规格
如果不想修改全局步骤定义,可通过YAML合并语法,在master分支的步骤中新增size: 2x:
image: maven:3.3.9 definitions: steps: - step: &build-step name: SonarQube analysis script: - pipe: sonarsource/sonarcloud-scan:1.4.0 variables: SONAR_HOST_URL: ${SONAR_HOST_URL} SONAR_SCANNER_OPTS: -Xmx2048m SONAR_TOKEN: ${SONAR_TOKEN} caches: sonar: ~/.sonar clone: depth: full pipelines: branches: '{master}': - step: <<: *build-step # 合并锚点中的原有配置 size: 2x # 仅对master分支的该步骤启用2x规格
额外优化建议
2x容器通常提供4GB内存,建议将SONAR_SCANNER_OPTS的-Xmx值调整为2048m,让SonarQube扫描器充分利用新增内存,进一步避免内存超限问题。
内容的提问来源于stack exchange,提问作者Sayantan Roy
相关产品推荐
相关产品推荐

