Verified Commit d170a1e0 authored by Théodore Biadala's avatar Théodore Biadala
Browse files

Issue #3463479 by catch, nod_, Spokje, larowlan: Merge the build and lint...

Issue #3463479 by catch, nod_, Spokje, larowlan: Merge the build and lint stages in core MR pipelines

(cherry picked from commit 963de909)
parent cce51ccf
Loading
Loading
Loading
Loading
Loading
+38 −62
Original line number Diff line number Diff line
@@ -69,7 +69,6 @@ variables:
# Stages    #
#############
stages:
  - 🏗️ Build
  - 🪄 Lint
  - 🗜️ Test

@@ -96,11 +95,7 @@ default:

.with-composer: &with-composer
  needs:
    - '📦️ Composer'

.with-yarn: &with-yarn
  needs:
    - '📦️ Yarn'
    - '🧹 PHP Coding standards (PHPCS)'

.default-job-settings-lint: &default-job-settings-lint
  rules:
@@ -314,25 +309,14 @@ default:
  <<: [ *run-daily ]

################
# Build Jobs for linting
# Lint Jobs
################

'📦️ Composer':
'🧹 PHP Static Analysis (phpstan)':
  <<: [ *default-job-settings-lint ]
  stage: 🪄 Lint
  variables:
    KUBERNETES_CPU_REQUEST: "1"
  stage: 🏗️ Build
  cache:
    key:
      files:
        - ./composer.json
        - ./composer.lock
    paths:
      - ./vendor
  artifacts:
    expire_in: 1 week
    expose_as: 'web-vendor'
    paths:
      - vendor/
    KUBERNETES_CPU_REQUEST: "16"
  script:
    - composer validate
    - composer install --optimize-autoloader
@@ -340,38 +324,6 @@ default:
        composer update --optimize-autoloader;
        composer outdated;
      fi

'📦️ Yarn':
  variables:
    KUBERNETES_CPU_REQUEST: "2"
  stage: 🏗️ Build
  cache:
    key:
      files:
        - ./core/package.json
        - ./core/yarn.lock
    paths:
      - ./core/node_modules
  artifacts:
    expire_in: 1 week
    expose_as: 'yarn-vendor'
    paths:
      - core/node_modules/
  script:
    - cd core
    - corepack enable
    - yarn install

################
# Lint Jobs
################

'🧹 PHP Static Analysis (phpstan)':
  <<: [ *with-composer, *default-job-settings-lint ]
  stage: 🪄 Lint
  variables:
    KUBERNETES_CPU_REQUEST: "16"
  script:
    - vendor/bin/phpstan --version
    # Rely on PHPStan caching to execute analysis multiple times without performance drawback.
    # Output a copy in junit.
@@ -397,19 +349,28 @@ default:
      - core/.phpstan-baseline.php

'🧹 PHP Coding standards (PHPCS)':
  <<: [ *with-composer, *default-job-settings-lint ]
  <<: [ *default-job-settings-lint ]
  stage: 🪄 Lint
  variables:
    KUBERNETES_CPU_REQUEST: "16"
  script:
    - composer validate
    - composer install --optimize-autoloader
    - if [ -n "$COMPOSER_UPDATE" ]; then
        composer update --optimize-autoloader;
        composer outdated;
      fi
    - vendor/bin/phpcs --version
    - composer phpcs -- -s --report-full --report-summary --report-\\Micheh\\PhpCodeSniffer\\Report\\Gitlab=phpcs-quality-report.json
  artifacts:
    expire_in: 1 week
    expose_as: 'web-vendor'
    paths:
      - vendor/
    reports:
      codequality: phpcs-quality-report.json

'🧹 JavaScript linting (eslint)':
  <<: [ *with-yarn ]
  stage: 🪄 Lint
  variables:
    KUBERNETES_CPU_REQUEST: "2"
@@ -429,14 +390,14 @@ default:
  script:
    - cd core
    - corepack enable
    - yarn run check:ckeditor5
    - yarn run lint:core-js-passing --format gitlab
    - yarn install
    - yarn run -s check:ckeditor5
    - yarn run -s lint:core-js-passing --format gitlab
  artifacts:
    reports:
      codequality: eslint-quality-report.json

