Jaka jest najlepsza strategia wdrażania?

82

Założenie sklepu Magento to nie tylko kwestia opracowania samodzielnie instalowanych rozszerzeń, ale także wiele operacji „ręcznego wprowadzania”, takich jak tworzenie atrybutów edycji końcowej, kategorii, produktów, stron CMS reguł cenowych itp., Nie wspominając już o wszystkich zmiany w konfiguracji systemu.

Chciałbym, abyś pomógł nakreślić najlepszą strategię, jeśli chodzi o wdrożenie sklepu Magento od środowiska programistycznego po środowisko produkcyjne i produkcyjne.

Jedną z moich strategii jest napisanie „modułu wdrażania”, który programowo tworzy wymienione wyżej podmioty, ale jest to bardzo czasochłonne zadanie i czasem wydaje mi się, że to trochę przesada.

Ostatnio zacząłem używać Selenium IDE do odtwarzania zadań administracyjnych, ale czas potrzebny na skonfigurowanie wszystkich pakietów testowych nie jest daleki od wspomnianego powyżej.

Być może optymalnym rozwiązaniem może być użycie modułu zdolnego do wykonania migawki systemu Magento, pozwalającego wybrać, co wdrożyć.

Więc:

  • jaka jest twoja strategia wdrażania?
  • czy istnieje moduł zdolny do wykonania migawki systemu Magento, pozwalający wybrać, co wdrożyć?
  • jeśli taki moduł nie istnieje i pod warunkiem, że taki moduł jest rozsądnym rozwiązaniem, czy ktoś jest zainteresowany oddaniem swojego / jego wkładu w jego rozwój?

Dziękuję Ci!

Alessandro Ronchi
źródło
Może to wskazywać na potrzebę wprowadzenia innego znacznika lub kategorii znaczników. Czy prowadzisz jednorazowy sklep lub szukasz ogólnych wskazówek jako usługodawca? Jeśli to drugie, każda odpowiedź musiałaby zostać przesadzona „zależy od tego, ile kontroli klient chce nad danymi podmiotu”.
zyskuje
Moim punktem widzenia jest programista należący do zespołu programistów. Załóżmy, że tworzę sekcję, która potrzebuje pewnych danych do działania, powiedzmy strukturę kategorii. Tworzę strukturę za pomocą administratora, robię kod i wypycham kod. Zastanawiam się, czy najlepszą strategią jest także pisanie i wypychanie kodu, który tworzy potrzebną strukturę kategorii. Co się stanie, jeśli moja struktura kategorii lub ustawienia będą sprzeczne z ustawieniami innych programistów, którzy wprowadzili własne? Jak radzić sobie z konfliktami? To mój punkt.
Alessandro Ronchi,
@AlessandroRonchi Jest to kwestia sporna i konflikt, który nigdy nie powinien się zdarzyć. Struktura kategorii nie jest czymś, co powinno się niepoważnie zmienić, dlatego jeden programista nie powinien wypierać poważnych zmian w strukturze, bez wiedzy innych. Jeśli tak się stanie, musisz zająć się komunikacją między programistami. Ogólnie rzecz biorąc, struktura kategorii witryny musi zostać przypięta od pierwszego dnia i nigdy więcej nie musi się zmieniać, wystarczy dodać do niej. Jeśli musisz go zmienić, za pierwszym razem nie wyodrębniłeś go poprawnie.
ProxiBlue
@dedmeet Niestety, w świecie, w którym znam i pracuję, rzeczy zmieniają się każdego dnia; klienci zmieniają zdanie, programiści zmieniają zdanie, pojawiają się czarne łabędzie. Muszę być przygotowany na zmiany; w każdym razie, nawet jeśli struktura kategorii nie musi być zmieniana od pierwszego dnia, jest to tylko niewielki fragment całej części, a cała część jest projektem „w toku”, który powinien się zmienić, aby załatwić sprawę.
Alessandro Ronchi
ok, oczywiście, pracujemy w ciągle zmieniającym się środowisku, ale nadal uważam, że konflikt struktury kategorii nie powinien się zdarzyć. Nie powinno istnieć wiele gałęzi, w których każda zmienia strukturę, co prowadzi do problemów i marnowania czasu deweloperów. Dlaczego deweloper spędza czas na wprowadzaniu zmian w strukturze, podczas gdy deweloper robi to samo, do innej struktury i oboje popychają swoją pracę? Jeśli struktura musi się zmienić, wszyscy deweloperzy zaangażowani w projekt muszą wziąć udział w procesie poszukiwania nowej struktury. Czy możesz podać przykład, który pomoże mi zrozumieć, kiedy to się stanie?
ProxiBlue

Odpowiedzi:

39

Moim zdaniem jest to wszystko napisać. Zwykle mam podstawowy moduł konfiguracji do wszystkiego, co nie jest bezpośrednio związane z konkretnymi modułami. (na przykład tworzenie niestandardowych przeróbek adresów URL dla poprzedniego adresu URL witryny na nowy adres URL witryny) i dodawanie wszelkich elementów związanych z modułem do własnych skryptów instalacyjnych.

Sposób myślenia jest taki, że jeśli witryna wymaga ponownej instalacji przy użyciu nowej bazy danych, wszystko wraca tak, jak wcześniej. Pomaga to również w tym, że okresowo aktualizuję witrynę uat za pomocą kopii bazy danych na żywo. Moduły w programie uat kontynuują pracę, gdy ponownie wprowadzają swoje konfiguracje.

Zmiany stawek wysyłki, zasad koszyka itp. (W zasadzie rzeczy, którymi klienci administrują się w administracji) są uważane za „niestabilne dane” i nie są skrypty. Obejmuje to dane produktu. Klient ma taką opcję i zachęca się go najpierw do przetestowania nowego importu na stronie UAT.

Klientom zaleca się, aby nie tworzyli atrybutów, a raczej zlecili utworzenie ich za pomocą żądania biletu. To pozwala mi również zbierać informacje na temat tego, jaki jest zamiar klienta dotyczący tego atrybutu, a czasami mam lepszą sugestię lub mogę stworzyć lepszy kod, ponieważ mam kontrolę nad tym, jakie atrybuty istnieją, a także na temat atrybutów wybieranych, aby upewnić się, że dane są czysty.

Tak, skrypty trwają dłużej, ale później ręcznie będzie można ręcznie odtworzyć ustawienia konfiguracji całych witryn. Może to również być krępujące, jeśli zapomnisz coś i sprawisz, że strona nie będzie działała poprawnie, lub gdy uruchomisz nową pracę programistyczną na stronie lokalnej, w której brakuje niektórych kluczowych ustawień konfiguracji.

ProxiBlue
źródło
1
Zgadzam się z dedmeet. Kiedy po raz pierwszy nauczysz się pisać skrypty wszystkich aktualizacji, może to być więcej początkowej pracy, ale jeśli musisz ręcznie zastosować aktualizacje konfiguracji dla 3-4 programistów, przygotowywanie, uat i live, koordynacja i faktyczna praca potrwa znacznie dłużej. Nasz przepływ pracy jest podobny: jeśli konfiguracja jest wymagana dla rozszerzenia (wielokrotnego użytku), umieść go tam. Jeśli konfiguracja jest specyficzna dla klienta, umieść ją w rozszerzeniu specyficznym dla projektu. Jednym z niewielu wyjątków są reguły koszyka, których aktualizowanie / tworzenie wcale nie jest fajne.
Matthias Zeis
1
Właśnie wypuszczam moduł, który pomaga stworzyć wymagany skrypt konfiguracyjny, eliminując w ten sposób zwykłe tworzenie skryptów instalacyjnych. Moduł wykorzystuje wyświetlanie siatki tabeli core_config_data, aby umożliwić wybór wartości konfiguracji do wyeksportowania. Uczyń moje życie trochę prostszym i mam nadzieję, że zadziała dla innych. proxiblue.com.au/blog/magento-config-data-generator
ProxiBlue
27

Kilka miesięcy temu byłem badaczem. Oto strony, do których możesz się odwoływać.

Podstawowe adresy URL Magento i instalacje
deweloperskie / testowe Magento Opracowanie i wdrożenie
Magento Przewodnik po Git i narzędzie do szybszego przepływu pracy
Zrzucanie bazy danych Magento MySQL do rozgałęziania

Oğuz Çelikdemir
źródło
1
Dziękuję, przeczytam je wszystkie i wrócę z uwagami.
Alessandro Ronchi
Przeczytałem, że wszystkie dają zasoby; Znałem już niektóre, inne, o których nie wiedziałem, są bardzo interesujące. Żadne z nich nie jest rozwiązaniem mojego problemu i postanowiłem naszkicować rozszerzenie, które będzie próbowało zaspokoić moje potrzeby. Dziękuję wszystkim, którzy dali mi cenne rady. Mam nadzieję, że wrócę tu z kilkoma wynikami.
Alessandro Ronchi
Drogi Alessandro, chciałbym również zobaczyć twoją drogę, którą również wyglądam na wygodniejszą technikę!
Oğuz Çelikdemir
18

Chciałbym podziękować wam wszystkim, ponieważ wasze rozważania zainspirowały mnie i skłoniły mnie do opracowania rozszerzenia o nazwie „Mageploy” z zamiarem rozwiązania problemu utrzymywania synchronizacji różnych środowisk.

http://www.mageploy.com

Mageploy wciąż musi być rozbudowany, dobrze udokumentowany i w pełni przetestowany, nawet jeśli już go używam w kilku projektach, które mają pewne zalety.

