Kiedy przyszedłem do projektu, release przez CI/CD trwało 60 min
Kiedy odchodziłem trwało to tylko 15 minut
Kiedy powróciłem po roku przerwy - teraz zajmuje 2,5h

#devops #programowanie #monorepo
fe948a14-10fd-4860-bf9b-a4a303a9cf64
Deykun

@Klopsztanga 

Trwa tyle, bo jest dopisane tyle testów przed, prawda?

Prawda?

9bb1ecb2-5296-419b-8fc9-ab2724fe5de5
Klopsztanga

@Deykun nie prawda ;( Chodzi o ideę.

Jak wchodziłem, był cypress. No to zoptymalizowałem go by działał horyzontalnie. Podzielony był na workery

Później przepisali to do PlayWright - i działa po kolei.

Klopsztanga

@Deykun inny przykład: wcześniej paratest , teraz po prostu phpunit

dahomej

@Klopsztanga a playwrighta nie da się odpalać równolegle? (czy po prostu tego nie zrobili?)

Klopsztanga

@dahomej każdy to ma w dupie Ważne, że ticket odhaczony, nara.

def

To co tam macie w tym CI/CD? U mnie tylko build dockera -> push do docker huba-> deploy

Reszta rzeczy jak np. testy, analiza statyczna, linty mam ustawione na merge request

Klopsztanga

@def a no budowanie dockera + budowanie JS 'a. JS głównie najwolniejszy jest.

Deykun

@def 

Ja w diffle jak był tylko polski miałem z 10k plików i jak kopiowało każdy osobno to build potrafił trwać pond 40 minut. Jak zacząłem je pakować do .zip i rozpakowywać na miejscu skróciło do minuty. Dzisiaj przy 6 językach to pewnie ten upload by trwał z 5h. dx


Najłatwiej chyba tak nabić jak ktoś nieogranie i zrobi coś podobnego kopiując node_modules, to nawet na tym samym kompie się długo kopiuje plik po pliku. dx

def

@Deykun ja node_modules cache'uje, do kontroli cache'u używam package-lock.json

Klopsztanga

@def package-lock.json nie jest do kontroli cache, tylko do pewnosci ze przetestowane paczki zostana zainstalowane.


Blokuje wersję paczek po prostu

def

@Klopsztanga chodzi mi o to, że używam tego pliku jako klucz cache, wrzucamy go w gita i w CI robimy npm ci

Klopsztanga

@def aaa chyba ze tak

globalbus

@Deykun jak masz głupi filesystem, to pliki się długo kopiują. Copy-on-write przyspiesza wydatnie.

Ragnarokk

I jest czas na hejto :P

wombatDaiquiri

@Klopsztanga dodajesz ficzer, optymalizujesz jak trzeba. Widocznie nie potrzeba i generujesz problem xD

Anteczek

@Klopsztanga no i może teraz bilują klienta za 2,5h, a nie 15 minut ( ͡° ͜ʖ ͡°)

rm-rf

@Klopsztanga zależy co robicie i jak robocie ale jak docker tam leci to możesz sobie layery zrobić mądrze w docker i odpalać build dind, tym sposobem cała warstwa z modules i bin się przeniesie do nowego builda a budujesz tylko zmiany. Co do testów w njs to u nas skończyło się na przepisaniu sorry cypress na swój i wszystko nadal hula w parallel.

Felonious_Gru

@Klopsztanga co to jest cicd

PanPaweuDrugi

@Felonious_Gru continuous integration / continuous deployment. W skrócie to automat, który odpala się kiedy programista wrzuca zmiany w kodzie. Ten automat te zmiany testuje, generuje metryki i tworzy paczki gotowe do uruchomienia, często również wdraża zmiany na środowisko testowe / produkcyjne.

Felonious_Gru

@PanPaweuDrugi trochę przerażające, ale sprytne

PanPaweuDrugi

@Felonious_Gru w sumie zajebiście wygodne i, o ile działa szybko i stabilnie to programiści bardzo to lubią, bo dostarcza natychmiastowy feedback odnośnie tego, czy się coś spieprzyło. W innym wypadku taki feedback dostarczy Ci klient, a to już takie przyjemne nie jest.

cyber_biker

@Klopsztanga trzeba było iść w layer2 a nie jakąś chujnię

Zaloguj się aby komentować