Obecna organizacja kodu i konfiguracji, którą opisujesz, oparta jest na zastosowanych rozwiązaniach technicznych. Jest to zły projekt, który zwiększy narzut w naszych działaniach konserwacyjnych i doda wiele pułapek na nasz sposób. Zamiast tego organizacja ta powinna opierać się na artefaktach , które wdrażamy.
Powodem tego jest to, że chcemy brać pod uwagę artefakty ( np. Obraz dokera lub pakiet oprogramowania) jako obiekty następujących czasowników:
rozważenie minimalnego zestawu zautomatyzowanych zadań, które chcemy wykonać. Jeśli chcemy coś zmienić w sposobie implementacji czasownika testowego, łatwo jest odwiedzić folder odpowiadający temu artefaktowi w odpowiednim repozytorium, a następnie odkryć elementy automatyzacji specyficzne dla jenkins, które należy zaktualizować. Zamiast tego, jeśli przepisy dotyczące automatyzacji opierają się na rozwiązaniach technicznych, musimy od razu zrozumieć, że Jenkins bierze udział w procedurach testowych i znaleźć tam elementy automatyzacji związane z artefaktami. W złożonych sytuacjach organizacja rozwiązań technicznych bardzo utrudnia aktualizację, ponieważ musimy z góry poznać wszystkie rozwiązania techniczne związane z niektórymi usługami, aby je odpowiednio zaktualizować.
Na przykład repozytorium zawierające kod strony internetowej i mikro-usługę „a” może mieć następujące podkatalogi poświęcone operacjom:
./ops/website
./ops/micro-service-a
z których każdy ma trzy skrypty nazywa build
, test
i deploy
. Teraz, gdy organizacja elementów automatyzacji została w jakiś sposób wyjaśniona, zwróćmy naszą uwagę na konfigurację.
deploy
Czasownik określa główne warunki i wymagania dotyczące organizacji konfiguracji w przypadku zastosowania go do artefaktu podobnego do usługi. deploy
Czasownik powinien posiadać następujące parametry:
- wersja artefaktu do wdrożenia,
- cel wdrażania artefaktu, który opisuje konkretne środowisko, w którym uruchomiony zostanie artefakt ( np. klaster i punkty końcowe , z którymi powinien rozmawiać)
- poświadczenia, których powinien używać do łączenia się z innymi punktami końcowymi ( np. bazami danych)
- konfiguracja środowiska wykonawczego (np. jak długo powinny trwać wpisy w pamięci podręcznej itp.)
Z punktu widzenia operacyjnego ten podział parametryzacji jest zgodny z naturalnym stopniem swobody problemu wdrażania - oprócz poświadczeń, które można powiązać z konfiguracją środowiska wykonawczego, ale lepiej jest je rozdzielić, aby uniknąć niedbałego ich rozprzestrzeniania.