Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Automatyzacja developmentu
Forum PHP.pl > Forum > PHP
markonix
Zastanawiam się nad aktualnymi metodami zarządzania developmentem z którego Wy korzystanie lub korzysta się w firmach i jego uproszczeniem przy projekcie PHP.
Obecnie, przy ręcznym uploadzie prac zrobionych na localu (Vagrant) jest troszkę pracy bo każdą paczkę zmian w postaci już pushniętych commitów muszę wrzucać najpierw na test co wiąże się z:
- zalogowanie się do SSH
- wyłączaniem strony (funkcja wbudowany w FW)
- pobraniu zmian (git pull) z zdalnego repo
- wykonaniem composer update jeżeli zmienił composer lock
- wykonaniem migracji jeżeli są potrzebne
- wykonaniem kilka operacji typowych dla FW (np. w przypadku L5 dobrze jest odświeżyć cache itp)
- może jakieś testy automatyczne
- włączeniem strony.
Potem przy akceptacji zmian, to samo tylko z większą ostrożnością (zwłaszcza przy migracjach) trzeba wykonać dla serwera docelowego.

Na pewno da się to jakoś uprościć jakimiś narzędziami. Nie muszą być koniecznie darmowe. Repo trzymam na bitbucket. Jak tu u Was wygląda? Jak to zrobić przyjemnym aby nie tęsknić za starym, szybkim grzebaniem w projekcie via FTP i PHPMyAdmin? smile.gif
Pyton_000
Jenkins, Deployer, Rocketeer,
http://jonathannicol.com/blog/2013/11/19/a...from-bitbucket/

i wieeele wieeeele innych... wystarczy poszukać, poczytać≤ wybrać co Ci się podoba
markonix
Tak jak przejrzałem pokrótce po samej analizie przykładów to najbardziej przystępny wydaje mi się Deployer. Na plus widzę gotowe schematy dla Laravel.
Może jakaś rekomendacja? Używałeś/używasz?
Pyton_000
Używam Deployer. Na potrzeby prywatnych projektów jest ok. Miałem plan również go zastosować do dużego projektu produkcyjnego w Firmie ze względu właśnie na wersjonowanie wydań. Dla Laravela działa dobrze.

Rocketeer można zintegrować z Laravelem i robić deploy bezpośrednio z Artisana.
markonix
Gdzie zainstalować Deployera?

Na serwerze developerskim (Vagrant) czy lokalnie (Windows)?
Czy na produkcji wymagany też on jest (tak jak git'a potrzebuje tu i tu)? Czy to wszystko się dzieje przez SSH?
Te takie release'y rozumiem, że trzyma już na docelowym serwerze aby łatwo się między nimi przełączać?

Kod
vagrant@homestead:~$ php vendor/bin/dep pwd -vvv
➤ Executing task pwd
[production] > pwd
  SSH multiplexing initialization
Enter passphrase for key '/home/vagrant/.ssh/id_rsa':
root@ebizo.pl's password:
Permission denied, please try again.
root@ebizo.pl's password:

Dość szybko stanąłem :/ Po wpisaniu prawidłowego hasła nic się nie dzieje (przy wpisaniu błędnego zwraca prawidłowo Access denied więc się łączy).
Pyton_000
Klucz ssh z vagrant wrzucony na serwer?
Pokaż plik z taskami.
markonix
Nie, nie wrzucałem klucza bo właśnie nie wiem jaki klucz gdzie wrzucić poza tym myślałem, że póki co mogę się logować na login i hasło.
Na serwerze docelowym rozumiem, że mam wrzucić w root /.ssh authorized_keys klucz publiczny tylko który to jest?
C:\Users\[NAZWA_USERA_WINDOWS]\.ssh\id_rsa.pub ten?

Co do pliku z instrukcjami daleko nie zaszedłem, na razie stoję po prostu na takim hello world sprawdzającym czy się łączy zgodnie z dokumentacją.

  1. <?php
  2. namespace Deployer;
  3. require 'recipe/laravel.php';
  4.  
  5. // Configuration
  6.  
  7. set('ssh_type', 'native');
  8. set('ssh_multiplexing', true);
  9.  
  10. set('repository', 'git@domain.com:username/repository.git');
  11.  
  12. add('shared_files', []);
  13. add('shared_dirs', []);
  14.  
  15. add('writable_dirs', []);
  16.  
  17. // Servers
  18.  
  19. server('production', 'DOMENA', PORT)
  20. ->user('root')
  21. ->password(null)
  22. // ->set('deploy_path', '/home/ebizo/domains/abc.pl')
  23. ->pty(true);
  24.  
  25.  
  26. // Tasks
  27.  
  28. desc('Restart PHP-FPM service');
  29. task('php-fpm:restart', function () {
  30. // The user must have rights for restart service
  31. // /etc/sudoers: username ALL=NOPASSWD:/bin/systemctl restart php-fpm.service
  32. run('sudo systemctl restart php-fpm.service');
  33. });
  34. after('deploy:symlink', 'php-fpm:restart');
  35.  
  36. // [Optional] if deploy fails automatically unlock.
  37. after('deploy:failed', 'deploy:unlock');
  38.  
  39. // Migrate database before symlink new release.
  40.  
  41. before('deploy:symlink', 'artisan:migrate');
  42.  
  43. task('pwd', function() {
  44. $result = run('pwd');
  45. writeln("Current dir: $result");
  46. });
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.