Niedawno podłączyłem nasze serwery CI, aby budować obrazy dokerów po git commit.
Mamy około 8 różnych kontenerów, z których każdy ma swój własny język / frameworki. Niektóre są węzłami i mają pakiet.json, inne to usługi python, które nie zawierają semantycznej informacji o wersji.
Moje pytanie nie dotyczy sposobu tworzenia tagów, ale tworzenia wartości tagu.
Jak upewnić się, że każdy znacznik ma unikalny semantyczny numer wersji dla określonych obrazów? Kto powinien być uprawniony do śledzenia / zwiększania wersji kompilacji?
docker
continuous-integration
versioning
Jack Murphy
źródło
źródło
Odpowiedzi:
Chciałbym skierować cię do mojego rejestru dokowania Łączenie i kontroli źródła, gdzie dmaze odpowiedział z oficjalnego forums.docker.com . Wystarczy wpisać skrót lub nazwę oddziału lub tagi.
Obecnie używamy kombinacji nazwy oddziału / skrótu zatwierdzenia. Dla nas to wydaje się wystarczające. znaczniki czasu, gdy są przydatne IMO, po prostu dodają bałaganu, ponieważ nie zapewniają niczego, czego nie spełnia skrót mieszania.
Zgadzam się z 030 w odniesieniu do:
100% jest odpowiedzialna za utrzymanie takich rzeczy przez CI przy właściwej komunikacji między innymi zespołami.
źródło
Można utworzyć znacznik, który składa się z wielu elementów, np. Kombinacji znacznika czasu, skrótu git commit i wersji semantycznej. Te ostatnie należy ustawić ręcznie, a dwa pierwsze można zautomatyzować. Taki tag może wyglądać następująco:
Ten tag zawiera datę kompilacji, zatwierdzenia i wersję semantyczną. Jeśli obraz dokera uruchomi się podczas produkcji i zostanie wykryty błąd, wówczas znana jest wersja produktu, kod, który jest w środku i kiedy obraz został zbudowany, i w jakich okolicznościach.
Moim zdaniem powinien to być obowiązek CI, ponieważ jest on w stanie zautomatyzować procesy, a ponieważ tworzenie tagów mogłoby zostać zautomatyzowane, takie narzędzie jest właściwym narzędziem do pracy.
źródło
Przypuszczam, że używasz jednego z narzędzi DevOps dla CI / CD, takich jak Jenkins, sugeruję następujące podejście,
Jeśli używasz czegoś takiego jak Jenkins-
dawny:-
sudo docker build -t <image_name>:<BUILD_ID>
Tak więc, jeśli masz mechanizm podobny do znacznika dla SCM, możesz sprawdzić znacznik w odpowiednim identyfikatorze kompilacji w kompilacjach opartych na zadaniu lub w config.xml identyfikatora kompilacji w JENKINS HOME_FOLDER.
źródło