mobizel/symfony-capistrano

Capistrano configuration to deploy your Symfony apps.

v0.2.0 2020-02-27 08:55 UTC

This package is auto-updated.

Last update: 2020-03-27 09:12:21 UTC


README

Symfony capistrano allow you to deploy your Symfony application using Capistrano and Symfony Flex Composer plugin.

Installation

This repository hosts contributed recipes for Composer packages that are not part of the "official" Symfony recipes. To enable recipes defined in this repository for your project, run the following command:

composer config extra.symfony.allow-contrib true

Add the package to your composer requirements.

composer require mobizel/symfony-capistrano

How to deploy using Capistrano

Note:

This page give some hit about Capistrano. To go further check the official documentation

Capistrano is a common tools to deploy a Symfony app. It allows to deploy your app without any interruption. Your document root in on a symlink which corresponds to a release directory. This symlink is updated when your build finished successfully.

Install Dependencies

We are going to use Bundler to install capistrano

$ gem install bundler

Run bundler install command to install gem dependancies in the project Gemfile

$ bundle install

Configure your environments

By defaults, there are two environments pre-configured:

  • staging
  • production

These environments are configured in on etc/capistrano/deploy/ directory. Replace XX.XXX.XX.XXX with your server ip addresses

Deploy the staging environment

$ bundle exec "cap staging deploy"

Deploy the production environment

$ bundle exec "cap production deploy"

Create your own task

Capistrano allow you to build your own to exec during your deployment. This exemple create a task that execute a command on deployment target server.

namespace :namespace do
    desc "task description"
    task :task_name do
      on roles(:all) do |host|
              execute 'command executed on target server'
      end
    end
end

Tasks hooks

Capistrano provides hooks in order to exec your task before or after a specific task. For example if you want to run a task to set a proxy on a remote server before any git check :

before 'git:check', 'deploy:add_proxy'