Drush Make Használata és Telepítési Profil Készítése

Robert Petras képe

Sajnos most sem tudok jelen lenni az újabb budapesti Drupal találkozón és megtekinteni a színvonalas előadásokat, pedig István pont a Drush használatáról fog előadni. Kár-kár.

Ősz óta vagyok aktív használója a Drushnak (kudos zionduc), de elérkezett az idő arra, hogy tovább mélyítsem a tudásomat ezen a területen is.

Hétvégén nekiálltam megismerkedni a Drush Make használatával és a Telepítési Profil elkészítésével. Bődületes, hogy mennyire hatékonyan tudja befolyásolni a Make fájlok futtatása a Drupal weblapok telepítését. Rövid idő alatt barátom lett hát a Drush Make.

A telepítő fájlok létrehozása azonban egy olyan terület, ami sokkal nagyobb tudást és tapasztalatot igényel egy zöldfülűtől, ami bizonytalanná tesz.

Egyszerű Drush Make fájlt futtatni valamint hasonlóan egyszerű telepítő profilt létrehozni nem volt gond a számomra ha ezeket külön-külön kezelem egymástól.

Ott akadtam el, hogy megpróbáltam valahogy párosítani a két dolgot. Azt szerettem volna elérni, hogy előbb lefuttatok egy rövid drush make parancsot ami három dolgot végez el:

1. Letölti a legfrissebb Drupal 7 kiadását
2. Letölt egy telepítési profilt egy adott webhelyről (ez lehet GitHub vagy a saját szerver, stb)
3. A Drupal telepítése során a kiválasztott profil (mindegy, hogy drush si-vel vagy a böngészős telepítéssel) pedig lefuttat egy újabb drush make parancsfájlt ami letölti a további contrib Drupal modulokat, majd utána nekiáll a profilban külön megadott modulokat bekapcsolni.

Semmilyen többlet információt nem használtam még a telepítő profilban, csak bemásoltam a "standard" profil .install, .profile fájlokat. Egyedül az .info fájlt módosítottam az újabb modulok engedélyeztetésével.

Külön lépesekben minden jól működött, csak arra nem jöttem rá, hogy a miként tud a telepítő profil futtatni egy újabb .make parancsfájlt.

Megnéztem a "pp" és a "csakistvan" nyilvános GitHub repóját is, ahol habár hasznos információt kaptam a srácoktól (közszönöm, nagyok vagytok!), valahogy mégsem tudtam megoldani a fenti problémát.

Közben egy ausztráliai Drupal fejlesztő tartott az elmúlt évben egy előadást pont erről a témáról, azt is megnéztem és habár sokat segített mégsem tudtam a dolog végére járni.

Lehet, hogy csak egy sort kell beillesztenem és működne a dolog, de vajon hol és mit? Előre is megköszönném, ha valaki a tapasztaltabb kollégák közül segíteni ezt a kis buckát átlépni! Egy egész éjszakám ráment a keresgélésre és mára már túl zombi voltam, ahhoz, hogy megnézzem a Spark vagy a Commerce disztrókat, ahol tudom, hogy a telepítő profil make fájlt futtat le és sok-sok contrib modult engedélyez a folyamat alatt.

Feltöltöttem a DropBoxra egy egyszerű minta telepítési csomagot is, ezt megnézve láthatjátok, hogy mire gondoltam pontosan: http://db.tt/w8XznelR

Vajon mit rontottam el, Ti hogyan csinánátok jobban és hatékonyabban?
Előre is köszönöm a segítségeteket!

Drupal telepítési profil készítése

Taxonomy upgrade extras: 
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Robert Petras képe

Sorry, természetesen a .install, .profile és az .info fájlokat átírtam ott, ahol szükséges volt ahhoz, hogy a telepítő profil elinduljon rendben. Ilyen volt pl. a function minta_install() és a function minta_form_install_configure_form_alter(&$form, $form_state) stb. kódrész is.

A minta telepítő profil egyébként nem csinál semmi egyebet, minthogy letölti a Views és a CTools modulokat és engedélyezi azok használatát.

