forked from civictheme/monorepo-drupal
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.ahoy.yml
285 lines (236 loc) · 12.7 KB
/
.ahoy.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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
#
# Ahoy configuration file.
# http://www.ahoycli.com/
#
# Provides development experience shortcuts to work with the stack.
# Any command can be copy-pasted directly into terminal and ran without using
# Ahoy.
#
# Do not add values directly into this file. Use .env file instead.
# Run `ahoy up cli` to apply environment variables changes to containers.
---
ahoyapi: v2
commands:
build:
usage: Build or rebuild the project.
cmd: |
ahoy confirm "Running this command will remove your current database and files. Are you sure?" &&
./scripts/drevops/build.sh
info:
usage: Show information about this project.
cmd: |
docker-compose exec \
-e COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME:-${PWD##*/}} \
-e DREVOPS_HOST_DB_PORT=$(docker port $(docker-compose ps -q mariadb 2>/dev/null) 3306 2>/dev/null | cut -d : -f 2) \
-e DREVOPS_DRUPAL_SHOW_LOGIN_LINK=${DREVOPS_DRUPAL_SHOW_LOGIN_LINK} \
cli ./scripts/drevops/info.sh "$@"
db:
usage: Open DB in Sequel Ace.
cmd: |
uname -a | grep -i -q darwin && mdfind -name 'Sequel Ace'|grep -q "Ace" \
&& DREVOPS_HOST_DB_PORT="$(docker port $(docker-compose ps -q mariadb 2>/dev/null) 3306 2>/dev/null | cut -d : -f 2)" \
&& open "mysql://${DREVOPS_MARIADB_USER}:${DREVOPS_MARIADB_PASSWORD}@127.0.0.1:${DREVOPS_HOST_DB_PORT}/drupal" -a "Sequel Ace" \
|| echo "Not a supported OS or Sequel Ace is not installed."
# ----------------------------------------------------------------------------
# Docker commands.
# ----------------------------------------------------------------------------
up:
usage: Build and start Docker containers.
cmd: |
docker-compose up -d "$@" && if docker-compose logs | grep -q "\[Error\]"; then exit 1; fi
mkdir -p docroot/sites/default/files && docker-compose port cli 35729 | cut -d : -f 2 | xargs -I{} ahoy cli 'echo {} > /app/docroot/sites/default/files/livereload.sock'
down:
usage: Stop Docker containers and remove container, images, volumes and networks.
cmd: |
ahoy confirm "Running this command will remove your current database. Are you sure?" &&
if [ -f "docker-compose.yml" ]; then docker-compose down --volumes > /dev/null 2>&1; fi
start:
usage: Start existing Docker containers.
cmd: |
docker-compose start "$@"
mkdir -p docroot/sites/default/files && docker-compose port cli 35729 | cut -d : -f 2 | xargs -I{} ahoy cli 'echo {} > /app/docroot/sites/default/files/livereload.sock'
stop:
usage: Stop running Docker containers.
cmd: docker-compose stop "$@"
restart:
usage: Restart stopped or running Docker containers.
cmd: docker-compose restart "$@"
logs:
usage: Show Docker logs for services.
cmd: docker-compose logs "$@"
pull:
usage: Pull latest Docker images.
cmd: if [ ! -z "$(docker image ls -q)" ]; then docker image ls --format \"{{.Repository}}:{{.Tag}}\" | grep uselagoon/ | grep -v none | xargs -n1 docker pull -q | cat; fi
cli:
usage: Start a shell or run a command inside the CLI service container.
# This will drop into shell if no arguments are supplied to this command.
# If arguments supplied, a new shell with DREVOPS_*, COMPOSE_* and TERM
# environment variables will be started. This allows passing of the environment
# variables to Ahoy commands which will then be forwarded to the container.
# Escape double quotes with \" (slash double-quote) when passing arguments with spaces.
cmd: if \[ "${#}" -ne 0 \]; then docker-compose exec $(env | cut -f1 -d= | grep "DREVOPS_\|COMPOSE_\|TERM" | sed 's/^/-e /') -T cli bash -c "$*"; else docker-compose exec cli bash; fi
composer:
usage: Run Composer commands in the CLI service container.
cmd: docker-compose exec -T cli composer "$@"
drush:
usage: Run Drush commands in the CLI service container.
cmd: docker-compose exec -T cli bash -c "drush -l ${DREVOPS_LOCALDEV_URL} $*"
flush-redis:
usage: Flush Redis cache.
cmd: docker-compose exec redis redis-cli flushall
# ----------------------------------------------------------------------------
# Application commands.
# ----------------------------------------------------------------------------
login:
usage: Login to a website.
# Unblock user 1 and generate a one time login link.
cmd: ahoy cli ./scripts/drevops/drupal-login.sh
reload-db:
usage: Reload the database container using local database image.
cmd: |
ahoy confirm "Running this command will replace your current database. Are you sure?" &&
docker-compose rm -f -s -v mariadb && ahoy up -- --build mariadb && ahoy install-site && ahoy info && ahoy login ||
echo "The operation was canceled."
install-site:
usage: Install a site.
cmd: |
docker-compose exec \
-e DREVOPS_DRUPAL_VERSION=${DREVOPS_DRUPAL_VERSION:-} \
-e DREVOPS_DRUPAL_INSTALL_OPERATIONS_SKIP=${DREVOPS_DRUPAL_INSTALL_OPERATIONS_SKIP:-} \
-e DREVOPS_DRUPAL_INSTALL_OVERRIDE_EXISTING_DB=${DREVOPS_DRUPAL_INSTALL_OVERRIDE_EXISTING_DB:-0} \
-e DREVOPS_DRUPAL_PROFILE=${DREVOPS_DRUPAL_PROFILE:-standard} \
-e CIVICTHEME_SUBTHEME_ACTIVATION_SKIP=${CIVICTHEME_SUBTHEME_ACTIVATION_SKIP:-0} \
-e CIVICTHEME_SUBTHEME_FE_SKIP=${CIVICTHEME_SUBTHEME_FE_SKIP:-} \
-e CIVICTHEME_GENERATED_CONTENT_CREATE_SKIP=${CIVICTHEME_GENERATED_CONTENT_CREATE_SKIP:-} \
-e CIVICTHEME_CONTENT_PROFILE=${CIVICTHEME_CONTENT_PROFILE:-} \
-T cli ./scripts/drevops/drupal-install-site.sh
export-db:
usage: Export database dump or database image (DREVOPS_DB_DOCKER_IMAGE variable must be set).
cmd: |
[ -z "${DREVOPS_DB_DOCKER_IMAGE}" ] && docker-compose exec -e DREVOPS_DB_DIR=${DREVOPS_DB_DIR:-} -T cli ./scripts/drevops/export-db-file.sh "$@" || \
( DREVOPS_DB_EXPORT_DOCKER_IMAGE="${DREVOPS_DB_DOCKER_IMAGE}" ./scripts/drevops/export-db-docker.sh "$@";
if [ "${DREVOPS_EXPORT_DB_DOCKER_DEPLOY_PROCEED}" = "1" ]; then DREVOPS_DEPLOY_DOCKER_MAP=mariadb=${DREVOPS_DB_DOCKER_IMAGE} DREVOPS_DEPLOY_DOCKER_IMAGE_TAG=${DREVOPS_DOCKER_IMAGE_TAG} ./scripts/drevops/deploy-docker.sh; fi )
pull-db:
usage: Download database image with the latest nightly dump. Run "ahoy reload-db" to reload DB in the running stack.
cmd: |
[ -n "${DREVOPS_DB_DOCKER_IMAGE}" ] && docker pull $DREVOPS_DB_DOCKER_IMAGE
clean:
usage: Remove Docker containers and all build files.
cmd: ahoy down && ./scripts/drevops/clean.sh
reset:
usage: "Remove containers, all build, uncommitted files."
cmd: |
ahoy confirm "All containers, build and uncomitted files will be removed, repository will be reset to the last commit. Proceed?" \
&& ahoy clean && ./scripts/drevops/reset.sh || echo "The operation was canceled."
fei:
usage: Install front-end assets.
cmd: |
[ "${CIVICTHEME_LIBRARY_INSTALL_SKIP}" != "1" ] && ahoy cli "npm --prefix docroot/themes/contrib/${DREVOPS_DRUPAL_THEME}/civictheme_library install"
ahoy cli "npm --prefix docroot/themes/contrib/${DREVOPS_DRUPAL_THEME} install"
fe:
usage: Build front-end assets.
cmd: |
[ "${CIVICTHEME_LIBRARY_INSTALL_SKIP}" != "1" ] && ahoy cli "cd docroot/themes/contrib/${DREVOPS_DRUPAL_THEME}/civictheme_library && npm run build"
ahoy cli "cd docroot/themes/contrib/${DREVOPS_DRUPAL_THEME} && npm run build"
lint:
usage: Lint back-end and front-end code.
cmd: ahoy cli ./scripts/drevops/lint.sh "$@"
lint-be:
usage: Lint back-end code.
cmd: ahoy cli ./scripts/drevops/lint.sh be
lint-fe:
usage: Lint front-end code.
cmd: ahoy cli ./scripts/drevops/lint.sh fe
lint-config:
usage: Lint config
cmd: ahoy cli ./scripts/drevops/lint.sh config
test:
usage: Run all tests.
cmd: ahoy test-unit && ahoy test-kernel && ahoy test-functional && ahoy test-bdd
test-fe:
usage: Run front-end tests.
cmd: ahoy cli "DREVOPS_TEST_TYPE=fe DREVOPS_TEST_REPORTS_DIR=${DREVOPS_TEST_REPORTS_DIR} ./scripts/drevops/test.sh $@"
test-unit:
usage: Run PhpUnit unit tests.
cmd: ahoy cli "DREVOPS_TEST_TYPE=unit DREVOPS_TEST_REPORTS_DIR=${DREVOPS_TEST_REPORTS_DIR} ./scripts/drevops/test.sh $@"
test-kernel:
usage: Run PhpUnit kernel tests.
cmd: ahoy cli "DREVOPS_TEST_TYPE=kernel DREVOPS_TEST_ARTIFACT_DIR=${DREVOPS_TEST_ARTIFACT_DIR} DREVOPS_TEST_REPORTS_DIR=${DREVOPS_TEST_REPORTS_DIR} ./scripts/drevops/test.sh $@"
test-functional:
usage: Run PhpUnit functional tests.
cmd: ahoy cli "DREVOPS_TEST_TYPE=functional DREVOPS_TEST_ARTIFACT_DIR=${DREVOPS_TEST_ARTIFACT_DIR} DREVOPS_TEST_REPORTS_DIR=${DREVOPS_TEST_REPORTS_DIR} ./scripts/drevops/test.sh $@"
test-bdd:
usage: Run BDD tests.
cmd: ahoy cli "DREVOPS_TEST_TYPE=bdd DREVOPS_TEST_ARTIFACT_DIR=${DREVOPS_TEST_ARTIFACT_DIR} DREVOPS_TEST_REPORTS_DIR=${DREVOPS_TEST_REPORTS_DIR} DREVOPS_TEST_BEHAT_PROFILE=${DREVOPS_TEST_BEHAT_PROFILE:-} DREVOPS_TEST_BEHAT_FORMAT=${DREVOPS_TEST_BEHAT_FORMAT:-} DREVOPS_TEST_BEHAT_PARALLEL_INDEX=${DREVOPS_TEST_BEHAT_PARALLEL_INDEX:-} BEHAT_SCREENSHOT_PURGE=${BEHAT_SCREENSHOT_PURGE-} DREVOPS_TEST_BEHAT_TAGS=${DREVOPS_TEST_BEHAT_TAGS-} ./scripts/drevops/test.sh $@"
test-bats:
usage: Run Bats tests (host only).
cmd: bats --tap tests/bats/
debug:
usage: Enable PHP Xdebug.
cmd: ahoy cli php -v | grep -q Xdebug || XDEBUG_ENABLE=true ahoy up cli php nginx && ahoy cli php -v | grep -q Xdebug && echo "Enabled debug confguration. Use 'ahoy up' to disable."
export-config:
usage: Export theme config.
cmd: |
ahoy cli "./scripts/update-theme-config.sh"
ahoy drush cde civictheme_dev || true
if ahoy drush pm:list --status=Enabled --field=name | grep -q 'cs_generated_content'; then
ahoy drush cde cs_generated_content || true
fi
export-content:
usage: Export content (run with CIVICTHEME_CONTENT_PROFILE=corporate ahoy install-site) .
cmd: |
ahoy confirm "This will uninstall several modules and users. Proceed?" \
&& ahoy cli "CIVICTHEME_CONTENT_PROFILE=${CIVICTHEME_CONTENT_PROFILE:-default} ./scripts/update-default-content.sh" || echo "The operation was canceled."
deploy:
usage: Run remote deployment procedures.
cmd: |
ahoy confirm "Deployment usually runs in CI. Are you sure you want to proceed with manual deployment? (Run as DREVOPS_DEPLOY_PROCEED=1 ahoy deploy [type1,[type2..]], where [type] is 'code', 'docker', 'webhook')" \
&& ./scripts/drevops/deploy.sh "$@" || echo "The operation was canceled."
github-labels:
usage: Update project's GitHub labels.
cmd: ./scripts/drevops/github-labels.sh "$@"
doctor:
usage: Find problems with current project setup.
cmd: ./scripts/drevops/doctor.sh "$@"
update:
usage: Update development stack.
cmd: ahoy confirm "Some committed files may become overwritten. Proceed?" && ./scripts/drevops/update.sh || echo "The operation was canceled."
local:
usage: Custom local commands. See `ahoy local help`.
cmd: |
if [ -f .ahoy.local.yml ]; then ahoy -f ".ahoy.local.yml" "$@"; else echo ".ahoy.local.yml does not exist. Copy default.ahoy.local.yml to .ahoy.local.yml and rerun this command."; fi
# ----------------------------------------------------------------------------
# Utilities.
# ----------------------------------------------------------------------------
confirm:
cmd: |
[ -z "$DREVOPS_AHOY_CONFIRM_RESPONSE" ] && read -r -p "$1 [y/N] " DREVOPS_AHOY_CONFIRM_RESPONSE; [ "$DREVOPS_AHOY_CONFIRM_RESPONSE" = "y" ] || [ "$DREVOPS_AHOY_CONFIRM_RESPONSE" = true ]
hide: true
# Override entrypoint to alter default behaviour of Ahoy.
entrypoint:
# Run all commands in Bash.
- bash
# Read the commands from the string.
- -c
# Exit the script if any statement returns a non-true return value.
- -e
# Read variables from .env file, respecting existing environment variable values.
#
# It is important to understand that variables set in .env file are already
# available inside of the containers after stack is running (as a part of
# docker-compose functionality), so most of the commands are using these
# values taken from containers.
#
# However, since docker does not support changes to environment variables in
# running containers without restarting containers, we are adding this
# mechanism of reading variables here to allow adjustments of some variables
# (like PHPCS scan targets) without the need to restart containers.
#
# As a rule of thumb, use `ahoy up cli` to apply changes to variables.
- |
t=$(mktemp) && export -p > "$t" && set -a && . ./.env && if [ -f ./.env.local ];then . ./.env.local;fi && set +a && . "$t" && rm "$t" && unset t
bash -e -c "$0" "$@"
# Replaced with your command.
- '{{cmd}}'
# The name of the command that was run (available as $0).
- '{{name}}'