Ce folosiți pentru deploy?

Până acum un an, poate doi, modalitatea de deploy pe care o foloseam era foarte simplă (dar nu cea mai bună): FTP (ori urcam toate filele pe FTP ori urcam un zip și îl extrăgeam din cpanel sau ssh).

Apoi am descoperit că pot face pull cu Git de pe branch-ul corespunzător (dev în stage, master în producție). Apoi am descoperit și hooks și că pot face asta automat, dar asta e altă discuție.

Pentru ambele variante de mai sus trebuia să fac export manual la baza de date, ceea ce nu era întotdeauna cea mai plăcută chestie.

De ceva timp tot aud despre Capistrano și despre cum face el deploy atomic, permițând totodată un revert (aproape) instant, fără nici un fel de emoții. Încă nu am avut ocazia să folosesc.

Voi ce folosiți pentru un deploy? Pentru DB sync?

1 Like

Nu am lucrat intens pe deploy, dar un script (fie shell, fie o alternativa cum e Console Component din Symfony), plus Git si migrari pentru db, pare sa fie o solutie buna.
Scriptul fie rulat manual, fie dintr-un hook.

  • Am folosit capistrano pentru 1-2 proiecte: nice. Din pacate acum sunt
    2 versiuni ale lui, ultima avand mai putine resurse pe net. Devine
    confusing atunci cand cauti solutii.

  • Am folosit bash. Merge perfect, pentru ca vorba aia, e scriptul tau.
    Nasol cand gasesti idei noi ca trebuie singur sa iti updatezi
    solutia.

  • Jenkins + ANT. Am trecut la bash. Un pic cam mult overhead pentru
    proiecte php.

  • Acum testez grunt deploy. Inca nu am opinii.

Oricum totul se bazeza pe un “git pull”

1 Like

A se nota ca rollback instant si fara batai de cap nu exista atunci cand sunt implicate baze de date. Acolo e challenge-ul cel mai mare din punctul meu de vedere. Noi folosim un tool epic facut de @victorstanciu. Am mai folosit Spingloops dar e nasol ac tre sa tii repo-ul la ei.

Sincer, mi se pare bataie de cap si deploy pe baze date. De rollback nu mai vorbesc :smile:

Deci e totul Ok cu deploy/rollback de db?

Daca faci migrarile cum trebuie, cred ca nu ai probleme la db rollback.

DBV? Am auzit de el; încă n-am apucat să-l folosesc (deh, fac doar WordPress)

Ala e doar pentru DB, si e simplut. @AdrianBasalic cred ca vorbeste de asta, un tool scris in node.js pentru deploy de pe repo-uri SVN pe (S)FTP, FTPS, etc. Dar care nu e public.

1 Like

Oh! Păi și nu va fi public? :smiley:

Habar n-am sincer, miram-aș să îi mai aloc timp, e unul din multele proiecte pe care le-am inceput și nu le-am mai lansat. Pe ăsta măcar l-am adus într-o formă utilizabilă (dovadă că atât eu cât și @AdrianBasalic și băieții de la el îl folosesc). Îi făcusem chiar și installer and stuff pentru server Linux, și la un moment dat m-am luat cu altele și a rămas la naftalină.

Eu am rămas tot la stadiul upload to ftp și folosesc dploy, e fain că se bazează pe git.

3 Likes

Pentru cei care va luptati cu shared hosting, o alternativa poate fi git-ftp, http://git-ftp.github.io/git-ftp/

@neamtua: cred am folosit unealta asta (sau una asemănătoare). La momentul respectiv nu știa să facă upload inteligent (adică doar la filele dintre commits) și dura o veșnicie să facă o conexiune nouă pentru fiecare filă. Transferam 100kb în câteva minute…

Pe de altă parte, ce recomandă @vlad pare foarte interesant.

Subscriu, imi place ce a dat @vlad. O sa il incerc desi nu sunt deloc fan nodejs.

git-ftp nu suporta sftp, defapt folosește curl și trebuie să-ți recompilezi libraria curl cu openssl (tried that, once), dar dploy merge direct, e superb :smile:

1 Like

SVN + o solutie de deploy facuta in-house (practic am un dashboard cu proiectele si de acolo pot sa dau update la cod, revert la o versiune anterioara, am evidenta cu ce, cine si cand a dat update in productie). Deocamdata isi face treaba de minune, asa ca nu ma gandesc sa trec pe altceva.

Git si ssh, mai nou experimentez pluginul git pt brackets.

dokku este o alternativa heroku-ish :smile:

I keep it simple, oldschool. rsync.

La Altex folosim combinatia Capistrano / Webistrano. Tragem dintr-un repo de pe GitHub.La fail dam rollback. Pentru baza de date avem installere php pentru magento.
E destul de simplu sa fim sincronizati la nivel de db intre live, stage si masinile virtuale de dev.
In caz ca ne da fail la installer-ul pentru db avem doar 1 chestie manuala de facut. Decrementam sau stergem randul specific modulului din tabela core_resource si rulam installerul din nou.