Não ficou claro a sua pergunta se você já tentou a opção git aws.push
. Você pode se referir um blog pós em AWSBlog para implantar aplicativos baseados em Rack no AWS Elastic Beanstalk. Para resumir o mesmo, você pode fazer isso nas seguintes etapas:
-
eb init
-
eb start
-
git aws.push
Isso, é claro, exige o download de ferramentas de linha de comando do AWS Elastic Beanstalk.
AFAIK, o AWS Elastic Beanstalk não tem uma integração com o Git implantar ganchos ainda, mas é bastante simples, se você já estiver usando um IC Servidor como Jenkins. O Github pode muito bem se integrar à maioria dos servidores de CI. Você poderia conseguir um git push
disparo git aws.push
do seu servidor CI, adicionando um novo emprego Jenkins com comandos personalizados Shell. Você também pode querer executar um equipamento de teste antes de empurrar uma construção nova para fora. Jenkins ou Travis CI farão o trabalho por você!
Com relação à execução das tarefas before_symlink
type, a maneira como o AWS Elastic Beanstalk funciona é diferente de uma implantação tradicional do Capistrano. Ele agrupa todo o seu código em um arquivo executável e simplesmente o copia para nós com balanceamento de carga. Para executar before_symlink
como tarefas, talvez você queira gravar alguns arquivos de configuração customizados e colocá-los em .ebextensions
no caminho raiz de seu repositório Git. A maneira como fiz isso foi adicionando um arquivo .ebextensions/symlink.config
. Aqui está um exemplo de código para criar um link simbólico para o arquivo database.yml
no servidor.
container_commands:
symlink-db:
command: ln -sf /var/app/shared/database.yml $EB_CONFIG_APP_ONDECK/config/database.yml
Por favor, note que estou executando uma AMI personalizada com um diretório /var/app/shared/
que, caso contrário, não está presente quando você inicia um contêiner Ruby baunilha. Além disso, a variável de ambiente $EB_CONFIG_APP_ONDECK
contém o nome do diretório de implantação atual (geralmente /var/app/ondeck
), que é movido para /var/app/current
após a implantação e antes de reiniciar o servidor Rails (Passenger), tornando-o disponível para solicitações de serviço. Leia mais em Personalizando contêineres do AWS Elastic Beanstalk .
Espero que isso ajude.