v1/web/modules/contrib/varnish_purge/.circleci/config.yml

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