mirror of
https://github.com/graycoreio/github-actions-magento2.git
synced 2026-06-08 19:46:41 +00:00
72 lines
4.0 KiB
Markdown
72 lines
4.0 KiB
Markdown
# Configure Service Nginx
|
|
|
|
A GitHub Action that pushes a Magento-aware nginx configuration into an **already-running nginx service container**, reloads it, and waits for the container's healthcheck to pass.
|
|
|
|
The action does **not** start nginx. It assumes the calling workflow declared nginx as a `services:` container (typically alongside `php-fpm`, and other mandatory Magento services).
|
|
|
|
The shipped `default.conf` is a thin outer wrapper that defines a `fastcgi_backend` upstream pointing at `php-fpm:9000`, sets `$MAGE_ROOT`, and includes Magento's own `nginx.conf.sample` from your own Magento install. All real routing rules come from Magento's bundled file.
|
|
|
|
## When to use this
|
|
|
|
Use this action when you have a workflow that:
|
|
|
|
1. Boots nginx as `services:` containers with the workspace bind-mounted at `/var/www/html`, and
|
|
2. Wants those containers to actually serve a Magento store you've already installed into the workspace (e.g. for end-to-end smoke tests, integration tests, or any HTTP-driven check).
|
|
|
|
You do **not** need this action if:
|
|
|
|
- You're not running nginx at all (unit tests, coding standards, static analysis).
|
|
- nginx is started by something other than a GitHub Actions `services:` block
|
|
- You've already configured nginx some other way and don't need a Magento-ready outer config.
|
|
|
|
## Prerequisites
|
|
|
|
- An nginx service container is running on the same Docker host as the runner, with an image matching the `image` input.
|
|
- A `php-fpm` container, the included `default.conf` will set up a fast-cgi backend to `php-fpm:9000`.
|
|
- The runner's workspace (`$GITHUB_WORKSPACE`) is bind-mounted into the nginx container at `/var/www/html`.
|
|
- A Magento install exists at `${{ inputs.magento_path }}` relative to the workspace, with `nginx.conf.sample` present (it ships with Magento by default after `composer install`).
|
|
|
|
## Inputs
|
|
|
|
| Input | Required | Default | Description |
|
|
| ------------------------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
| `container_id` | Yes | — | The ID of the running nginx service container. Pass `${{ job.services.nginx.id }}` (replace `nginx` with whatever you named the service). |
|
|
| `magento_path` | No | `.` | Path to the Magento store, relative to the GitHub workspace. Combined with the `/var/www/html` mount prefix to compute the in-container `MAGE_ROOT`. |
|
|
| `health_timeout_seconds` | No | `10` | How long to wait for nginx to report `healthy` after the config is pushed and the container restarts. |
|
|
|
|
## Usage
|
|
|
|
```yml
|
|
jobs:
|
|
smoke-test:
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
## There are other service requirements for Magento, but this is just for the explanation of this service
|
|
nginx:
|
|
image: nginx:1.27-alpine
|
|
ports: ["80:80"]
|
|
volumes:
|
|
- ${{ github.workspace }}:/var/www/html
|
|
options: --health-cmd "nginx -t" --health-interval=10s --health-retries=3
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: graycoreio/github-actions-magento2/setup-magento@main
|
|
id: setup-magento
|
|
with:
|
|
mode: store
|
|
- run: composer install
|
|
working-directory: ${{ steps.setup-magento.outputs.path }}
|
|
- uses: graycoreio/github-actions-magento2/setup-install@main
|
|
with:
|
|
services: ${{ toJSON(matrix.services) }}
|
|
path: ${{ steps.setup-magento.outputs.path }}
|
|
container_id: ${{ job.services['php-fpm'].id }}
|
|
- uses: graycoreio/github-actions-magento2/configure-service-nginx@main
|
|
with:
|
|
container_id: ${{ job.services.nginx.id }}
|
|
magento_path: ${{ inputs.path }}
|
|
- uses: graycoreio/github-actions-magento2/smoke-test@main
|
|
with:
|
|
kind: page
|
|
```
|