'🧹 CSS linting (stylelint)':
  <<: [ *with-yarn ]
  stage: 🪄 Lint
  variables:
    KUBERNETES_CPU_REQUEST: "2"
@@ -455,6 +416,7 @@ default:
  script:
    - corepack enable
    - cd core
    - yarn install
    - yarn run build:css --check
    - yarn run lint:css --color --custom-formatter=node_modules/stylelint-formatter-gitlab
  artifacts:
@@ -462,7 +424,7 @@ default:
      codequality: stylelint-quality-report.json

'📔 Spell-checking':
  <<: [ *with-yarn, *default-job-settings-lint ]
  <<: [ *default-job-settings-lint ]
  stage: 🪄 Lint
  variables:
    KUBERNETES_CPU_REQUEST: "2"
@@ -474,8 +436,21 @@ default:
      fi;
    - cd core
    - corepack enable
    - yarn install
    - git diff ${CI_MERGE_REQUEST_TARGET_BRANCH_SHA:-$CI_MERGE_REQUEST_DIFF_BASE_SHA} --name-only 2>1 > /dev/null || (echo "Warning, cannot find changed files, converting to full clone." & (git fetch --unshallow --quiet && echo "Fetch successful."))
    - git diff ${CI_MERGE_REQUEST_TARGET_BRANCH_SHA:-$CI_MERGE_REQUEST_DIFF_BASE_SHA} --name-only | sed "s_^_../_" | yarn run -s spellcheck:core --no-must-find-files --file-list stdin
  cache:
    key:
      files:
        - ./core/package.json
        - ./core/yarn.lock
    paths:
      - ./core/node_modules
  artifacts:
    expire_in: 1 week
    expose_as: 'yarn-vendor'
    paths:
      - core/node_modules/

'📔 Validatable config':
  <<: [ *default-job-settings-lint ]
@@ -484,6 +459,7 @@ default:
    KUBERNETES_CPU_REQUEST: "2"
  # Run on MRs if config schema files have changed, or manually.
  rules:
    - if: $PERFORMANCE_TEST != "1"
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      changes:
        - "**/config/schema/*.schema.yml"
+5 −4
Original line number Diff line number Diff line
@@ -47,14 +47,14 @@ default:
.with-composer: &with-composer
  needs:
    - pipeline: $PARENT_PIPELINE_ID
      job: '📦️ Composer'
      job: '🧹 PHP Coding standards (PHPCS)'

.with-composer-and-yarn: &with-composer-and-yarn
  needs:
    - pipeline: $PARENT_PIPELINE_ID
      job: '📦️ Composer'
      job: '🧹 PHP Coding standards (PHPCS)'
    - pipeline: $PARENT_PIPELINE_ID
      job: '📦️ Yarn'
      job: '📔 Spell-checking'

variables:
  FF_NETWORK_PER_BUILD: 1
@@ -219,7 +219,7 @@ variables:
    - <<: *with-database

'🚲 Performance tests':
  <<: [ *with-composer, *default-job-settings ]
  <<: [ *default-job-settings ]
  rules:
    - if: $PERFORMANCE_TEST == "1"
  variables:
@@ -237,6 +237,7 @@ variables:
      [[ $_TARGET_DB == mysql* ]] && export SIMPLETEST_DB=mysql://$MYSQL_USER:$MYSQL_PASSWORD@database/$MYSQL_DATABASE?module=mysql
      [[ $_TARGET_DB == mariadb* ]] && export SIMPLETEST_DB=mysql://$MYSQL_USER:$MYSQL_PASSWORD@database/$MYSQL_DATABASE?module=mysql
      [[ $_TARGET_DB == pgsql* ]] && export SIMPLETEST_DB=pgsql://$POSTGRES_USER:$POSTGRES_PASSWORD@database/$POSTGRES_DB?module=pgsql
    - composer install --optimize-autoloader
    - export OTEL_COLLECTOR="$OTEL_COLLECTOR"
    - mkdir -p ./sites/simpletest ./sites/default/files ./build/logs/junit /var/www/.composer
    - chown -R www-data:www-data ./sites ./build/logs/junit ./vendor /var/www/