- Parallelized jobs workflow and "test" job parallelized
Last active
March 9, 2024 22:53
-
-
Save abenevaut/cfdd279d7279fc2a15722f7c0e2ceb94 to your computer and use it in GitHub Desktop.
Parallelized jobs workflow and "test" job parallelized
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: 2 | |
workdir-latest: &workdir-latest | |
working_directory: ~/project/latest | |
docker-latest: &docker-latest | |
docker: | |
- image: abenevaut/vapor-ci:node_16-php_81 | |
checkout: &checkout | |
steps: | |
- checkout | |
- persist_to_workspace: | |
root: ~/project | |
paths: | |
- "*" | |
prepare-node-dependencies: &prepare-node-dependencies | |
steps: | |
- attach_workspace: | |
at: ~/project | |
- restore_cache: | |
keys: | |
- node-dependencies-{{ checksum "package-lock.json" }} | |
- node-dependencies- # fallback | |
- run: | |
name: Prepare node dependencies | |
command: npm install | |
- save_cache: | |
paths: | |
- ~/.npm | |
key: node-dependencies-{{ checksum "package-lock.json" }} | |
- persist_to_workspace: | |
root: ~/project | |
paths: | |
- latest/node_modules | |
prepare-php-dependencies: &prepare-php-dependencies | |
steps: | |
- attach_workspace: | |
at: ~/project | |
- restore_cache: | |
keys: | |
- php-dependencies-{{ checksum "composer.json" }} | |
- php-dependencies- # fallback | |
- run: | |
name: Prepare PHP dependencies | |
command: | | |
composer validate --strict | |
composer install | |
- save_cache: | |
paths: | |
- ./vendor | |
key: php-dependencies-{{ checksum "composer.json" }} | |
- run: | |
name: Prepare Laravel dependencies | |
command: | | |
cp .env.example .env | |
php artisan key:generate | |
- run: | |
name: Slice PHPUnit tests | |
command: | | |
php phpunit-slicer slice 6 ./phpunit.xml.dist ./phpunit.xml.dist ./tests | |
- persist_to_workspace: | |
root: ~/project | |
paths: | |
- latest/vendor | |
- latest/.env | |
- latest/phpunit.xml.dist | |
build-javascript: &build-javascript | |
steps: | |
- attach_workspace: | |
at: ~/project | |
- run: npm run prod | |
- persist_to_workspace: | |
root: ~/project | |
paths: | |
- latest/public | |
test: &test | |
parallelism: 6 | |
steps: | |
- attach_workspace: | |
at: ~/project | |
- run: | |
name: Run tests | |
command: php -d pcov.enabled=1 ./vendor/bin/paratest -p 30 --configuration phpunit.xml.dist --testsuite node-${CIRCLE_NODE_INDEX} --coverage-clover=coverage/clover-${CIRCLE_NODE_INDEX}.xml | |
- persist_to_workspace: | |
root: ~/project | |
paths: | |
- latest/coverage | |
build-whitelabel: &build-whitelabel | |
steps: | |
- attach_workspace: | |
at: ~/project | |
- run: npm run prod:whitelabel | |
sent-coverage: &sent-coverage | |
steps: | |
- attach_workspace: | |
at: ~/project | |
- run: | |
name: Send coverage to codecov.io | |
command: codecov -t ${CODECOV_TOKEN} -f "coverage/clover-*.xml" -F controllers | |
- store_test_results: | |
path: coverage | |
jobs: | |
"checkout": | |
<<: *workdir-latest | |
<<: *docker-latest | |
<<: *checkout | |
"prepare-node-dependencies": | |
<<: *workdir-latest | |
<<: *docker-latest | |
<<: *prepare-node-dependencies | |
"prepare-php-dependencies": | |
<<: *workdir-latest | |
<<: *docker-latest | |
<<: *prepare-php-dependencies | |
"build-javascript": | |
<<: *workdir-latest | |
<<: *docker-latest | |
<<: *build-javascript | |
"build-whitelabel": | |
<<: *workdir-latest | |
<<: *docker-latest | |
<<: *build-whitelabel | |
"test": | |
<<: *workdir-latest | |
<<: *docker-latest | |
<<: *test | |
"sent-coverage": | |
<<: *workdir-latest | |
<<: *docker-latest | |
<<: *sent-coverage | |
workflows: | |
version: 2 | |
build-test-analyze: | |
jobs: | |
- "checkout" | |
- "prepare-node-dependencies": | |
requires: | |
- "checkout" | |
- "prepare-php-dependencies": | |
requires: | |
- "checkout" | |
- "build-javascript": | |
requires: | |
- "prepare-node-dependencies" | |
- "prepare-php-dependencies" | |
- "test": | |
requires: | |
- "build-javascript" | |
- "prepare-php-dependencies" | |
- "sent-coverage": | |
requires: | |
- "test" | |
nightly: | |
triggers: | |
- schedule: | |
cron: "0 0 * * 0" # every sunday | |
filters: | |
branches: | |
only: | |
- master | |
jobs: | |
- "checkout" | |
- "prepare-node-dependencies": | |
requires: | |
- "checkout" | |
- "prepare-php-dependencies": | |
requires: | |
- "checkout" | |
- "build-javascript": | |
requires: | |
- "prepare-node-dependencies" | |
- "prepare-php-dependencies" | |
- "build-whitelabel": | |
requires: | |
- "build-javascript" | |
- "prepare-php-dependencies" | |
- "test": | |
requires: | |
- "build-javascript" | |
- "prepare-php-dependencies" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment