-
Notifications
You must be signed in to change notification settings - Fork 5
/
config.yml
155 lines (143 loc) · 4.9 KB
/
config.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Runs a set of CI jobs for Drupal 8 projects.
# Reusable steps.
## Defines images and working directory.
defaults: &defaults
docker:
- image: juampynr/drupal8ci:latest
- image: selenium/standalone-chrome-debug:3.7.1-beryllium
- image: mariadb:10.3
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 1
working_directory: /var/www/html
## Defines the cache restoring mechanism.
restore_cache: &restore_cache
# We use the composer.json as a way to determine if we can cache our build.
keys:
- v1-dependencies-{{ checksum "composer.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
## Defines the cache saving mechanism.
save_cache: &save_cache
paths:
- ./vendor
key: v1-dependencies-{{ checksum "composer.json" }}
#Jobs
## Job to run Unit and Kernel tests.
unit_kernel_tests: &unit_kernel_tests
<<: *defaults
steps:
- checkout
- restore_cache: *restore_cache
- run:
name: Set up and run Unit and Kernel tests
command: |
apache2-foreground&
robo install:dependencies
robo setup:drupal || true
cp .circleci/config/phpunit.xml web/core/
mkdir -p artifacts/phpunit
chmod -R 777 artifacts
cd web
sudo -E -u www-data ../vendor/bin/phpunit -c core --debug --verbose --log-junit ../artifacts/phpunit/phpunit.xml modules/custom
- store_test_results:
path: /var/www/html/artifacts/phpunit
- store_artifacts:
path: /var/www/html/artifacts
- save_cache: *save_cache
## Job to run the update path and Behat tests.
behat_tests: &behat_tests
<<: *defaults
steps:
- checkout
- restore_cache: *restore_cache
- run:
name: Wait for the database service to be ready
command: dockerize -wait tcp://localhost:3306 -timeout 1m
- run:
name: Install database and run the update path
command: |
robo install:dependencies
robo setup:drupal || true
cd web
wget -O dump.sql $DB_DUMP_URL
../vendor/bin/drush sql-cli < dump.sql
../vendor/bin/drush updatedb -y -v
../vendor/bin/drush config-import -y -v
cd ..
- save_cache: *save_cache
- run:
name: Set up and run Behat tests
command: |
apache2-foreground&
cp .circleci/config/behat.yml tests/
chown -R www-data:www-data /var/www/html/web/sites/default/files
vendor/bin/behat --verbose -c tests/behat.yml
- store_test_results:
path: /var/www/html/artifacts/behat
- store_artifacts:
path: /var/www/html/artifacts
## Job to check coding standards.
code_sniffer: &code_sniffer
<<: *defaults
steps:
- checkout
- restore_cache: *restore_cache
- run:
name: Set up and inspect coding standards
command: |
robo install:dependencies
vendor/bin/phpcs --config-set installed_paths vendor/drupal/coder/coder_sniffer
mkdir -p artifacts/phpcs
vendor/bin/phpcs --standard=Drupal --report=junit --report-junit=artifacts/phpcs/phpcs.xml web/modules/custom
vendor/bin/phpcs --standard=DrupalPractice --report=junit --report-junit=artifacts/phpcs/phpcs.xml web/modules/custom
- store_test_results:
path: /var/www/html/artifacts/phpcs
- store_artifacts:
path: /var/www/html/artifacts
- save_cache: *save_cache
## Job to check test coverage.
code_coverage: &code_coverage
<<: *defaults
steps:
- checkout
- restore_cache: *restore_cache
- run:
name: Set up and inspect code coverage
environment:
SIMPLETEST_BASE_URL: "http://localhost"
SIMPLETEST_DB: "sqlite://localhost//tmp/drupal.sqlite"
BROWSERTEST_OUTPUT_DIRECTORY: "/var/www/html/sites/simpletest"
command: |
robo install:dependencies
robo setup:drupal || true
cp .circleci/config/phpunit.xml web/core/
mkdir -p artifacts/coverage-xml
mkdir -p artifacts/coverage-html
chmod -R 777 artifacts
cd web
timeout 60m sudo -E -u www-data ../vendor/bin/phpunit --verbose --debug -c core --coverage-xml ../artifacts/coverage-xml --coverage-html ../artifacts/coverage-html --testsuite nonfunctional modules/custom
cd ../
tar czf artifacts/coverage.tar.gz -C artifacts coverage-html coverage-xml
- store_artifacts:
path: /var/www/html/artifacts
- save_cache: *save_cache
# Declare all of the jobs we should run.
version: 2
jobs:
run-unit-kernel-tests:
<<: *unit_kernel_tests
run-behat-tests:
<<: *behat_tests
run-code-sniffer:
<<: *code_sniffer
run-code-coverage:
<<: *code_coverage
# Declare a workflow that runs all of our jobs in parallel.
workflows:
version: 2
test_and_lint:
jobs:
- run-unit-kernel-tests
- run-behat-tests
- run-code-sniffer
- run-code-coverage