Jak usprawnić tworzenie i zarządzanie stroną na drupalu. Maciej Łukiański



Podobne dokumenty
System kontroli wersji git

Adam Wójs <adam[shift+2]wojs.pl> git --wprowadzenie

Drupal i GIT. Schemat pracy.

GIT. System Kontroli wersji GIT. Rafał Kalinowski

Programowanie zespołowe

Code-Driven Development (CDD) w Drupalu 7. Grzegorz Bartman

Git, Bitbucket. Narzędzia i środowiska programistyczne. Laboratorium 2. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

git krótki przewodnik

Co zostanie wypisane na ekranie? (1)

System kontroli wersji Git

Git rozproszony system kontroli wersji

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Git - podstawy. Błażej Kowalczyk. Koło Naukowe Robotyków KoNaR. 7 listopada 2014

Programowanie I

Git, Bitbucket, IntelliJ IDEA

Tak. Konrad Ktoso Malawski blog.project13.pl - SFI

Encje w Drupalu. Tworzenie własnych encji i ich wpływ na poprawę wydajności

Open Source w służbie developerom

Gra-zabawka dla niemowląt przygotowana z użyciem w Unity 3D

Programowanie zespołowe

Zarządzanie projektami informatycznymi

Systemy kontroli wersji git od wewnatrz Użycie gita Koniec. git. Rozproszony system kontroli wersji. sphere.pl. Koło Naukowe Sfera

System kontroli wersji, system zarządzania kodem źródłowym

Podstawowy warsztat informatyka

Git i platforma GitHub

Platforma GitHub. 1 Cel laboratoriów. 2 GitHub. 2.1 Git. źródeł.

Rozproszony system kontroli wersji GIT. Piotr Macuk

Platformy Technologiczne

Integracja produktów Atlassian na przykładzie grupy IPFD

SVN sojusz, partnerstwo, współpraca

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

Instrukcja laboratoryjna

MBUM #2. Zarządzanie kopiami konfiguracji RouterOS. Jacek Rokicki

CVS system kontroli wersji

CI/CD - CO TO? PO CO? JAK?

ponad pracowników ponad pracowników ponad pracowników ponad pracowników

Baza danych sql. 1. Wprowadzenie

TYPO3 może być proste. Spojrzenie edytora. Krystian Szymukowicz

Usprawnienie procesu zarządzania konfiguracją. Marcin Piebiak Solution Architect Linux Polska Sp. z o.o.

Środowisko programisty. Środowisko programisty 1/35

Program szkolenia: Continuous Integration i Git

Instrukcja instalacji

Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, Bydgoszcz

Wprowadzenie do systemu wersjonowania svn

Systemy kontroli wersji

BACKUP BAZ DANYCH FIREBIRD

SPECYFIKACJA WDROŻENIA SKLEPU MAGENTO

Ćwiczenia 9: Zarządzanie konfiguracją Zadania:

WYPOŻYCZALNIA BY CTI INSTRUKCJA

PrestaShop. Sklep internetowy szyty na miarę

Sky-Shop.pl. Poradnik. Pierwsze kroki: Importowanie własnego pliku XML Integracje z hurtowniami

1 Tworzenie własnego zaproszenia dla powłoki bash

Aplikacje webowe z wykorzystaniem Node.js oraz Express

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4

GIT. Rozproszony system kontroli wersji

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

UWAGA!!! Przed przystąpieniem do zamknięcia roku proszę zrobić kopie bezpieczeństwa

Nowe funkcje w programie Symfonia Finanse i Księgowość w wersji

Program szkolenia: Jenkins - Continuous Integration

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Moduł Media backup oraz konfiguracja serwera zapasowego

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

Zasady współpracy programu Doradca Handlowy z Symfonią

Tworzenie wersji demonstracyjnych enova365 na potrzeby prezentacji u Klienta

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Nowe funkcje w programie Forte Finanse i Księgowość

oprogramowania F-Secure

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Uruchomienie nowego kontekstu aplikacji

Konfiguracja i administracja systemem kontroli wersji SVN

Systemy zarządzania wersjami

emszmal 3: Automatyczne księgowanie płatności do zamówień w programie WF-Mag (plugin dostępny w wersji ecommerce)

Enterprise JavaBeans (EJB)

Wprowadzenie do Doctrine ORM

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

emszmal 3: Automatyczne księgowanie płatności w programie Sello (plugin dostępny w wersji ecommerce)

Projektowanie oprogramowania systemów NARZĘDZIA PRACY GRUPOWEJ, KONTROLI WERSJI, DOKUMENTOWANIA I ŚLEDZENIA BŁĘDÓW

Michał (plucho) Subversion Wykorzystanie i administracja repozytorium

Wdrożenie modułu płatności eservice. dla systemu Magento

emszmal 3: Automatyczne księgowanie przelewów w programie EasyUploader (plugin dostępny w wersji ecommerce)

Wprowadzenie do projektu QualitySpy

Plan testów do Internetowego Serwisu Oferowania i Wyszukiwania Usług Transportowych

emszmal 3: Eksport wyciągów do WF-Mag (plugin dostępny wraz z dodatkiem Biznes)

INSTRUKCJA UŻYTKOWNIKA Instalacja KS - EDE w systemie KS - ZSA ISO 9001:2008 Dokument: Wydanie: 1 Waga: 90

Wykaz zmian w programie WinAdmin Replikator

Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje

emszmal 3: Automatyczne księgowanie płatności w programie EasyUploader (plugin dostępny w wersji ecommerce)

Automatyzacja testów aplikacji webowych w Selenium podstawy. Natalia Krawczyk

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi

Instrukcja aktualizacji programu Integra 7

Programy LeftHand - Obsługa plików JPK. Luty 2017

emszmal 3: Eksport wyciągów do Subiekt (Su\Re\Ra) nexo (plugin dostępny wraz z dodatkiem Biznes)

Podręcznikużytkownika

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

Programy LeftHand - Obsługa plików JPK. Wrzesień 2016

REFERAT PRACY DYPLOMOWEJ

emszmal 3: Eksport do Subiekt GT homebanking (plugin dostępny w wersji ecommerce)

emszmal 3: Automatyczne księgowanie płatności do zamówień w programie Subiekt Nexo (plugin dostępny w wersji ecommerce)

Instrukcja instalacji i użytkowania Modułu Your Pay dla Prestashop 1.6

Transkrypt:

Jak usprawnić tworzenie i zarządzanie stroną na drupalu Maciej Łukiański

Dlaczego ta prezentacja Najczęściej A można bardziej wydajnie za darmo

O czym będzie Code driven development Wersjonowanie kodu Features hook_update_n workflow

1. git clone 2. git init 3. git status 4. git add 5. git commit 6. git branch 7. git checkout 8. git merge 9. git push 10. git pull 11. git diff

Git krok 1 Zdalne repo Github Bitbucket Projectlocker wlasny serwer Serwer ze stroną Lokalna kopia Wiesz że masz to samo co na produkcji Wiesz co zrobiłeś Szybkie wycofywanie się z tego co zrobiłeś Łatwe znajdowanie wprowadzonych błędów (git bisect) wiesz dokładnie jaki kod tu jest Wiesz jeśli klient coś namieszał Wiesz co zmienione jak ktoś się włamał Możesz łatwo wgrać zmiany (git pull) Możesz łatwo wycofać się do poprzedniego stanu (git checkout) Wiele branchy wątków i łatwość ich łączenia

Git krok 2 repozytorium test staging produkcja Lokalna kopia Łatwo wystawiać stronę testową testerowi Łatwo wystawiać stronę testową klientowi Łatwo dokładnie to samo przenieść na produkcję Test 2 (new feature) Test 3 (new feature 2)

Git krok 3 repozytorium Programista 1 test staging produkcja Programista 2 Łatwo wystawiać stronę testową testerowi Łatwo wystawiać stronę testową klientowi Łatwo dokładnie to samo przenieść na produkcję Programista 3 Test 2 (new feature) Test 3 (new feature 2)

CODE DRIVEN DEVELOPMENT 1) Features + Strongarm 2) hook_update_n()

Cele CDD 1) Odseparowanie konfiguracji od treści 2) Możliwość przenoszenia konfiguracji i zmian 3) Większa widoczność zmian 4) Możliwość równoległej pracy wielu osób

FEATURES

Konfiguracja w drupalu system variable variable_set() variable_get()

Konfiguracja w drupalu block table node table

Co się eksportuje?

Jak do wygląda w praktyce Test 2 tworzymy rodzaj zawartości i do features Test 3 import features

Features workflow Zdalne repo Github Bitbucket Projectlocker wlasny serwer Serwer ze stroną Lokalna kopia Robisz raz i eksportujesz wciągasz wiele naraz (rodzaje zawartości widoki, ustawienia wielu modułów itp.) Wiesz czy klient coś naklikał Możesz wycofać naklikane zmiany

