de Bryan Lee
Table of Contents
Implementare continuă Laravel cu CircleCI și Deployer

Există multe soluții de implementare acolo cu implementarea Laravel, variind de la SSH în echipamentul dvs. și git pull
fișierele (?) pentru a economisi timp, cum ar fi Trimis sau rulează-ți propriul cu Deployer. Personal îmi place Deployer, deoarece este gratuit, foarte flexibil și îți poate sprijini proiectele de la vârsta copilăriei până când ajungi la mai multe mașini.
Deployer funcționează executând scripturile de implementare la nivel local și putem face acest lucru și mai convenabil integrând Deployer în conducta dvs. CI. Pentru un proiect recent, am folosit CircleCI pentru a rula toate testele mele și pentru a le implementa automat.
Configurați implementatorul local
Pentru a economisi timp, vă recomand cu tărie să aveți Distribuitor instalat local și configurat și funcționează pentru aplicația dvs. Acest lucru economisește mult timp când trebuie să faceți depanare la configurarea deployer atunci când construirea CircleCI nu reușește.
Laravel și CircleCI
Dacă aveți deja configurat CircleCI pentru testele proiectului Laravel, treceți la următoarea secțiune. În caz contrar, presupun că cel puțin aveți deja un cont CircleCI și un proiect de bază creat în interior.
Creeaza o .circleci/config.yml
și cu cele de mai jos
version: 2
jobs:
build:
docker:
# Specify the version you desire here
- image: circleci/php:7.1-browsers
- image: circleci/mysql:5.7
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: ''
MYSQL_DATABASE: laravel
working_directory: ~/laravel
steps:
- checkout
- run:
name: Install PHP exts
command: |
sudo docker-php-ext-install zip
sudo docker-php-ext-install pdo_mysql
sudo apt install -y mysql-client
- run: sudo composer self-update
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "composer.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: composer install -n --prefer-dist
- save_cache:
paths:
- ./vendor
key: v1-dependencies-{{ checksum "composer.json" }}
- run:
name: Setup Laravel stuffs
command: |
php artisan migrate --force
- run: ./vendor/bin/phpunit
workflows:
version: 2
notify_deploy:
jobs:
- build
Acesta este un element de bază config.yml
pentru Laravel. Acesta va instala PHP, MySQL și va rula teste PHPunit. Nu ezitați să modificați acest lucru pentru a se potrivi nevoilor dvs.
Implementarea CircleCI
După efectuarea testelor noastre, dorim ca CircleCI să înceapă automat implementarea pe serverul nostru. Amintiți-vă că Deployer folosește SSH, deci, în serverul nostru la distanță, dorim să creăm o pereche de chei SSH ssh-keygen -t rsa -b 4096 -C “[email protected]"
. Vrem să adăugăm această cheie pe care am creat-o în CircleCI ca cheie de implementare. Rețineți amprenta, deoarece va trebui să adăugăm acest lucru în fișierul nostru de configurare mai târziu.
Să creăm o nouă lucrare în fișierul nostru de configurare:
jobs:
build: ... # from above
deploy:
docker:
- image: circleci/php:7.2-browsers
working_directory: ~/laravel
steps:
- checkout
Acest lucru îi spune lui CircleCI că avem un nou job numit deploy
și să o construiți pe baza imaginii de andocare a browserelor php-7.2.
Vă amintiți amprenta de care am luat act atunci când am adăugat-o în CircleCI? Trebuie să menționăm acest lucru în configurația noastră, astfel încât cheia SSH să fie prezentă în containerul nostru.
jobs:
build: ... # from above
deploy:
docker:
- image: circleci/php:7.2-browsers
working_directory: ~/laravel
steps:
- checkout
- add_ssh_keys:
fingerprints:
- "YOUR_FINGERPRINT"
Deci acum, CircleCI știe să adauge această cheie prin amprenta digitală în containerul de andocare și acest lucru ne va permite să rulăm Deployer și SSH pe serverul nostru la distanță pentru a fi implementat.
jobs:
build: ... # from above
deploy:
docker:
- image: circleci/php:7.2-browsers
working_directory: ~/laravel
steps:
- checkout
- add_ssh_keys:
fingerprints:
- "YOUR_FINGERPRINT"
- run:
name: Install Deployer
command: |
curl -LO https://deployer.org/deployer.phar
sudo mv deployer.phar /usr/local/bin/dep
sudo chmod +x /usr/local/bin/dep
- run:
name: Deploy
command: |
dep deploy www.your_server.com
Cu deploy
job definit, ultimul pas ar fi să îi spunem lui CircleCI să îl ruleze după ce testele noastre trec. Este simplu, avem deja un flux de lucru de bază numit notify_deploy
pe care ne putem baza.
workflows:
version: 2
notify_deploy:
jobs:
- build
- deploy:
requires:
- build
filters:
branches:
only: master
Acest lucru spune CircleCI că în notify_deploy
flux de lucru, în afară de alergare build
, vrem să fugim deploy
după ce este terminat și să o faceți numai pe master
ramură.
Cu toate lucrurile făcute, acum putem împinge fișierul de configurare în depozitul nostru git și îl putem urmări testând și implementând singur. Folosiți un alt mod de implementare a Laravel? Anunță-mă, mi-ar plăcea să aud despre asta!