Jest to oprogramowanie typu open source i każda pomoc lub sugestia będą mile widziane.

pozdrowienia

Alessandro Ronchi
źródło
7

Jeśli chodzi o instalowanie skryptów i tworzenie encji, ogólnie uważam, że jeśli jest wymagany lub oczekiwany przez moduł, powinien zostać utworzony jako część skryptu instalacyjnego.

Ostatnio, jeśli chodzi o program / etap / produkcję, używamy strony pośredniej jako głównej kopii bazy danych dla treści, ponieważ oznacza to, że klient może współpracować. W przeszłości prawdopodobnie największym problemem, jaki napotkaliśmy, jest koordynacja wprowadzania treści z klientem, szczególnie w odniesieniu do przesyłania produktów.

Jak myślałeś, że migawka zadziała? Myślę, że w idealnym świecie miałbyś narzędzie, które pokazywałoby różnicę między dwiema bazami danych na poszczególnych typach (produkty, kategorie, CMS itp.) I pozwalało ci łączyć zmiany ze sobą, ale nie jestem świadomy niczego dostępnego, takiego jak że.

Paweł
źródło
1
„Jeśli chodzi o instalowanie skryptów i tworzenie encji, ogólnie uważam, że jeśli jest wymagany lub oczekiwany przez moduł, powinien zostać utworzony jako część skryptu instalacyjnego”. Jest to najistotniejszy punkt do rozważenia i dotyczy ustawień konfiguracji. Mój szybki test: kiedy potrzebuję nowego programisty, aby sklonować repozytorium i zainstalować środowisko, co musi istnieć, aby system mógł działać?
zyskuje
Współużytkowanie witryny pomostowej z klientami w celu współpracy przy konfiguracji jest świetne w teorii. W praktyce klienci nie mówią ci wszystkiego, co zmienili w 99% przypadków, co ułatwia zrobienie czegoś zepsutego. Możemy pozwolić klientom pracować nad takimi rzeczami, jak reguły koszyka, kategorie, produkty lub tym podobne, ale nie pozwalamy im zakłócać konfiguracji.
Matthias Zeis
6

Moim zdaniem tworzenie i edytowanie atrybutów, kategorii, produktów, reguł cenowych nie ma nic wspólnego ze „strategią wdrażania”. Wszystkie te elementy są unikalne dla sklepu, aw większości przypadków wymagają odpowiedniej analizy i badań produktów, które Ty zamierzają sprzedać.

Jeśli tworzysz sklepy „jeden rozmiar dla wszystkich” z podobną konfiguracją wszystkich wymienionych elementów, możesz po prostu wykonać eksport „migawki” bazy danych po wykonaniu wszystkich ustawień niezbędnych dla każdego sklepu.

Rutger
źródło
Nie, „jeden rozmiar pasuje do wszystkich” nie o to chodzi; jest to ta sama sytuacja, w której my, jako programiści, spotykamy się, gdy czas połączyć nasz kod źródłowy z jednym z członków zespołu deweloperów: w takim przypadku mamy systemy kontroli źródła, które wykonują magię. Moje pytanie było bardziej związane z możliwością łączenia rzeczy „nie dev”, takich jak ustawienia konfiguracji oraz typowe ustawienia i wpisy administratora.
Alessandro Ronchi,
Ach, okej, to wyjaśnia wszystko
Rutger
Załóżmy, że tworzymy kompletną nową stronę internetową, więc nie ma problemów ze starymi danymi itp. Prawie cały czas wszyscy nasi deweloperzy używają tej samej bazy danych do programowania. To rozwiązuje wiele problemów. W innych przypadkach nie mam (jeszcze) lepszego rozwiązania niż napisanie wszystkich kroków potrzebnych w jakimś planie / skrypcie i ponowne zastosowanie ich wszystkich po scaleniu. Jeśli tylko jedna osoba jest odpowiedzialna za ustawienia administratora „magento core”, nie powinno to być zbyt wiele kroków. Raz to znalazłem, ale nigdy nie próbowałem tego tinybrick.com/magento-modules/admin-tools/…
Rutger
2

Chciałbym dodać dwa doskonałe narzędzia oszczędzające czas:

  • Do opracowania: PhpStorm IDE z wtyczką Magicento
  • Do wdrożenia: Magentify , przepis Capistrano na Magento
osondoar
źródło
Dziękujemy za poinformowanie nas o Magentify, nie wiedziałem o tym i spróbuję. Skupiłem się jednak bardziej na synchronizacji różnych środowisk programistycznych niż na wdrażaniu w sensie publikowania bazy kodu. Mageploy może być zintegrowany z Magentify, ale jest innym narzędziem, służącym do automatycznego wyrównania części zmian w bazie danych, niezależnie od określonych ID, które są różne w różnych środowiskach. Z poważaniem, Alessandro
Alessandro Ronchi,