--- - 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'"