forked from a64f7bb4-7358-4778-9fbe-3b882c34cc1d/v1
255 lines
7.2 KiB
YAML
255 lines
7.2 KiB
YAML
# Default configuration file for Drupal modules.
|
|
#
|
|
# Use setup.sh to automate setting this up. Otherwise, to use this in a new
|
|
# module:
|
|
# 1. Copy config.yml to the module's .circleci directory.
|
|
# 2. Change 'latest' in the image tag to the latest tag.
|
|
# 3. Update the working_directory key.
|
|
# 4. Connect CircleCI to the repository through the Circle UI.
|
|
# 5. Set the COMPOSER_AUTH environment variable in Circle to grant access to
|
|
# any private repositories.
|
|
# 6. Create a status badge embed code in Circle and add it to the README.md.
|
|
#
|
|
# Check https://circleci.com/docs/2.0/language-php/ for more details
|
|
#
|
|
|
|
defaults: &defaults
|
|
docker:
|
|
# specify the version you desire here (avoid latest except for testing)
|
|
- image: quay.io/deviantintegral/drupal_tests:0.5.0-drupal87
|
|
|
|
- image: selenium/standalone-chrome-debug:3.141.59-neon
|
|
|
|
- image: mariadb:10.4
|
|
environment:
|
|
MYSQL_ALLOW_EMPTY_PASSWORD: 1
|
|
|
|
# Specify service dependencies here if necessary
|
|
# CircleCI maintains a library of pre-built images
|
|
# documented at https://circleci.com/docs/2.0/circleci-images/
|
|
# - image: circleci/mysql:9.4
|
|
|
|
# 'checkout' supports a path key, but not on locals where you test with the
|
|
# circleci CLI tool.
|
|
# https://discuss.circleci.com/t/bug-circleci-build-command-ignores-checkout-path-config/13004
|
|
working_directory: /var/www/html/modules/varnish_purger
|
|
|
|
# YAML does not support merging of lists. That means we can't have a default
|
|
# 'steps' configuration, though we can have defaults for individual step
|
|
# properties.
|
|
|
|
# We use the composer.json as a way to determine if we can cache our build.
|
|
restore_cache: &restore_cache
|
|
keys:
|
|
- v4-dependencies-{{ checksum "composer.json" }}-{{ checksum "../../composer.json" }}
|
|
# fallback to using the latest cache if no exact match is found
|
|
- v4-dependencies-
|
|
|
|
# If composer.json hasn't changed, restore the Composer cache directory. We
|
|
# don't restore the lock file so we ensure we get updated dependencies.
|
|
save_cache: &save_cache
|
|
paths:
|
|
- /root/.composer/cache/files
|
|
key: v4-dependencies-{{ checksum "composer.json" }}-{{ checksum "../../composer.json" }}
|
|
|
|
# Install composer dependencies into the workspace to share with all jobs.
|
|
update_dependencies: &update_dependencies
|
|
<<: *defaults
|
|
steps:
|
|
- checkout
|
|
|
|
- restore_cache: *restore_cache
|
|
|
|
- run:
|
|
working_directory: /var/www/html
|
|
command: |
|
|
./update-dependencies.sh varnish_purger
|
|
|
|
- save_cache: *save_cache
|
|
|
|
- persist_to_workspace:
|
|
root: /var/www/html
|
|
paths:
|
|
- .
|
|
|
|
# Run Drupal unit and kernel tests as one job. This command invokes the test.sh
|
|
# hook.
|
|
unit_kernel_tests: &unit_kernel_tests
|
|
<<: *defaults
|
|
steps:
|
|
- attach_workspace:
|
|
at: /var/www/html
|
|
|
|
- checkout
|
|
|
|
- run:
|
|
working_directory: /var/www/html
|
|
command: |
|
|
./test.sh varnish_purger
|
|
|
|
- store_test_results:
|
|
path: /var/www/html/artifacts/phpunit
|
|
- store_artifacts:
|
|
path: /var/www/html/artifacts
|
|
|
|
# Run Drupal functional tests. This command invokes the test-functional.sh
|
|
# hook.
|
|
functional_tests: &functional_tests
|
|
<<: *defaults
|
|
steps:
|
|
- attach_workspace:
|
|
at: /var/www/html
|
|
|
|
- checkout
|
|
|
|
- run:
|
|
working_directory: /var/www/html
|
|
command: |
|
|
./test-functional.sh varnish_purger
|
|
|
|
- store_test_results:
|
|
path: /var/www/html/artifacts/phpunit
|
|
- store_artifacts:
|
|
path: /var/www/html/artifacts
|
|
|
|
# Run Drupal functional tests. This command invokes the test-functional-js.sh
|
|
# hook.
|
|
functional_js_tests: &functional_js_tests
|
|
<<: *defaults
|
|
steps:
|
|
- attach_workspace:
|
|
at: /var/www/html
|
|
|
|
- checkout
|
|
|
|
- run:
|
|
working_directory: /var/www/html
|
|
command: |
|
|
./test-functional-js.sh varnish_purger
|
|
|
|
- store_test_results:
|
|
path: /var/www/html/artifacts/phpunit
|
|
- store_artifacts:
|
|
path: /var/www/html/artifacts
|
|
|
|
# Run Behat tests. This command invokes the behat.sh hook.
|
|
behat_tests: &behat_tests
|
|
<<: *defaults
|
|
steps:
|
|
- attach_workspace:
|
|
at: /var/www/html
|
|
|
|
- checkout
|
|
|
|
# Circle doesn't support volume mounts, so we'd have to build our own
|
|
# container to test the VCL. However, we also want to test VCL changes in
|
|
# PRs, so we may as well just install varnish in the primary container
|
|
# instead of running varnish in a secondary sidecar container.
|
|
- run:
|
|
name: Install varnish
|
|
command: |
|
|
sudo apt-get update
|
|
sudo apt-get install debian-archive-keyring
|
|
sudo apt-get install -y curl gnupg apt-transport-https
|
|
curl -L https://packagecloud.io/varnishcache/varnish60lts/gpgkey | sudo apt-key add -
|
|
echo 'deb https://packagecloud.io/varnishcache/varnish60lts/debian/ stretch main' | sudo tee -a /etc/apt/sources.list
|
|
echo ' deb-src https://packagecloud.io/varnishcache/varnish60lts/debian/ stretch main' | sudo tee -a /etc/apt/sources.list
|
|
sudo apt-get update
|
|
sudo apt-get install -y varnish
|
|
|
|
- run:
|
|
name: Configure and start varnish
|
|
command: |
|
|
varnishd \
|
|
-a :8080 \
|
|
-T localhost:6082 \
|
|
-f $(pwd)/zeroconfig.vcl
|
|
|
|
- run:
|
|
working_directory: /var/www/html
|
|
command: |
|
|
./behat.sh varnish_purger
|
|
|
|
- store_artifacts:
|
|
path: /var/www/html/artifacts
|
|
|
|
# Run code quality tests. This invokes code-sniffer.sh.
|
|
code_sniffer: &code_sniffer
|
|
<<: *defaults
|
|
steps:
|
|
- attach_workspace:
|
|
at: /var/www/html
|
|
|
|
- checkout
|
|
|
|
- run:
|
|
working_directory: /var/www/html
|
|
command: |
|
|
./code-sniffer.sh varnish_purger || true
|
|
|
|
- store_test_results:
|
|
path: /var/www/html/artifacts/phpcs
|
|
- store_artifacts:
|
|
path: /var/www/html/artifacts
|
|
|
|
# Run code coverage tests. This invokes code-coverage-stats.sh.
|
|
code_coverage: &code_coverage
|
|
<<: *defaults
|
|
steps:
|
|
- attach_workspace:
|
|
at: /var/www/html
|
|
|
|
- checkout
|
|
|
|
- run:
|
|
working_directory: /var/www/html
|
|
command: |
|
|
./code-coverage-stats.sh $CIRCLE_PROJECT_REPONAME
|
|
- store_artifacts:
|
|
path: /var/www/html/artifacts
|
|
|
|
# Declare all of the jobs we should run.
|
|
version: 2
|
|
jobs:
|
|
update-dependencies:
|
|
<<: *update_dependencies
|
|
run-unit-kernel-tests:
|
|
<<: *unit_kernel_tests
|
|
run-functional-tests:
|
|
<<: *functional_tests
|
|
run-functional-js-tests:
|
|
<<: *functional_js_tests
|
|
run-behat-tests:
|
|
<<: *behat_tests
|
|
run-code-sniffer:
|
|
<<: *code_sniffer
|
|
run-code-coverage:
|
|
<<: *code_coverage
|
|
|
|
workflows:
|
|
version: 2
|
|
|
|
# Declare a workflow that runs all of our jobs in parallel.
|
|
test_and_lint:
|
|
jobs:
|
|
- update-dependencies
|
|
- run-unit-kernel-tests:
|
|
requires:
|
|
- update-dependencies
|
|
- run-functional-tests:
|
|
requires:
|
|
- update-dependencies
|
|
- run-functional-js-tests:
|
|
requires:
|
|
- update-dependencies
|
|
- run-behat-tests:
|
|
requires:
|
|
- update-dependencies
|
|
- run-code-sniffer:
|
|
requires:
|
|
- update-dependencies
|
|
- run-code-coverage:
|
|
requires:
|
|
- update-dependencies
|
|
- run-unit-kernel-tests
|