Skip to content

Commit eef8bbf

Browse files
committed
[#2154] Extracted linting into standalone lint CI job.
1 parent a990413 commit eef8bbf

73 files changed

Lines changed: 2220 additions & 2313 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.circleci/config.yml

Lines changed: 106 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,106 @@ aliases:
108108
################################################################################
109109

110110
jobs:
111+
112+
# Lint job runs in parallel with database and build jobs.
113+
lint:
114+
<<: *runner_config
115+
steps:
116+
- checkout
117+
- *step_process_codebase_for_ci
118+
- *load_variables_from_dotenv
119+
120+
- run:
121+
name: Validate Composer configuration
122+
command: composer validate --strict || [ "${VORTEX_CI_COMPOSER_VALIDATE_IGNORE_FAILURE:-0}" -eq 1 ]
123+
124+
- *step_setup_remote_docker
125+
126+
- run:
127+
name: Login to container registry
128+
command: ./scripts/vortex/login-container-registry.sh
129+
130+
- run:
131+
name: Lint Dockerfiles with Hadolint
132+
command: |
133+
for file in $(find .docker -name 'Dockerfile' -o -name '*.dockerfile'); do
134+
echo "Linting ${file}" && cat "${file}" | docker run --rm -i hadolint/hadolint || [ "${VORTEX_CI_HADOLINT_IGNORE_FAILURE:-0}" -eq 1 ]
135+
done
136+
137+
- run:
138+
name: Lint Docker Compose files with DCLint
139+
command: docker run --rm -v "${PWD}":/app zavoloklom/dclint:3.1.0 . || [ "${VORTEX_CI_DCLINT_IGNORE_FAILURE:-0}" -eq 1 ]
140+
141+
- run:
142+
name: Build stack
143+
command: docker compose up --no-deps --detach cli
144+
145+
- run:
146+
name: Install development dependencies
147+
command: |
148+
docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli bash -c " \
149+
if [ -n \"${PACKAGE_TOKEN:-}\" ]; then export COMPOSER_AUTH='{\"github-oauth\": {\"github.com\": \"${PACKAGE_TOKEN-}\"}}'; fi && \
150+
COMPOSER_MEMORY_LIMIT=-1 composer --ansi install --prefer-dist"
151+
#;< TOOL_ESLINT_STYLELINT
152+
docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli bash -c "yarn install --frozen-lockfile"
153+
#;> TOOL_ESLINT_STYLELINT
154+
155+
- run:
156+
name: Audit Composer packages
157+
command: docker compose exec -T cli composer audit || [ "${VORTEX_CI_COMPOSER_AUDIT_IGNORE_FAILURE:-0}" -eq 1 ]
158+
159+
- run:
160+
name: Validate Composer configuration is normalized
161+
command: docker compose exec -T cli composer normalize --dry-run || [ "${VORTEX_CI_COMPOSER_NORMALIZE_IGNORE_FAILURE:-0}" -eq 1 ]
162+
163+
#;< TOOL_PHPCS
164+
- run:
165+
name: Lint code with PHPCS
166+
command: docker compose exec -T cli vendor/bin/phpcs || [ "${VORTEX_CI_PHPCS_IGNORE_FAILURE:-0}" -eq 1 ]
167+
#;> TOOL_PHPCS
168+
169+
#;< TOOL_PHPSTAN
170+
- run:
171+
name: Lint code with PHPStan
172+
command: docker compose exec -T cli vendor/bin/phpstan || [ "${VORTEX_CI_PHPSTAN_IGNORE_FAILURE:-0}" -eq 1 ]
173+
#;> TOOL_PHPSTAN
174+
175+
#;< TOOL_RECTOR
176+
- run:
177+
name: Lint code with Rector
178+
command: docker compose exec -T cli vendor/bin/rector --dry-run || [ "${VORTEX_CI_RECTOR_IGNORE_FAILURE:-0}" -eq 1 ]
179+
#;> TOOL_RECTOR
180+
181+
#;< TOOL_PHPMD
182+
- run:
183+
name: Lint code with PHPMD
184+
command: docker compose exec -T cli vendor/bin/phpmd . text phpmd.xml || [ "${VORTEX_CI_PHPMD_IGNORE_FAILURE:-0}" -eq 1 ]
185+
#;> TOOL_PHPMD
186+
187+
- run:
188+
name: Lint code with Twig CS Fixer
189+
command: docker compose exec -T cli vendor/bin/twig-cs-fixer || [ "${VORTEX_CI_TWIG_CS_FIXER_IGNORE_FAILURE:-0}" -eq 1 ]
190+
191+
#;< TOOL_BEHAT
192+
- run:
193+
name: Lint code with Gherkin Lint
194+
command: docker compose exec -T cli vendor/bin/gherkinlint lint tests/behat/features || [ "${VORTEX_CI_GHERKIN_LINT_IGNORE_FAILURE:-0}" -eq 1 ]
195+
#;> TOOL_BEHAT
196+
197+
#;< TOOL_ESLINT_STYLELINT
198+
- run:
199+
name: Lint module code with NodeJS linters
200+
command: docker compose exec -T cli bash -c "yarn run lint" || [ "${VORTEX_CI_NODEJS_LINT_IGNORE_FAILURE:-0}" -eq 1 ]
201+
#;> TOOL_ESLINT_STYLELINT
202+
203+
#;< DRUPAL_THEME
204+
- run:
205+
name: Lint theme code with NodeJS linters
206+
command: |
207+
[ "${VORTEX_FRONTEND_BUILD_SKIP:-0}" -eq 1 ] && exit 0
208+
docker compose exec -T cli bash -c "yarn --cwd=\${WEBROOT}/themes/custom/\${DRUPAL_THEME} run lint" || [ "${VORTEX_CI_NODEJS_LINT_IGNORE_FAILURE:-0}" -eq 1 ]
209+
#;> DRUPAL_THEME
210+
111211
#;< !PROVISION_TYPE_PROFILE
112212
# Database handling is a first step of the build.
113213
# - $VORTEX_CI_DB_CACHE_TIMESTAMP is used to determine if a fresh DB dump
@@ -245,20 +345,6 @@ jobs:
245345
name: Login to container registry
246346
command: ./scripts/vortex/login-container-registry.sh
247347

248-
- run:
249-
name: Lint Dockerfiles with Hadolint
250-
command: |
251-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
252-
for file in $(find .docker -name 'Dockerfile' -o -name '*.dockerfile'); do
253-
echo "Linting ${file}" && cat "${file}" | docker run --rm -i hadolint/hadolint || [ "${VORTEX_CI_HADOLINT_IGNORE_FAILURE:-0}" -eq 1 ]
254-
done
255-
256-
- run:
257-
name: Lint Docker Compose files with DCLint
258-
command: |
259-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
260-
docker run --rm -v "${PWD}":/app zavoloklom/dclint:3.1.0 . || [ "${VORTEX_CI_DCLINT_IGNORE_FAILURE:-0}" -eq 1 ]
261-
262348
- run:
263349
name: Build stack
264350
command: docker compose up --detach && docker builder prune --all --force
@@ -277,81 +363,6 @@ jobs:
277363
docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli bash -c " \
278364
if [ -n \"${PACKAGE_TOKEN:-}\" ]; then export COMPOSER_AUTH='{\"github-oauth\": {\"github.com\": \"${PACKAGE_TOKEN-}\"}}'; fi && \
279365
COMPOSER_MEMORY_LIMIT=-1 composer --ansi install --prefer-dist"
280-
#;< TOOL_ESLINT_STYLELINT
281-
docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli bash -c "yarn install --frozen-lockfile"
282-
#;> TOOL_ESLINT_STYLELINT
283-
284-
- run:
285-
name: Audit Composer packages
286-
command: docker compose exec -T cli composer audit || [ "${VORTEX_CI_COMPOSER_AUDIT_IGNORE_FAILURE:-0}" -eq 1 ]
287-
288-
- run:
289-
name: Validate Composer configuration is normalized
290-
command: |
291-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
292-
docker compose exec -T cli composer normalize --dry-run || [ "${VORTEX_CI_COMPOSER_NORMALIZE_IGNORE_FAILURE:-0}" -eq 1 ]
293-
294-
#;< TOOL_PHPCS
295-
- run:
296-
name: Lint code with PHPCS
297-
command: |
298-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
299-
docker compose exec -T cli vendor/bin/phpcs || [ "${VORTEX_CI_PHPCS_IGNORE_FAILURE:-0}" -eq 1 ]
300-
#;> TOOL_PHPCS
301-
302-
#;< TOOL_PHPSTAN
303-
- run:
304-
name: Lint code with PHPStan
305-
command: |
306-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
307-
docker compose exec -T cli vendor/bin/phpstan || [ "${VORTEX_CI_PHPSTAN_IGNORE_FAILURE:-0}" -eq 1 ]
308-
#;> TOOL_PHPSTAN
309-
310-
#;< TOOL_RECTOR
311-
- run:
312-
name: Lint code with Rector
313-
command: |
314-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
315-
docker compose exec -T cli vendor/bin/rector --dry-run || [ "${VORTEX_CI_RECTOR_IGNORE_FAILURE:-0}" -eq 1 ]
316-
#;> TOOL_RECTOR
317-
318-
#;< TOOL_PHPMD
319-
- run:
320-
name: Lint code with PHPMD
321-
command: |
322-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
323-
docker compose exec -T cli vendor/bin/phpmd . text phpmd.xml || [ "${VORTEX_CI_PHPMD_IGNORE_FAILURE:-0}" -eq 1 ]
324-
#;> TOOL_PHPMD
325-
326-
- run:
327-
name: Lint code with Twig CS Fixer
328-
command: |
329-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
330-
docker compose exec -T cli vendor/bin/twig-cs-fixer || [ "${VORTEX_CI_TWIG_CS_FIXER_IGNORE_FAILURE:-0}" -eq 1 ]
331-
332-
#;< TOOL_BEHAT
333-
- run:
334-
name: Lint code with Gherkin Lint
335-
command: |
336-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
337-
docker compose exec -T cli vendor/bin/gherkinlint lint tests/behat/features || [ "${VORTEX_CI_GHERKIN_LINT_IGNORE_FAILURE:-0}" -eq 1 ]
338-
#;> TOOL_BEHAT
339-
340-
#;< TOOL_ESLINT_STYLELINT
341-
- run:
342-
name: Lint module code with NodeJS linters
343-
command: |
344-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
345-
docker compose exec -T cli bash -c "yarn run lint" || [ "${VORTEX_CI_NODEJS_LINT_IGNORE_FAILURE:-0}" -eq 1 ]
346-
#;> TOOL_ESLINT_STYLELINT
347-
348-
#;< DRUPAL_THEME
349-
- run:
350-
name: Lint theme code with NodeJS linters
351-
command: |
352-
{ [ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ]; } || [ "${VORTEX_FRONTEND_BUILD_SKIP:-0}" -eq 1 ] && exit 0
353-
docker compose exec -T cli bash -c "yarn --cwd=\${WEBROOT}/themes/custom/\${DRUPAL_THEME} run lint" || [ "${VORTEX_CI_NODEJS_LINT_IGNORE_FAILURE:-0}" -eq 1 ]
354-
#;> DRUPAL_THEME
355366
356367
- run:
357368
name: Provision site
@@ -578,6 +589,10 @@ workflows:
578589
tags:
579590
only: /.*/
580591
#;> !PROVISION_TYPE_PROFILE
592+
- lint:
593+
filters:
594+
tags:
595+
only: /.*/
581596
- build:
582597
#;< !PROVISION_TYPE_PROFILE
583598
requires:
@@ -590,6 +605,7 @@ workflows:
590605
- deploy:
591606
requires:
592607
- build
608+
- lint
593609
filters:
594610
branches:
595611
# Allowed branches:
@@ -608,6 +624,7 @@ workflows:
608624
- deploy-tags:
609625
requires:
610626
- build
627+
- lint
611628
filters:
612629
branches:
613630
ignore: /.*/

.circleci/vortex-test-common.yml

Lines changed: 0 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -211,20 +211,6 @@ jobs:
211211
name: Login to container registry
212212
command: ./scripts/vortex/login-container-registry.sh
213213

214-
- run:
215-
name: Lint Dockerfiles with Hadolint
216-
command: |
217-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
218-
for file in $(find .docker -name 'Dockerfile' -o -name '*.dockerfile'); do
219-
echo "Linting ${file}" && cat "${file}" | docker run --rm -i hadolint/hadolint || [ "${VORTEX_CI_HADOLINT_IGNORE_FAILURE:-0}" -eq 1 ]
220-
done
221-
222-
- run:
223-
name: Lint Docker Compose files with DCLint
224-
command: |
225-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
226-
docker run --rm -v "${PWD}":/app zavoloklom/dclint:3.1.0 . || [ "${VORTEX_CI_DCLINT_IGNORE_FAILURE:-0}" -eq 1 ]
227-
228214
- run:
229215
name: Build stack
230216
command: docker compose up --detach && docker builder prune --all --force
@@ -243,81 +229,6 @@ jobs:
243229
docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli bash -c " \
244230
if [ -n \"${PACKAGE_TOKEN:-}\" ]; then export COMPOSER_AUTH='{\"github-oauth\": {\"github.com\": \"${PACKAGE_TOKEN-}\"}}'; fi && \
245231
COMPOSER_MEMORY_LIMIT=-1 composer --ansi install --prefer-dist"
246-
#;< TOOL_ESLINT_STYLELINT
247-
docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli bash -c "yarn install --frozen-lockfile"
248-
#;> TOOL_ESLINT_STYLELINT
249-
250-
- run:
251-
name: Audit Composer packages
252-
command: docker compose exec -T cli composer audit || [ "${VORTEX_CI_COMPOSER_AUDIT_IGNORE_FAILURE:-0}" -eq 1 ]
253-
254-
- run:
255-
name: Validate Composer configuration is normalized
256-
command: |
257-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
258-
docker compose exec -T cli composer normalize --dry-run || [ "${VORTEX_CI_COMPOSER_NORMALIZE_IGNORE_FAILURE:-0}" -eq 1 ]
259-
260-
#;< TOOL_PHPCS
261-
- run:
262-
name: Lint code with PHPCS
263-
command: |
264-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
265-
docker compose exec -T cli vendor/bin/phpcs || [ "${VORTEX_CI_PHPCS_IGNORE_FAILURE:-0}" -eq 1 ]
266-
#;> TOOL_PHPCS
267-
268-
#;< TOOL_PHPSTAN
269-
- run:
270-
name: Lint code with PHPStan
271-
command: |
272-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
273-
docker compose exec -T cli vendor/bin/phpstan || [ "${VORTEX_CI_PHPSTAN_IGNORE_FAILURE:-0}" -eq 1 ]
274-
#;> TOOL_PHPSTAN
275-
276-
#;< TOOL_RECTOR
277-
- run:
278-
name: Lint code with Rector
279-
command: |
280-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
281-
docker compose exec -T cli vendor/bin/rector --dry-run || [ "${VORTEX_CI_RECTOR_IGNORE_FAILURE:-0}" -eq 1 ]
282-
#;> TOOL_RECTOR
283-
284-
#;< TOOL_PHPMD
285-
- run:
286-
name: Lint code with PHPMD
287-
command: |
288-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
289-
docker compose exec -T cli vendor/bin/phpmd . text phpmd.xml || [ "${VORTEX_CI_PHPMD_IGNORE_FAILURE:-0}" -eq 1 ]
290-
#;> TOOL_PHPMD
291-
292-
- run:
293-
name: Lint code with Twig CS Fixer
294-
command: |
295-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
296-
docker compose exec -T cli vendor/bin/twig-cs-fixer || [ "${VORTEX_CI_TWIG_CS_FIXER_IGNORE_FAILURE:-0}" -eq 1 ]
297-
298-
#;< TOOL_BEHAT
299-
- run:
300-
name: Lint code with Gherkin Lint
301-
command: |
302-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
303-
docker compose exec -T cli vendor/bin/gherkinlint lint tests/behat/features || [ "${VORTEX_CI_GHERKIN_LINT_IGNORE_FAILURE:-0}" -eq 1 ]
304-
#;> TOOL_BEHAT
305-
306-
#;< TOOL_ESLINT_STYLELINT
307-
- run:
308-
name: Lint module code with NodeJS linters
309-
command: |
310-
[ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ] && exit 0
311-
docker compose exec -T cli bash -c "yarn run lint" || [ "${VORTEX_CI_NODEJS_LINT_IGNORE_FAILURE:-0}" -eq 1 ]
312-
#;> TOOL_ESLINT_STYLELINT
313-
314-
#;< DRUPAL_THEME
315-
- run:
316-
name: Lint theme code with NodeJS linters
317-
command: |
318-
{ [ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ] && [ "${CIRCLE_NODE_INDEX:-0}" -ne 0 ]; } || [ "${VORTEX_FRONTEND_BUILD_SKIP:-0}" -eq 1 ] && exit 0
319-
docker compose exec -T cli bash -c "yarn --cwd=\${WEBROOT}/themes/custom/\${DRUPAL_THEME} run lint" || [ "${VORTEX_CI_NODEJS_LINT_IGNORE_FAILURE:-0}" -eq 1 ]
320-
#;> DRUPAL_THEME
321232
322233
- run:
323234
name: Provision site

0 commit comments

Comments
 (0)