-
Notifications
You must be signed in to change notification settings - Fork 5
Fejlesztői tudnivalók
Bertalan Fodor edited this page Sep 9, 2022
·
50 revisions
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
- 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.
- az after.sh-t le kell futtatni utólag (a homestead-be berakni elég törékeny sajnos)
- 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
Ahhoz hogy ez működjön, be kell állítani a dropbox linket a szövegforrás fájlhoz (a dl=0 paramétert dl=1-re lecserélni) a .env fájlban.
sudo apt update
sudo apt install php
sudo apt install mysql-server
sudo add-apt-repository ppa:ondrej/nginx-mainline
sudo add-apt-repository ppa:ondrej/php
sudo apt install php5.6
curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh -o install_nvm.sh
bash install_nvm.sh
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
nvm install v6.2.2
sudo apt install php5.6-xml
sudo apt install php5.6-zip
sudo apt install php5.6-gd
sudo apt install php5.6-mbstring
sudo apt install php5.6-mysql
sudo apt install php5.6-curl
cp .env.example .env
sudo mysql < ./tmp/database.sql
echo '[mysqld]' | sudo tee /etc/mysql/conf.d/szentiras-hu.cnf
# TODO ez nem mukodik MySQL 8-nal, echo 'query_cache_type=1' | sudo tee --append /etc/mysql/conf.d/szentiras-hu.cnf
echo 'default_authentication_plugin=mysql_native_password' | sudo tee --append /etc/mysql/conf.d/szentiras-hu.cnf
sudo service mysql start
sudo mysql
CREATE USER 'homestead'@'localhost' IDENTIFIED WITH mysql_native_password BY 'secret';
GRANT ALL PRIVILEGES ON *.* TO 'homestead'@'localhost';
exit;
source install-dev.sh
sudo service mysql restart
sudo apt-get install -y hunspell
sudo apt-get install -y hunspell-hu
php5.6 artisan migrate -n
-> .env-be beirni a dropbox linket (de dl=0 helyett dl=1 kell)
php5.6 artisan szentiras:updateTexts
php5.6 artisan serve
- continuous deployment van, azaz:
- push után a travis-ci.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
- push után a travis-ci.org/borazslo/szentiras.hu
- 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
- Code conventions, practices
- 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
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