Features workflow repozytorium test staging produkcja Lokalna kopia Łatwo wystawiać stronę testową testerowi Łatwo wystawiać stronę testową klientowi Łatwo dokładnie to samo przenieść na produkcję Test 2 (new feature) Test 3 (new feature 2)

Features workflow repozytorium Programista 1 test staging produkcja Programista 2 Łatwo wystawiać stronę testową testerowi Łatwo wystawiać stronę testową klientowi Łatwo dokładnie to samo przenieść na produkcję Programista 3 Test 2 (new feature) Test 3 (new feature 2)

hook_update_n hook_install

system table

Co można w hook_update_n? Wszystko: Zmienić każdy wpis w bazie danych: Włączyć wyłączyć moduł, feature Revertować features Zmieniać ustawienia modułów i skórek Zmieniać skórki Wywoływać operacje batch Tworzyć i kasować nody, taxonomie i każde inne encje Wszystko...

Jak wiedzieć jaki kod wywołać żeby coś osiągnąć? Wszystko co wyklikujesz dzieje się w kodzie, zajrzyj Menu router > callback > i dalej Np. jak dodać nowy alias do ścieżki: Szukamy url: admin/config/search/path/add Moduł path Callback: path_admin_edit() path_admin_form() path_admin_form_submit() path_save(&$path) funkcja której można użyć

WORKFLOW

Jak zarządzać workflow? Ustawienia globalne i zmiany Struktura i funkcjonalność application Feature 1 hook_update() Historia zmian w witrynie 1. włączamy, wyłączamy, 2. rewertujemy 3. nowe treści 4. nowe menu / taxonomie Feature 2 Feature 3 Feature 4

Code driven development Zdalne repo Github Bitbucket Projectlocker wlasny serwer Serwer ze stroną Lokalna kopia Git pull Drush updb Robisz raz i eksportujesz Żadnych ręcznych działań

Code driven development repozytorium Przetestowany kod wędruje na produkcję Lokalna kopia test staging produkcja Baza i pliki wędrują z produkcji

DUMMY CONTENT

Dummy content 1 node $node = new StdClass(); $node->type = 'answers_question'; $node->language = LANGUAGE_NONE; $node->status = 1; node_object_prepare($node); $node->title = 'Question 1' $node->save(); 100 nodów for ($i = 1; $i <= 100; $i++) { $node = new StdClass(); $node->type = 'answers_question'; $node->language = LANGUAGE_NONE; $node->status = 1; node_object_prepare($node); $node->title = 'Question ' + $i 1) Łatwo wygenerować treści do developmentu. 2) Łatwo wygenerować złożone zależności których devel nie wygeneruje. 3) Jeśli w czasie developmentu zmienimy strukturę (dodamy, usuniemy pola), nie trzeba ręcznie przerabiać dziesiątek nodów. 4) Przy wdrożeniu nie generujemy treści 5)Można tak też wprowadzić treści na stronę produkcyjną (np. terminy taksonomii potrzebne w nowej sekcji) } $node->save();

Przykład support forum jak stackexchange.com: 1 słownik z 15 predefiniowanymi terminami w hierarchii 2 rodzaje zawartości z referencjami i polami (oprate o moduł answers) Głosowanie na odpowiedzi (voting_api) 3 widoki z dodatkowymi zmianami w kodzie Profil forumowicza na Profile2 z którego ciągnięte jest zdjęcie i user name (inne niż w reszcie strony) Wyszukianie na Apache Sorl Uprawnienia Ostylowanie

Korzyści Jakość usługi: Nie działa tak jak na teście - Klient dostanie dokładnie to samo co na teście W czwartek wyłączymy wam witrynę na 3 godziny - nie trzeba się umawiać na wdrożenia W tym tygodniu nie wprowadzajcie treści Nie trzeba zabraniać klientowi wprowadzania treści (bo na dev jest development i się bazy rozjadą) Ale ta strona jest stara artykuły sprzed miesiąca!!! (Można w kółko zgrywać bazę z produkcji) Bezpieczeństwo: Można testować bez końca Szansa błędów na produkcji jest minimalna Można się wycofać jak coś nie wyjdzie Wygoda: Możemy wdrożyć w każdej chwili (wdrożenie trwa kilka minut) Możemy wdrożyć za miesiąc (nie musimy pamiętać co tam było) Może wdrożyć ktoś inny niż ten kto to wykonał

Inne uwagi Technologia pomaga (nie wolno się bać): IDE SASS/LESS FABRIC BASH Programista to człowiek uczący się cały czas

Dziękuję za uwagę Maciej Lukianski maciej.lukianski@droptica.com