From 4bb3e4fd0897f30d2538de2b41f9cf4f724ae2d4 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Sat, 16 Sep 2023 10:08:36 +0100 Subject: [PATCH] Issue #3387503 by bbrala: Move Gitlab linting steps to main job (cherry picked from commit 1bdbe868f257692d1b3b213b706a2860c5d27464) --- .gitlab-ci.yml | 154 +++++++++++++++++++++++++++++++++++++++- .gitlab-ci/pipeline.yml | 93 ++++-------------------- 2 files changed, 167 insertions(+), 80 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6fd10ec37d89..d73fc6af1588 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,3 +1,5 @@ +# cspell:ignore drupaltestbot drupaltestbotpw codequality Micheh micheh + ################ # Drupal GitLabCI template. # @@ -46,6 +48,77 @@ variables: CONCURRENCY: 32 GIT_DEPTH: "3" + +############# +# Stages # +############# +stages: + - ðŸ—ï¸ Build + - 🪄 Lint + - ðŸ—œï¸ Test + +############# +# Templates # +############# + +.default-job-settings: &default-job-settings-lint + allow_failure: false + variables: + _TARGET_PHP: "8.2" + _TARGET_DB: "mysql-8" + image: + name: $_CONFIG_DOCKERHUB_ROOT/php-$_TARGET_PHP-apache:production + rules: + - if: $CI_PIPELINE_SOURCE == "push" && $CI_PROJECT_ROOT_NAMESPACE == "project" + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + +.composer-cache: &composer-cache + key: + files: + - ./composer.json + - ./composer.lock + paths: + - ./vendor + +.yarn-cache: &yarn-cache + key: + files: + - ./core/package.json + - ./core/yarn.lock + paths: + - ./core/node_modules + +.pull-composer-cache: &pull-composer-cache + cache: + policy: pull + <<: *composer-cache + dependencies: + - 'ðŸ“¦ï¸ Composer' + +.with-composer-cache: &with-composer-cache + needs: + - 'ðŸ“¦ï¸ Composer' + <<: *pull-composer-cache + +.with-yarn-cache: &with-yarn-cache + dependencies: + - 'ðŸ“¦ï¸ Yarn' + needs: + - 'ðŸ“¦ï¸ Yarn' + cache: + policy: pull + <<: *yarn-cache + +.junit-artifacts: &junit-artifacts + artifacts: + expose_as: junit + expire_in: 6 mos + paths: + - junit.xml + reports: + junit: junit.xml + + ################ # Stages # @@ -57,7 +130,7 @@ variables: ################ .default-stage: &default-stage - stage: test + stage: ðŸ—œï¸ Test trigger: # Rely on the status of the child pipeline. strategy: depend @@ -131,3 +204,82 @@ variables: # variables: # _TARGET_PHP: "8.1" # _TARGET_DB: "php-$_TARGET_PHP-apache" + + +################ +# Build Jobs for linting +################ + +'ðŸ“¦ï¸ Composer': + <<: *default-job-settings-lint + stage: ðŸ—ï¸ Build + cache: + <<: *composer-cache + artifacts: + expire_in: 1 week + expose_as: 'web-vendor' + paths: + - vendor/ + script: + - export + - composer validate + - composer install + +'ðŸ“¦ï¸ Yarn': + <<: *default-job-settings-lint + stage: ðŸ—ï¸ Build + cache: + <<: *yarn-cache + artifacts: + expire_in: 1 week + expose_as: 'yarn-vendor' + paths: + - core/node_modules/ + script: + # Installs all core javascript dependencies and adds junit formatter. + - yarn --cwd ./core add stylelint-junit-formatter + +################ +# Lint Jobs +################ + +'🧹 PHP Coding standards (PHPCS)': + <<: [ *with-composer-cache, *junit-artifacts, *default-job-settings-lint ] + stage: 🪄 Lint + script: + - composer phpcs -- --report-junit=junit.xml --report-full --report-summary + +'🧹 PHP Static Analysis (phpstan)': + <<: [ *with-composer-cache, *junit-artifacts, *default-job-settings-lint ] + stage: 🪄 Lint + script: + # Turn off apc to avoid corrupt composer cache. + - php -d apc.enabled=0 -d apc.enable_cli=0 vendor/bin/phpstan analyze --configuration=./core/phpstan.neon.dist --error-format=junit > junit.xml + +'🧹 CSS linting (stylelint)': + <<: [ *with-yarn-cache, *junit-artifacts, *default-job-settings-lint ] + stage: 🪄 Lint + script: + - yarn run --cwd=./core lint:css --color --custom-formatter node_modules/stylelint-junit-formatter > junit.xml + +'🧹 Compilation check': + <<: [ *with-yarn-cache, *default-job-settings-lint ] + stage: 🪄 Lint + script: + - yarn run --cwd=./core build:css --check + - cd core && yarn run -s check:ckeditor5 + +'🧹 JavaScript linting (eslint)': + <<: [ *with-yarn-cache, *junit-artifacts, *default-job-settings-lint ] + stage: 🪄 Lint + script: + - yarn --cwd=./core run -s lint:core-js-passing --format junit > junit.xml + +'📔 Spell-checking': + <<: [ *with-yarn-cache, *default-job-settings-lint ] + stage: 🪄 Lint + script: + - export TARGET_BRANCH=${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}${CI_COMMIT_BRANCH} + - git fetch -vn --depth=$GIT_DEPTH "${CI_MERGE_REQUEST_PROJECT_URL:-origin}" "+refs/heads/$TARGET_BRANCH:refs/heads/$TARGET_BRANCH" + - export MODIFIED=`git diff --name-only refs/heads/$TARGET_BRANCH|while read r;do echo "$CI_PROJECT_DIR/$r";done|tr "\n" " "` + - echo $MODIFIED | tr ' ' '\n' | yarn --cwd=./core run -s spellcheck:core --no-must-find-files --file-list stdin diff --git a/.gitlab-ci/pipeline.yml b/.gitlab-ci/pipeline.yml index f5e9f5f4344f..7b908820f36f 100644 --- a/.gitlab-ci/pipeline.yml +++ b/.gitlab-ci/pipeline.yml @@ -8,13 +8,6 @@ stages: ################ - ðŸ—ï¸ Build - ################ - # Code quality checks - # - # This stage includes any codebase validation before running tests. - ################ - - 🪄 Lint - ################ # Test # @@ -81,18 +74,6 @@ stages: reports: junit: junit.xml -.with-linting: &with-linting - needs: - - 'ðŸ“¦ï¸ Composer' - - '🧹 PHP Static Analysis (phpstan)' - - '🧹 PHP Coding standards (PHPCS)' - - '🧹 Compilation check' - - 'ðŸ“¦ï¸ Yarn' - - '📔 Spell-checking' - - '🧹 JavaScript linting (eslint)' - - '🧹 CSS linting (stylelint)' - <<: *pull-composer-cache - .with-unit-tests: &with-unit-tests needs: - 'âš¡ï¸ PHPUnit Unit' @@ -210,51 +191,6 @@ stages: # Installs all core javascript dependencies and adds junit formatter. - yarn --cwd ./core add stylelint-junit-formatter -################ -# Lint Jobs -################ - -'🧹 PHP Coding standards (PHPCS)': - <<: [ *with-composer-cache, *junit-artifacts, *default-job-settings ] - stage: 🪄 Lint - script: - - composer phpcs -- --report-junit=junit.xml --report-full --report-summary - -'🧹 PHP Static Analysis (phpstan)': - <<: [ *with-composer-cache, *junit-artifacts, *default-job-settings ] - stage: 🪄 Lint - script: - # Turn off apc to avoid corrupt composer cache. - - php -d apc.enabled=0 -d apc.enable_cli=0 vendor/bin/phpstan analyze --configuration=./core/phpstan.neon.dist --error-format=junit > junit.xml - -'🧹 CSS linting (stylelint)': - <<: [ *with-yarn-cache, *junit-artifacts, *default-job-settings ] - stage: 🪄 Lint - script: - - yarn run --cwd=./core lint:css --color --custom-formatter node_modules/stylelint-junit-formatter > junit.xml - -'🧹 Compilation check': - <<: [ *with-yarn-cache, *default-job-settings ] - stage: 🪄 Lint - script: - - yarn run --cwd=./core build:css --check - - cd core && yarn run -s check:ckeditor5 - -'🧹 JavaScript linting (eslint)': - <<: [ *with-yarn-cache, *junit-artifacts, *default-job-settings ] - stage: 🪄 Lint - script: - - yarn --cwd=./core run -s lint:core-js-passing --format junit > junit.xml - -'📔 Spell-checking': - <<: [ *with-yarn-cache, *default-job-settings ] - stage: 🪄 Lint - script: - - export TARGET_BRANCH=${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}${CI_COMMIT_BRANCH} - - git fetch -vn --depth=$GIT_DEPTH "${CI_MERGE_REQUEST_PROJECT_URL:-origin}" "+refs/heads/$TARGET_BRANCH:refs/heads/$TARGET_BRANCH" - - export MODIFIED=`git diff --name-only refs/heads/$TARGET_BRANCH|while read r;do echo "$CI_PROJECT_DIR/$r";done|tr "\n" " "` - - echo $MODIFIED | tr ' ' '\n' | yarn --cwd=./core run -s spellcheck:core --no-must-find-files --file-list stdin - ################ # Test Jobs ################ @@ -271,10 +207,20 @@ stages: TESTSUITE: PHPUnit-Unit CONCURRENCY: "$CONCURRENCY" +'ðŸŒï¸ï¸ PHPUnit Functional': + <<: [ *with-unit-tests, *phpunit-artifacts, *setup-webserver, *run-tests, *default-job-settings ] + stage: ðŸ—œï¸ Test + parallel: 6 + variables: + <<: *test-variables + TESTSUITE: PHPUnit-Functional + CONCURRENCY: "$CONCURRENCY" + services: + - <<: *with-database + 'âš™ï¸ï¸ PHPUnit Kernel': - <<: [ *with-composer-cache, *phpunit-artifacts, *setup-webserver, *run-tests, *default-job-settings ] + <<: [*with-unit-tests, *phpunit-artifacts, *setup-webserver, *run-tests, *default-job-settings ] stage: ðŸ—œï¸ Test - parallel: 3 variables: <<: *test-variables TESTSUITE: PHPUnit-Kernel @@ -283,7 +229,7 @@ stages: - <<: *with-database '🖱ï¸ï¸ï¸ PHPUnit Functional Javascript': - <<: [ *with-linting, *with-unit-tests, *phpunit-artifacts, *setup-webserver, *run-tests, *default-job-settings ] + <<: [ *with-unit-tests, *phpunit-artifacts, *setup-webserver, *run-tests, *default-job-settings ] stage: ðŸ—œï¸ Test variables: <<: *test-variables @@ -294,7 +240,7 @@ stages: - <<: *with-chrome '👷ï¸ï¸ï¸ PHPUnit Build': - <<: [ *with-linting, *with-unit-tests, *phpunit-artifacts, *setup-webserver, *run-tests, *default-job-settings ] + <<: [ *with-unit-tests, *phpunit-artifacts, *setup-webserver, *run-tests, *default-job-settings ] stage: ðŸ—œï¸ Test variables: <<: *test-variables @@ -303,17 +249,6 @@ stages: services: - <<: *with-database -'ðŸŒï¸ï¸ PHPUnit Functional': - <<: [ *with-linting, *with-unit-tests, *phpunit-artifacts, *setup-webserver, *run-tests, *default-job-settings ] - stage: ðŸ—œï¸ Test - parallel: 8 - variables: - <<: *test-variables - TESTSUITE: PHPUnit-Functional - CONCURRENCY: "$CONCURRENCY" - services: - - <<: *with-database - '🦉ï¸ï¸ï¸ Nightwatch': <<: [ *with-composer-yarn-and-unit-tests, *setup-webserver, *default-job-settings ] stage: ðŸ—œï¸ Test -- GitLab