2008-08-20 23 views

Odpowiedz

6

przypadku niektórych projektów używam Capistrano wypchnąć żyć. Jest zbudowany na bazie ruby ​​i sprawia, że ​​pisanie skryptów jest bardzo proste i używa ssh.

W innych projektach mam małą aplikację do wdrażania, która używa basha do eksportu svn do katalogu tymczasowego, a następnie zsynchronizuje go z serwerem na żywo. Możesz sprawić, że rsync użyje ssh.

Bardzo preferuję metodę Capistrano, nawet jeśli Twój projekt nie jest w rubinach/szynach.

0

Zawsze można napisać małą aplikację klient/serwer, która szyfruje u źródła, wypycha pliki, a następnie odszyfrowuje w miejscu docelowym. To trochę pracy, ale prawdopodobnie niewielka ilość. I jest skryptowalne, o ile twoje narzędzie do automatyzacji obsługuje wykonywanie czegoś w systemie plików (co, jak sądzę, wszyscy robią).

Jedynym minusem jest to, że możesz nie być w stanie uzyskać sensownych komunikatów o błędach w przypadku awarii w środowisku integracyjnym bez odrobiny dodatkowej pracy z Twojej strony (chociaż w zależności od konfiguracji może to być tak proste, jak wysyłanie komunikatów o błędach do stdout).

0

hm, tutaj używamy "serwera" pomostowego do testowania w środowisku na żywo (w rzeczywistości jest to serwer wirtualny apache na serwerze produkcyjnym) i araxis merge (naprawdę inteligentne narzędzie do porównywania plików po linii) zsynchronizować rozwój i etapowanie.

po przetestowaniu, po prostu; zastąpić pliki w webroot produkcji :)

/mp

4

To wydaje się takie rzeczy, które można łatwo zrobić z SFTP. Spójrz na PuTTY (psftp i pscp) lub WinSCP dla Windows lub rsync i OpenSSH dla Uniksa.

1

Utwórz kopię swojego katalogu na żywo, użyj rsync, aby zaktualizować tę kopię do najnowszej wersji, a następnie zmień nazwę bieżących i zaktualizowanych katalogów, aby zaktualizowana wersja była już dostępna.

W bash:

#!/bin/bash 

set -e 
cp -R /var/livesite /var/newversion 
rsync [email protected]:/var/readytogolive /var/newversion 
mv /var/livesite /var/oldlivesite 
mv /var/newversion /var/livesite 

Viola!

Edytuj: @Ted Percival - To dobry pomysł. Nie wiedziałem nawet o "ustawieniu". Zaktualizowany skrypt. Edytuj: zaktualizowano ponownie pod sugestią Teda (chociaż myślę, że nadal by działało, gdyby jakoś polecenie cp nie powiodło się, a jeśli cp nie powiedzie się, prawdopodobnie masz więcej poważnych problemów).

1

@Neall, dodam set -e na drugim linii, ponieważ nie chcesz, aby witryna była aktualizowana, jeśli z jakiegoś powodu nie powiedzie się rsync. set -e powoduje, że skrypt kończy działanie, jeśli któreś z jego poleceń zakończy się niepowodzeniem.

Edycja: The set -e powinien być pierwszą rzeczą w skrypcie, zaraz po #!/bin/bash.

1

Będę drugą rekomendacją dla Capistrano, ale jeśli szukasz rozwiązania opartego na interfejsie GUI, możesz wypróbować front-end Webistrano. Czyste, oparte na ssh, rozsądne wdrażanie i wycofywanie semantyki oraz łatwe pisanie skryptów i rozszerzalność przez ruby.

0

Na zlecenie, które wykonałem, założyliśmy trzy oddzielne środowiska.

  • Serwer Dev, który działał kontynuuje kompilacje przy użyciu CruiseControl. Każde odprawienie uruchomi kompilację. Przeprowadzono tu testy jakości.
  • Serwer testowy, w którym przeprowadzono test akceptacji użytkownika.
  • Produkcja.

Workflow był jak następuje:

  1. kontrole Developer w zmianach SourceControl.
  2. CruiseControl buduje i wdraża kompilację do wersji Dev.
  3. Dev jest QA'ed
  4. Po przejściu QA uruchamiany jest skrypt robocopy, który wdraża kompilację Dev w celu przetestowania.
  5. Test jest UAT'ed
  6. Po przejściu testu wykonywany jest skrypt robocopy, który wdraża test do PRD.