Fejlesztői tudnivalók

Bertalan Fodor edited this page Oct 15, 2017 · 42 revisions

Fejlesztőkörnyezet telepítése

A legegyszerűbb a Laravel Homesteadet használni, így nem kell a gépedre PHP-t, MySqlt, webszervert telepíteni, hamem egy virtuális gépet rakunk fel, ami minden szükséges alkalmazást tartalmaz, megfelelően konfigurálva. A telepítés menete:

  • valahova szedd le a kódot gittel (pl. c:\prog\www\szentiras.hu)

  • Telepítsd a VirtualBoxot és a Vagrantot

  • csinálj egy homestead könyvtárat valahol (pl. c:\prog\www\homestead)

  • ott add ki a vagrant box add laravel/homestead parancsot

  • ugyanitt git clone https://github.com/laravel/homestead.git .

  • majd git checkout v6.3.0 -b v6.3.0

  • bash init.sh

  • A Homestead.yaml-ot állítsd be:

    folders: - map: c:/prog/www/szentiras.hu to: /home/vagrant/szentiras-hu

    sites: - map: dev.szentiras.hu to: /home/vagrant/szentiras-hu/public

    databases: - bible

    variables: - key: APP_ENV value: local

  • az after.sh tartalmát (a homestead könyvtárban írd felül a repositoryban lévő after.sh-val)

  • vagrant up

Ezzel létrejön egy virtuális gép, amin minden szükséges dolog telepítve van és egy csökkentett tartalmú tesztadatbázis.

  • Adatbázis feltöltése fordításokkal / versekkel helyi fájlból: A virtuális gépre belépve (vagrant ssh, cd szentiras-hu): php artisan szentiras:updateTexts

Javasolt IDE

Néhány vegyes gondolat

  • continuous deployment van, azaz:
    • push után a travis-mc.org/borazslo/szentiras.hu
      • letölti a függőségeket
      • létrehozza az adatbázist
      • lefuttatja a séma manipuláló migrationöket és a data seedert (ami a tesztadatokat tölti be)
      • lefuttatja a teszteket
      • sikeres tesztek esetén felpusholja a staging environmentbe az aktuális állapotot
    • a master branch kerül ki a staging környezetbe (staging.szentiras.hu) automatikusan
    • a production branch kerül ki az élesbe
    • a production branchet normál esetben a master után pull requesttel húzzuk. A pull requestet a travis lefordítja, leteszteli, és ha zöld, akkor a pull request merge-ölése után megint travis, és az feltolja élesbe
    • van egy git hook, ami push után
      • leállítja a webkiszolgálót
      • átáll az új kódra
      • letölti a függőségeket
      • lefuttatja a migrationöket (a seedert nem, hiszen azok csak az integrációs tesztek adatai)
      • elindítja a webkiszolgálót
  • fontos, hogy az adatbázisséma minden módosítása migration legyen
    • feltöltés előtt tesztelni kell, ehhez --env=testing beállításnál használható a migration:refresh (ami az összes saját táblát eldobja és újrahúzza)
    • a data seederben csak az integrációs tesztek adatai vannak, a sémaváltozással összefüggő default adatbetöltés, legacy migráció stb. helye a migrationökben van (bármit is mond a laravelbook.com meg mások), hiszen azok az adatok abszolút függenek az aktuális sémaverziótól.
  • A tesztelésről
    • a célunk, hogy minél többen kapcsolódjanak be a fejlesztésbe
    • egy ilyen open source projektnél különösen fontos, hogy sok automatizált teszt legyen
      • unit testek: live függőségek nélkül, minden service-t (adatbázis, mailer, dropbox etc.) mockolva
      • integrációs tesztek: előre vagy a teszt közben bekonfigurált teszt-service-ekkel
      • funkcionális tesztek: Selenium
  • Code review
    • fontos, hogy jó minőségű kód kerüljön be, DRY, SOLID, KISS
  • Code conventions, practices
    • PSR-1 és PSR-2
    • dependency injection (a tesztelés segítésére)
  • Angol kód, kommentek, commit üzenetek
    • angol nyelven csinálunk mindent, aminek köze van a kódhoz, erre volt már szükség pl. amikor az egyik library-be bug reportot küldtünk és a kijavításhoz a fejlesztőnek rá kellett nézni a mi kódunkra

Hyper-V és Vagrant Windows 10-en

Ha Hyper-V-t és emelett Laravel Homesteadet is szeretnél használni, kell egy kis kavarás, mivel a Hyper-V és a VirtualBox ütik egymást.

A Laravel Homestead egyelőre nem támogatja a hyperv-t, ezért a következők a teendők:

  • https://code.johnpbloch.com/2015/07/laravel-homestead-on-hyperv/
  • Hyper-V managerben kell egy új Internal switch
  • a Windows Settings > Network & Sharing Centerben az internetkapcsolatot meg kell osztani az imént létrehozott virtuális kapcsolattal (ettől lesz majd a Hyper-V-s gépünknek IP-címe)
  • a Homestead.rb fájlt át kell írni, hogy a virtuális gép által látott IP-címmel próbálja a megosztott könyvtárt megosztani:
    • blabla
    • config.vm.synced_folder ... blabla ... smb_host: "a te hosztneved", **options
    • config.vm.synced_folder '.', '/home/vagrant', disabled: true
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.