Some checks failed
Security Vulnerability Scan / Check for Dependency Changes (push) Successful in 29s
🚀 Build & Deploy Image / Build Runtime Base Image (push) Successful in 13s
🚀 Build & Deploy Image / Determine Build Necessity (push) Successful in 29s
🚀 Build & Deploy Image / Run Tests & Quality Checks (push) Has been skipped
Security Vulnerability Scan / Composer Security Audit (push) Has been skipped
🚀 Build & Deploy Image / Build Docker Image (push) Successful in 12s
🚀 Build & Deploy Image / Auto-deploy to Staging (push) Failing after 52s
🚀 Build & Deploy Image / Auto-deploy to Production (push) Has been skipped
- Add stacks_base_path variable with default '/home/deploy' - Fixes 'stacks_base_path is undefined' error in install-composer-dependencies playbook
81 lines
3.2 KiB
YAML
81 lines
3.2 KiB
YAML
---
|
|
- name: Install Composer Dependencies in Application Container
|
|
hosts: "{{ deployment_hosts | default('production') }}"
|
|
gather_facts: no
|
|
become: no
|
|
|
|
vars:
|
|
# Base path for deployment stacks
|
|
stacks_base_path: "{{ stacks_base_path | default('/home/deploy') }}"
|
|
# Determine stack path based on environment
|
|
application_stack_dest: >-
|
|
{%- if deployment_environment == 'staging' -%}
|
|
{{ staging_stack_path | default(stacks_base_path + '/staging') }}
|
|
{%- else -%}
|
|
{{ app_stack_path | default(stacks_base_path + '/production') }}
|
|
{%- endif -%}
|
|
application_compose_suffix: >-
|
|
{%- if deployment_environment == 'staging' -%}
|
|
staging.yml
|
|
{%- else -%}
|
|
production.yml
|
|
{%- endif -%}
|
|
# Deployment environment (staging or production)
|
|
deployment_environment: "{{ deployment_environment | default('production') }}"
|
|
# Service name (php for production, staging-app for staging)
|
|
php_service_name: >-
|
|
{%- if deployment_environment == 'staging' -%}
|
|
staging-app
|
|
{%- else -%}
|
|
php
|
|
{%- endif -%}
|
|
|
|
tasks:
|
|
- name: Check if composer.json exists
|
|
stat:
|
|
path: /home/deploy/michaelschiemer/current/composer.json
|
|
delegate_to: "{{ inventory_hostname }}"
|
|
register: composer_json_exists
|
|
|
|
- name: Fail if composer.json is missing
|
|
fail:
|
|
msg: "composer.json not found at /home/deploy/michaelschiemer/current/composer.json"
|
|
when: not composer_json_exists.stat.exists
|
|
|
|
- name: Install composer dependencies in PHP container
|
|
shell: |
|
|
docker compose -f {{ application_stack_dest }}/docker-compose.base.yml -f {{ application_stack_dest }}/docker-compose.{{ application_compose_suffix }} exec -T {{ php_service_name }} composer install --no-dev --optimize-autoloader --no-interaction
|
|
register: composer_install
|
|
changed_when: true
|
|
failed_when: composer_install.rc != 0
|
|
|
|
- name: Restart queue-worker and scheduler to pick up vendor directory (production only)
|
|
shell: |
|
|
docker compose -f {{ application_stack_dest }}/docker-compose.base.yml -f {{ application_stack_dest }}/docker-compose.{{ application_compose_suffix }} restart queue-worker scheduler
|
|
register: restart_workers
|
|
changed_when: true
|
|
failed_when: false
|
|
when: deployment_environment == 'production'
|
|
|
|
- name: Display composer install output
|
|
debug:
|
|
msg: |
|
|
Composer Install Output:
|
|
{{ composer_install.stdout }}
|
|
|
|
- name: Verify vendor/autoload.php exists
|
|
shell: |
|
|
docker compose -f {{ application_stack_dest }}/docker-compose.base.yml -f {{ application_stack_dest }}/docker-compose.{{ application_compose_suffix }} exec -T {{ php_service_name }} test -f /var/www/html/vendor/autoload.php && echo "EXISTS" || echo "MISSING"
|
|
register: autoload_check
|
|
changed_when: false
|
|
|
|
- name: Display autoload verification
|
|
debug:
|
|
msg: "vendor/autoload.php: {{ autoload_check.stdout.strip() }}"
|
|
|
|
- name: Fail if autoload.php is missing
|
|
fail:
|
|
msg: "vendor/autoload.php was not created after composer install"
|
|
when: "autoload_check.stdout.strip() != 'EXISTS'"
|
|
|