CI linter does not check for semantic errors

Summary

The CI Linter checks for syntax errors, but not for semantic errors like: "needs" keyword references to many jobs

Steps to reproduce

  1. Create a yml file that has more then build 10 jobs and add one aggregation job
  2. Copy yml file into linter

I'm using GitLab-EE version 12.9.2.

Example Project

I added an example file, that:

  • is ok in CI linter
  • fails in pipeline

See yml file below.

What is the current bug behavior?

The CI linter doesn't report semantic problems.

What is the expected correct behavior?

Semantic limits like number of max. dependencies should also be reported by CI linter. Especially when child pipelines do not report incorrect yml files yet. See #213306 (closed)

Relevant logs and/or screenshots

stages:
  - Prepare
  - Out-Of-Context
  - Synthesis
  - Aggregation
  - Link
  - Optimize
  - Place
  - Route
  - Bitfile

.Vivado:
  tags:
    - Vivado-2018.3

.Vivado-ooc:
  extends: .Vivado

  stage: Out-Of-Context
  tags:
    - Medium
  variables:
    GIT_SUBMODULE_STRATEGY: recursive

  artifacts:
    expire_in: 1 day

.Vivado-synth:
  extends: .Vivado

  stage: Synthesis
  tags:
    - Large
  variables:
    GIT_SUBMODULE_STRATEGY: recursive

  artifacts:
    expire_in: 1 day

ToggleTest-prepare:
  extends: .Vivado

  stage: Prepare
  script:
    - ./tools/GitLab-CI/Vivado.run.sh -d --all --prepare
    - cp temp/Vivado/ToggleTest/out-of-context.yml .

  artifacts:
    paths:
      - out-of-context.yml


PS_ClockConverter_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_ClockConverter_0" > PS_ClockConverter_0.txt
  artifacts:
    paths:
      - PS_ClockConverter_0.txt

PS_DataFIFO_0_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_DataFIFO_0_0" > PS_DataFIFO_0_0.txt
  artifacts:
    paths:
      - PS_DataFIFO_0_0.txt

PS_DataFIFO_1_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_DataFIFO_1_0" > PS_DataFIFO_1_0.txt
  artifacts:
    paths:
      - PS_DataFIFO_1_0.txt

PS_DataFIFO_2_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_DataFIFO_2_0" > PS_DataFIFO_2_0.txt
  artifacts:
    paths:
      - PS_DataFIFO_2_0.txt

PS_DataFIFO_3_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_DataFIFO_3_0" > PS_DataFIFO_3_0.txt
  artifacts:
    paths:
      - PS_DataFIFO_3_0.txt

PS_DataWidthConverter_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_DataWidthConverter_0" > PS_DataWidthConverter_0.txt
  artifacts:
    paths:
      - PS_DataWidthConverter_0.txt

PS_LowSpeedCrossbar_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_LowSpeedCrossbar_0" > PS_LowSpeedCrossbar_0.txt
  artifacts:
    paths:
      - PS_LowSpeedCrossbar_0.txt

PS_MainCrossbar_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_MainCrossbar_0" > PS_MainCrossbar_0.txt
  artifacts:
    paths:
      - PS_MainCrossbar_0.txt

PS_MemoryTester_0_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_MemoryTester_0_0" > PS_MemoryTester_0_0.txt
  artifacts:
    paths:
      - PS_MemoryTester_0_0.txt

PS_MemoryTester_1_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_MemoryTester_1_0" > PS_MemoryTester_1_0.txt
  artifacts:
    paths:
      - PS_MemoryTester_1_0.txt

PS_MemoryTester_2_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_MemoryTester_2_0" > PS_MemoryTester_2_0.txt
  artifacts:
    paths:
      - PS_MemoryTester_2_0.txt

PS_MemoryTester_3_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_MemoryTester_3_0" > PS_MemoryTester_3_0.txt
  artifacts:
    paths:
      - PS_MemoryTester_3_0.txt

PS_PowerSink_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_PowerSink_0" > PS_PowerSink_0.txt
  artifacts:
    paths:
      - PS_PowerSink_0.txt

PS_ProtocolConvert_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_ProtocolConvert_0" > PS_ProtocolConvert_0.txt
  artifacts:
    paths:
      - PS_ProtocolConvert_0.txt

PS_ZynqUltra_PS_0-synth:
  extends: .Vivado-synth

  script:
    - echo "synthesis job for PS_ZynqUltra_PS_0" > PS_ZynqUltra_PS_0.txt
  artifacts:
    paths:
      - PS_ZynqUltra_PS_0.txt


aggregate:
  tags:
    - Medium
    - Vivado-2018.3

  stage: Aggregation

  needs:
    - job: PS_ClockConverter_0-synth
      artifacts: true
    - job: PS_DataFIFO_0_0-synth
      artifacts: true
    - job: PS_DataFIFO_1_0-synth
      artifacts: true
    - job: PS_DataFIFO_2_0-synth
      artifacts: true
    - job: PS_DataFIFO_3_0-synth
      artifacts: true
    - job: PS_DataWidthConverter_0-synth
      artifacts: true
    - job: PS_LowSpeedCrossbar_0-synth
      artifacts: true
    - job: PS_MainCrossbar_0-synth
      artifacts: true
    - job: PS_MemoryTester_0_0-synth
      artifacts: true
    - job: PS_MemoryTester_1_0-synth
      artifacts: true
    - job: PS_MemoryTester_2_0-synth
      artifacts: true
    - job: PS_MemoryTester_3_0-synth
      artifacts: true
    - job: PS_PowerSink_0-synth
      artifacts: true
    - job: PS_ProtocolConvert_0-synth
      artifacts: true
    - job: PS_ZynqUltra_PS_0-synth
      artifacts: true
  script:
    - cat *.txt > jobs.txt
    - less jobs.txt

  artifacts:
    paths:
      - jobs.txt

Output of checks

(If you are reporting a bug on GitLab.com, write: This bug happens on GitLab.com)

Results of GitLab environment info

Not needed.

Results of GitLab application Check

Not needed.

Possible fixes

Related issues

Edited by Patrick Lehmann