Aplicativo de trilhos beanstalk elástico com git source e deploy hooks

3

Eu quero configurar o Elastic Beanstalk para o meu aplicativo de trilhos existente.

Eu consegui fazer o aplicativo foo de amostra.

Estas são as perguntas que tenho

Eu preciso que a implantação aconteça do meu repositório git e não do meu caminho local onde estou implantando. Como faço isso para o aplicativo foo de amostra.

O comando git aws.push parece ser implementado na nova instância do ec2. No entanto, ele não enviou as alterações para o meu repositório git. Devo fazer um empurrão separadamente antes de fazer um git aws.push? Observe que minha ramificação está à frente por 1 commit quando eu faço um status git. O aws mantém um repositório git separado? Como posso fazer com que use meu repositório git?

[mymac:~/Projects/new/foo(master)]$ git aws.push
Counting objects: 4949, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1115/1115), done.
Writing objects: 100% (4949/4949), 14.11 MiB | 1.90 MiB/s, done.
Total 4949 (delta 3800), reused 4944 (delta 3798)
remote: 
To https://AKIAJZT3WFY2WLO6CHQQ:20121127T030627Zf56675b2f4c9c731ca6f51b11d36a438e8bcee25c5171061ce5ac681495318c9@git.elasticbeanstalk.ap-southeast-1.amazonaws.com/v1/repos/617069/commitid/39396162666436346439656465313537613561343561626465643931393366623762386265303138/environment/6170692d656e76
 * [new branch]      HEAD -> master


[mymac:~/Projects/new/foo(master)]$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

Abaixo está o resultado de apenas um empurrãozinho.

[mymac:~/Projects/new/foo(master)]$ git push
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 340 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
To [email protected]:xxxx/foo.git
   885cc33..99abfd6  master -> master

Separadamente, preciso de um gancho de implementação before_symlink. Como posso fazer isso?

    
por Divya Bhargov 26.11.2012 / 07:33

2 respostas

5

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:

  1. eb init
  2. eb start
  3. 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.

    
por 26.11.2012 / 09:42
0

Consegui integrar as compilações de teste do Travis CI com as implantações do Amazon Beanstalk. Para fazer isso eu tive que automatizar as ferramentas eb, porque a versão atual 2.5.1 só roda de forma interativa, então eu editei o código de ferramentas EB em alguns arquivos python e então criei um arquivo .travis.yml com as instruções apropriadas para implante o aplicativo no AWS Beanstalk.

Aqui está um link para o meu blog que fornece uma descrição completa do processo:

link

    
por 03.08.2013 / 19:37