Skip to content
Snippets Groups Projects
Verified Commit c01e2ba8 authored by Bartek Jaskulski's avatar Bartek Jaskulski
Browse files

feat: improve parallel job processing


Possibly improve process by tweaking dependency graph and allowing to
run jobs out of order when it doesn't require additional dependencies.

Signed-off-by: default avatarBart Jaskulski <bjaskulski@protonmail.com>
parent 67f0cf10
No related branches found
No related tags found
No related merge requests found
variables: variables:
WPDESK_CI_VERSION: "2023.02.1" WPDESK_CI_VERSION: "2023.02.2"
MYSQL_ROOT_PASSWORD: "mysql" MYSQL_ROOT_PASSWORD: "mysql"
MYSQL_DATABASE: "wptest" MYSQL_DATABASE: "wptest"
MYSQL_USER: "mysql" MYSQL_USER: "mysql"
...@@ -25,38 +25,18 @@ stages: ...@@ -25,38 +25,18 @@ stages:
include: include:
- project: 'wpdesk/gitlab-ci' - project: 'wpdesk/gitlab-ci'
ref: 'master' file:
file: '/includes/prepare.yml' - '/includes/prepare.yml'
- project: 'wpdesk/gitlab-ci' - '/includes/tests/lint.yml'
ref: 'master' - '/includes/tests/unit.yml'
file: '/includes/tests/lint.yml' - '/includes/metrics.yml'
- project: 'wpdesk/gitlab-ci' - '/includes/tests/codeception-integration.yml'
ref: 'master' - '/includes/tests/codeception.yml'
file: '/includes/tests/unit.yml' - '/includes/tests/codeception-parallel.yml'
- project: 'wpdesk/gitlab-ci' - '/includes/tests/codeception-smoke.yml'
ref: 'master' - '/includes/tests/integration.yml'
file: '/includes/metrics.yml' - '/includes/deploy.yml'
- project: 'wpdesk/gitlab-ci' - '/includes/pages.yml'
ref: 'master'
file: '/includes/tests/codeception-integration.yml'
- project: 'wpdesk/gitlab-ci'
ref: 'master'
file: '/includes/tests/codeception.yml'
- project: 'wpdesk/gitlab-ci'
ref: 'master'
file: '/includes/tests/codeception-parallel.yml'
- project: 'wpdesk/gitlab-ci'
ref: 'master'
file: '/includes/tests/codeception-smoke.yml'
- project: 'wpdesk/gitlab-ci'
ref: 'master'
file: '/includes/tests/integration.yml'
- project: 'wpdesk/gitlab-ci'
ref: 'master'
file: '/includes/deploy.yml'
- project: 'wpdesk/gitlab-ci'
ref: 'master'
file: '/includes/pages.yml'
check version cohesion: check version cohesion:
stage: tests stage: tests
......
...@@ -45,6 +45,8 @@ hooks docs refresh: ...@@ -45,6 +45,8 @@ hooks docs refresh:
tags: tags:
- deploy - deploy
dependencies: dependencies:
- prepare prefixed vendor
- prepare npm assets
- prepare translations - prepare translations
artifacts: artifacts:
expire_in: 6 mos expire_in: 6 mos
...@@ -90,7 +92,7 @@ plugin zip: ...@@ -90,7 +92,7 @@ plugin zip:
stage: pre-deploy stage: pre-deploy
tags: tags:
- deploy - deploy
needs: dependencies:
- build to deploy - build to deploy
artifacts: artifacts:
expire_in: 24 mos expire_in: 24 mos
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
stage: tools stage: tools
image: composer:2.0 image: composer:2.0
allow_failure: true allow_failure: true
needs: dependencies:
- prepare prefixed vendor - prepare prefixed vendor
before_script: before_script:
- apk add --update --no-cache libxml2-dev libzip zip libzip-dev - apk add --update --no-cache libxml2-dev libzip zip libzip-dev
...@@ -32,6 +32,7 @@ churn metrics: ...@@ -32,6 +32,7 @@ churn metrics:
name: "churn" name: "churn"
paths: paths:
- churn - churn
needs: []
script: script:
- echo ${WPDESK_CI_VERSION} - echo ${WPDESK_CI_VERSION}
- composer global require bmitch/churn-php - composer global require bmitch/churn-php
...@@ -50,8 +51,7 @@ phpdoc: ...@@ -50,8 +51,7 @@ phpdoc:
- metrics - metrics
stage: tools stage: tools
allow_failure: true allow_failure: true
needs: needs: []
- prepare prefixed vendor
artifacts: artifacts:
when: always when: always
expire_in: 1 month expire_in: 1 month
......
...@@ -8,8 +8,12 @@ ...@@ -8,8 +8,12 @@
- assets - assets
prepare prefixed vendor: prepare prefixed vendor:
<<: *job-prepare
image: composer:2.0.8 image: composer:2.0.8
artifacts:
name: "vendor_prefixed"
paths:
- vendor
- vendor_prefixed
tags: tags:
- vendor - vendor
stage: prepare-vendor stage: prepare-vendor
...@@ -25,20 +29,27 @@ prepare prefixed vendor: ...@@ -25,20 +29,27 @@ prepare prefixed vendor:
- COMPOSER_MEMORY_LIMIT=-1 && composer install - COMPOSER_MEMORY_LIMIT=-1 && composer install
prepare npm assets: prepare npm assets:
<<: *job-prepare
image: node:16.10 image: node:16.10
artifacts:
name: "node_assets"
paths:
- assets
cache: cache:
key: ${CI_PROJECT_NAME}-node key: ${CI_PROJECT_NAME}-node
paths: paths:
- node_modules/ - node_modules/
tags: tags:
- vendor - vendor
rules:
- exists:
- package.json
- tests/codeception/prepare_npm.sh
- if: $IS_NPM_LIBRARY
when: never
except: except:
variables: variables:
- $IS_NPM_LIBRARY - $IS_NPM_LIBRARY
stage: prepare-node stage: prepare-node
dependencies:
- prepare prefixed vendor
interruptible: true interruptible: true
script: script:
- mkdir -p /cache/npm-cache - mkdir -p /cache/npm-cache
...@@ -48,13 +59,16 @@ prepare npm assets: ...@@ -48,13 +59,16 @@ prepare npm assets:
- if [[ -f tests/codeception/prepare_npm.sh ]]; then sh tests/codeception/prepare_npm.sh; fi - if [[ -f tests/codeception/prepare_npm.sh ]]; then sh tests/codeception/prepare_npm.sh; fi
prepare translations: prepare translations:
<<: *job-prepare
image: composer:2.0 image: composer:2.0
artifacts:
name: "language"
paths:
- lang
tags: tags:
- vendor - vendor
stage: prepare-translations-and-tests stage: prepare-translations-and-tests
dependencies: dependencies:
- prepare npm assets - prepare prefixed vendor
except: except:
variables: variables:
- $IS_LIBRARY - $IS_LIBRARY
...@@ -66,13 +80,10 @@ prepare translations: ...@@ -66,13 +80,10 @@ prepare translations:
- composer generate-pot - composer generate-pot
prepare tests: prepare tests:
<<: *job-prepare
image: wpdesknet/phpunit-woocommerce:0-0 image: wpdesknet/phpunit-woocommerce:0-0
tags: tags:
- vendor - vendor
stage: prepare-translations-and-tests stage: prepare-translations-and-tests
needs:
- prepare prefixed vendor
artifacts: artifacts:
name: "dependent_plugins" name: "dependent_plugins"
paths: paths:
......
...@@ -13,9 +13,10 @@ integration codeception tests: ...@@ -13,9 +13,10 @@ integration codeception tests:
- name: mysql:5.6 - name: mysql:5.6
alias: mysqltests alias: mysqltests
command: [--max-allowed-packet=67108864] command: [--max-allowed-packet=67108864]
needs: dependencies:
- prepare tests - prepare tests
- prepare translations - prepare prefixed vendor
- prepare npm assets
artifacts: artifacts:
when: always when: always
expire_in: 1 month expire_in: 1 month
......
...@@ -5,8 +5,9 @@ ...@@ -5,8 +5,9 @@
image: image:
name: wpdesknet/codeception:11 name: wpdesknet/codeception:11
entrypoint: [""] entrypoint: [""]
needs: dependencies:
- prepare translations - prepare prefixed vendor
- prepare npm assets
- prepare tests - prepare tests
variables: variables:
WP_CLI_CACHE_DIR: /cache/wp-cli WP_CLI_CACHE_DIR: /cache/wp-cli
......
...@@ -3,9 +3,11 @@ ...@@ -3,9 +3,11 @@
- codeception - codeception
- $TESTS_TAG - $TESTS_TAG
image: wpdesknet/wordpresscli:25 image: wpdesknet/wordpresscli:25
needs: dependencies:
- prepare translations - prepare prefixed vendor
- prepare npm assets
- prepare tests - prepare tests
needs:
- build to deploy - build to deploy
variables: variables:
WP_CLI_CACHE_DIR: /cache/wp-cli WP_CLI_CACHE_DIR: /cache/wp-cli
......
...@@ -28,8 +28,9 @@ ...@@ -28,8 +28,9 @@
reports: reports:
junit: tests/codeception/tests/_output/report.xml junit: tests/codeception/tests/_output/report.xml
stage: tests stage: tests
needs: dependencies:
- prepare translations - prepare prefixed vendor
- prepare npm assets
- prepare tests - prepare tests
except: except:
variables: variables:
......
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
interruptible: true interruptible: true
tags: tags:
- integration - integration
needs: dependencies:
- prepare translations - prepare prefixed vendor
- prepare tests - prepare tests
services: services:
- mysql:5.6 - mysql:5.6
......
.lint: &lint-tmpl .lint: &lint-tmpl
needs: []
stage: tests stage: tests
script: script:
- composer install --no-dev - composer install --no-dev
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment