Update CI
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
# Full-stack parity harness for MageSail integration tests (Tier 2). See docs/ci-full-stack.md.
|
||||
# From repo root: docker compose -f docker/integration/docker-compose.yml up -d --build
|
||||
#
|
||||
# Bind mount: set MAGE_ROOT to the absolute path of the MageSail repository root (scripts/ci-integration.sh
|
||||
# does this). If unset, ../.. is resolved from this file’s directory (docker/integration → repo root).
|
||||
# See docs/ci-full-stack.md if /workspace/scripts/... is missing inside the container.
|
||||
|
||||
services:
|
||||
db:
|
||||
@@ -110,7 +113,7 @@ services:
|
||||
RABBITMQ_PASSWORD: ${RABBITMQ_PASSWORD:-rabbitmq_ci}
|
||||
RABBITMQ_VHOST: ${RABBITMQ_VHOST:-magento_ci}
|
||||
volumes:
|
||||
- ../..:/workspace
|
||||
- ${MAGE_ROOT:-../..}:/workspace
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
|
||||
@@ -63,15 +63,20 @@ export COMPOSER_AUTH='{"http-basic":{"repo.magento.com":{"username":"…","passw
|
||||
./scripts/ci-integration.sh
|
||||
```
|
||||
|
||||
Or step-by-step:
|
||||
Or step-by-step (from repo root; **`MAGE_ROOT` must be the absolute path to this repository** so `/workspace` in the container matches your tree):
|
||||
|
||||
```bash
|
||||
export MAGE_ROOT="$(pwd)"
|
||||
export COMPOSER_AUTH='{"http-basic":{"repo.magento.com":{"username":"…","password":"…"}}}'
|
||||
docker compose -f docker/integration/docker-compose.yml build magento
|
||||
docker compose -f docker/integration/docker-compose.yml up -d
|
||||
docker compose -f docker/integration/docker-compose.yml exec -e COMPOSER_AUTH -e WORKSPACE=/workspace magento \
|
||||
docker compose -f docker/integration/docker-compose.yml exec -T \
|
||||
-e COMPOSER_AUTH -e WORKSPACE=/workspace magento \
|
||||
bash /workspace/scripts/integration/run-inside-container.sh
|
||||
```
|
||||
|
||||
If you see **No such file** for that script, your bind mount is wrong: set `export MAGE_ROOT=/absolute/path/to/MageSail` and run `docker compose ... down` then `up -d` again.
|
||||
|
||||
First `setup:install` can take **15–30+ minutes**; subsequent runs reuse `integration/magento/vendor` and `app/etc/config.php` on the mounted workspace.
|
||||
|
||||
## Parity checklist vs server `env.php`
|
||||
@@ -110,6 +115,7 @@ Groups: `magesail_integration`, `magesail_nginx`, `magesail_tunnel`, `magesail_e
|
||||
| `nginx -t` fails | Map file missing or bad syntax; confirm `/usr/sbin/nginx` in container |
|
||||
| OpenSearch OOM | Lower heap in compose or give runner more RAM |
|
||||
| `mount ... nginx-ci.conf ... not a directory` | Older compose used a **file** bind; Docker may have created a **directory** named `nginx-ci.conf`. Remove it (`rm -rf docker/integration/nginx-ci.conf`), pull latest compose (uses [`docker/integration/web-nginx/`](../docker/integration/web-nginx/) mounted on `/etc/nginx/conf.d`), then `docker compose up` again |
|
||||
| `/workspace/scripts/integration/run-inside-container.sh: No such file` | Wrong bind mount: export **`MAGE_ROOT`** to the **absolute** MageSail repo root before `compose up` (see [`scripts/ci-integration.sh`](../scripts/ci-integration.sh)), then `docker compose ... down && up -d`. Or your checkout is missing `scripts/integration/` (pull latest). |
|
||||
|
||||
## Further reading
|
||||
|
||||
|
||||
@@ -8,6 +8,13 @@ cd "$ROOT"
|
||||
|
||||
COMPOSE_FILE="${COMPOSE_FILE:-docker/integration/docker-compose.yml}"
|
||||
export COMPOSE_PROJECT_NAME="${COMPOSE_PROJECT_NAME:-magesail_ci}"
|
||||
# Absolute mount avoids “No such file” for /workspace/scripts/... when Compose resolves ../.. from the wrong base.
|
||||
export MAGE_ROOT="${MAGE_ROOT:-$ROOT}"
|
||||
|
||||
if [ ! -f "${ROOT}/scripts/integration/run-inside-container.sh" ]; then
|
||||
echo "ERROR: missing ${ROOT}/scripts/integration/run-inside-container.sh (wrong repo or incomplete checkout)." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "::group::Docker compose build & up"
|
||||
docker compose -f "$COMPOSE_FILE" build magento
|
||||
@@ -20,5 +27,12 @@ docker compose -f "$COMPOSE_FILE" exec -T \
|
||||
-e COMPOSER_AUTH="${COMPOSER_AUTH:-}" \
|
||||
-e WORKSPACE=/workspace \
|
||||
magento \
|
||||
bash /workspace/scripts/integration/run-inside-container.sh
|
||||
bash -c 'set -euo pipefail
|
||||
if [ ! -f /workspace/scripts/integration/run-inside-container.sh ]; then
|
||||
echo "ERROR: /workspace/scripts/integration/run-inside-container.sh not found inside the container." >&2
|
||||
echo "MAGE_ROOT on host should be the MageSail repo root (export MAGE_ROOT before compose). Listing /workspace:" >&2
|
||||
ls -la /workspace 2>&1 || true
|
||||
exit 1
|
||||
fi
|
||||
exec bash /workspace/scripts/integration/run-inside-container.sh'
|
||||
echo "::endgroup::"
|
||||
|
||||
Reference in New Issue
Block a user