To jest projekt internetowy napisany w Javie.
Piszę więc skrypty kompilacji i wdrażania. Do stworzenia kompilacji użyłem mrówki. Ciągłe budowanie odbywa się za pomocą Jenkinsa.
Kompilacja generuje 3 różne artefakty:
- Plik wojenny
- Zamek błyskawiczny z układami
- Zamek z obrazami
Jak dotąd tak dobrze, ale teraz muszę napisać skrypt wdrażania, który powinien:
- Przeprowadź wojnę (artefakt 1) do kocura działającego na serwerze 1
- Umieść artefakt 2 na serwerze 1 w określonym katalogu
- Umieść artefakt 3 na serwerze 2 w określonym katalogu
Rozmawiałem więc z moim kolegą i powiedział, że powinniśmy również wygenerować artefakt (być może deploy.xml ), który rozmieszcza te artefakty, gdy zostaną umieszczone na właściwym serwerze.
Byłby więc inny skrypt, który:
- Pobierz artefakty Jenkins
- scp na każdy serwer i umieść tam plik deploy.xml
- zdalnie wywołać plik deploy.xml
To, co sprawia, że czuję się trochę nieswojo, to fakt posiadania pliku deploy.xml jako artefaktu kompilacji. Motywacją do tego byłaby możliwość wdrożenia bez konieczności posiadania dostępu do repozytoriów VCS, więc kompilacja byłaby samodzielna, tj. Każda kompilacja mogłaby wejść do produkcji tylko z tym, co wygenerowała Jenkins.
Gdzie należy umieścić skrypty wdrażania? Czy powinni być tylko w VCS, czy też powinni też budować artefakty?
źródło
Odpowiedzi:
Z mojego doświadczenia wynika, że powinno być wszystko, co można zautomatyzować. Jeśli możesz opisać to jako krok 1, krok 2, .... to powinien to być skrypt. Jeśli skrypt można wygenerować automatycznie, aby zawierał informacje o kompilacji (np. Tag rewizji), to powinieneś to zrobić. Nie chodzi o to, by być leniwym, ale o to, aby być przewidywalnym i powtarzalnym .
Uwaga bene: powinieneś mieć również automatycznie generowany skrypt przywracania, z którego może korzystać każdy w zespole, na wypadek, gdyby automatycznie wygenerowany skrypt wdrażania nie zwariował i nie doprowadził do awarii serwera produkcyjnego.
źródło
Wszystko, co napisał Peter Rowell, jest poprawne, a ponadto:
Dla pliku skryptu wdrażania
W przypadku procesu wdrażania:
Zależy to raczej od twojego procesu i tego, jak lubisz obsługiwać wdrożenia.
źródło