0
0
pp képe

A profile nem tölt le semmit, az beállítja a modulokat. A make fájl az ami leírja, hogy miket, honnan és hova kell letölteni ahhoz, hogy a profil egyáltalán elinduljon.

Simán összerakhatsz egy alap.make fájlt, amiben a core-on kívül benne van a views, ctools, rules stb. Ekkor megspórolod azt az időt, hogy kockás füzetből összevadászva kelljen letöltened ezeket a modulokat.

Aztán összerakhatsz egy dev.make fájlt, ami beinkludolja az alap.make fájlt. Ekkor kapsz egy olyan make fájlt, ami mindent tartalmaz mint az alap, de pluszban benne vannak a fejlesztői eszközök (devel, devel_themer, potx, coder, stb.)

Ezek a fájlok nem csinálnak semmit se, csak leírják, hogy milyen modulokra(foltokra stb.) van szükséged. Ezek segítségével a drush make-el könnyedén le tudod tölteni/összeállítani a fájljaidat.

Make fájlt profile nélkül is tudsz csinálni, és használni. Nagyon hasznos önmagában is.

Profil készítésnél én javasolnám a minimal profilt kiindulási alapként, és ha azzal már nagy gyakorlatod van, akkor térni át a standardra. Akár úgy is, hogy folyamatosan emelsz át abból kódrészleteket.

Komplexitás szintjén ha a Drush make profi használata 1 egység, akkor ugyan az profil-ban 50-100 egység.

Amit hibát szerintem elkövettél, hogy végtelen ciklusba kergetted szegény Drush make-t. Ugyanis úgy dolgozik, hogy ha letölt egy csomagot és abban van egy, a csomag kulcsával megegyező make fájl, akkor azt végrehajtja. Ha abban megint van egy akkor azt is... Ha ugyan az a neve a projektnek, mint a make fájlnak akkor végtelen ciklusba kerül.

A mint-core.make-ban a következő sorokat:

  1. projects[minta][type] = "profile"
  2. projects[minta][download][type] = "get"
  3. projects[minta][download][url] = "http://petrasrobert.eu/resources/minta.tar.gz"

írd át erre (pl.):

  1. projects[minta_profile][type] = "profile"
  2. projects[minta_profile][download][type] = "get"
  3. projects[minta_profile][download][url] = "http://petrasrobert.eu/resources/minta.tar.gz"

pp

pp

3
0
Robert Petras képe

Köszönöm az értékes válaszod. Igazad van "pp", hogy kevertem a szezont a fazonnal, Mea Culpa. Köszi a helyreigazítást, hasznát vettem mindannak amit tanácsoltál!

Kicsit hülyén érzem magam, mert nem mindig tudom egyértelműen kifejezni, hogy eddig mire jutottam önállóan, mi az ami már jól megy és legfőképpen, hogy mit szeretnék elérni. Arról nem is beszélve, hogy miben kérem a segítségeteket.

A Drush Make használatának megismerése jó alkalom volt a számomra arra, hogy a Drupal telepítő profilok létrehozásával is foglalkozzak illetve legyen egy jó ürügy arra, hogy a GitHub-on is nekiessek egy új reponak. Biztosra veszem, hogy gyorsabb lesz ezentúl egy-egy Drupal weboldal telepítése a számomra.

Kedden a második márciusi online megrendezésre kerülő székesfehérvári Drupal felhasználók találkozóján, (egy Google+ Hangout-on) már nemcsak a Drushról tartottam egy rövid kedvcsinálót, hanem egy Drush Make-t is le tudtam futtatni a többieknek. Minden résztvevő aktívan kivette részét a találkozón, mert mindenki bevállalt egy-egy kis előadást valamilyen témában.

Tényleg úgy van ahogy mondtad, a telepítő profilok létrehozása már jóval elmélyültebb Drupal tudást igényel. Én már annak is nagyon örültem a héten, hogy odáig képes voltam eljutni, hogy modulokat tudtam engedélyeztetni vele ezzel is felgyorsítva a munkafolyamatot.

Persze látom, hogy mi mindenre lehet még képes a standard profil, a Spark disztró vagy egyéb Drupal kiadások profilja. Észvesztő, és akkor még nem is említetted a Feature-t. Ez még nagyon távoli cél előttem, hogy valahogy összeboronáljam a Drush + Drush Make + Telepítő Profil és a Featuret mint eszközöket.

Ha van kedved és szabad időd, akkor megnéznéd azt a közel 3 perces kisfilmet, amit ma éjjel készítettem a Drush Make tanuló folyamatról? Arról, hogy meddig jutottam el. Lehet, hogy mások gázosnak látják ezt, de most bevállalom így hajnal 3-4 felé kicsit zombi állapotban.

Örülnék még egy utolsó visszajelzésnek, mert a válaszodban írtad, hogy egy végtelen ciklusba kergettem a Make parancsot, de biztosan így van vagy csak amiatt láttad így, mert korábban nem voltam érthetőbb? Most minden rendben lefutott.

A "minta" Drupal telepítő profil a GitHub-on: https://github.com/robertpetras/minta

A kisfilm a "minta" Drush Make használatáról: http://www.youtube.com/watch?v=2rN7p3dZkjk&feature=share&list=PLotV3wAnH9ROLVGsOpe9Y64jfjBwLD2mE

Legvégül pedig ezt a Drush Make Build-et futtatva indítottam el a munkafolyamatot:

  1. ; ------------------------------------------------------------------------------
  2. ; DRUPAL CORE
  3. ; ------------------------------------------------------------------------------
  4.  
  5. projects[drupal][type] = "core"
  6.  
  7. ; ------------------------------------------------------------------------------
  8. ; INSTALLATION PROFILE
  9. ; ------------------------------------------------------------------------------
  10.  
  11. projects[minta][type] = profile
  12. projects[minta][download][type] = git
  13. projects[minta][download][url] = git@github.com:robertpetras/minta.git
  14. projects[minta][download][branch] = master

Előre is köszönöm, ha válaszolni tadna valaki arra, hogy mindtent rendben talál-e vagy sem!

0
0
Robert Petras képe

Ahogy a fent belinkent filmen látjátok sikerült összehoznom a Drush Make build fájl futtatásával egy Drupal telepítő profilban újabb Make fájl futtatását.

Bosszantott azonban a dolog, hogy nem tudtam jól artikuláltan megfogalmazni, hogy mi volt a gondom és hol akadtam el. Addig keresgéltem hát, amíg találtam egy jó leírást erre a folyamatra.

A jól érthető választ a Drush telepítése/letöltése során létrehozott dokumentációs mappában találtam meg. A ./drush/docs/make.txt eredetileg markdown fájlnak készült doksi oldalon van egy rész, amely leírja a rekurziós folyamatot.

Bemásolom ide ezt a rész, hátha egyszer valaki megtalálja az oldalt hasonló kérdésre keresve a választ.

RECURSION

If a project that is part of a build contains a .make itself, drush make will automatically parse it and recurse into a derivative build.

For example, a full build tree may look something like this:

  1. drush make distro.make distro
  2.  
  3. distro.make FOUND
  4.  
  5. - Drupal core
  6. - Foo bar install profile
  7. + foobar.make FOUND
  8. - CCK
  9. - Token
  10. - Module x
  11. + x.make FOUND
  12. - External library x.js
  13. - Views
  14. - etc.

Recursion can be used to nest an install profile build in a Drupal site, easily build multiple install profiles on the same site, fetch library dependencies for a given module, or bundle a set of module and its dependencies together.

For Drush Make to recognize a makefile embedded within a project, the makefile itself must have the same name as the project.

For instance, the makefile embedded within the managingnews profile must be called "managingnews.make". The file should also be in the project's root directory. Subdirectories will be ignored.

Build a full Drupal site with the Managing News install profile:

  1. core = 6.x
  2. projects[] = drupal
  3. projects[] = managingnews
2
0