1. Начало
  2. Хостинг
  3. Git
  4. Прехвърляне на промени от cPanel Git хранилище към директория

Прехвърляне на промени от cPanel Git хранилище към директория

След като извършите промени по хранилището в cPanel, можете да прехвърлите окончателната версия на проекта или части от него към друга директория в хостинг акаунта (например тази на реалния сайт).

Прехвърлянето може да се извърши ръчно или напълно автоматично, след като използвате push на промените към cPanel хранилището.

Автоматично прехвърляне на промените

Автоматичното прехвърляне на промените (deploy) е възможно, когато подадете push заявка към хранилището в cPanel. Например cPanel хранилището е основното за проекта и към него Вие подавате промените с push.

Системата автоматично засича push заявките и активира изпълнението на задачите във файла .cpanel.yml.

Ръчно прехвърляне на промените

Ръчното прехвърляне на промените се извършва, когато не можете да подадете директна push заявка към cPanel хранилището. Например основното хранилище е отдалечено и се намира в GitHub. В този случай, Вие първо изтегляте промените от GitHub през cPanel » Git Version Control » Управление (на хранилището) и бутона Update from Remote (или pull заявка през SSH достъп). И след това ще можете да извършите прехвърляне към директория в акаунта чрез бутона Deploy HEAD Commit. Кликването на този бутон активира изпълнението на файла .cpanel.yml.

Активиране на изпълнението на файла .cpanel.yml (с бутон Deploy HEAD Commit).

За да е възможно автоматичното прехвърляне към директория в хостинг акаунта, уверете се, че избраното хранилище отговаря на следните изисквания:

  1. Има активен branch или дърво от файлове и директории.
  2. В основната директория на хранилището съществува коректен .cpanel.yml файл (добавен там през Git).
  3. Няма промени в текущия активен branch, за които не е направен commit.

Когато всички условия за Deploy са спазени, може да се извърши прехвърляне на промените в дадена директория.

Файл .cpanel.yml

Файлът .cpanel.yml определя как и къде да се прехвърлят промените. Прехвърлянето представлява копиране на файловете и директориите от хранилището в избрана директория в хостинг акаунта.

Във файла .cpanel.yml се поставят на нов ред командите, които ще се изпълнят при изпълнението на файла. Може да се използват различни Linux команди.

Бележка: Файлът .cpanel.yml е нужно да се качи чрез Git в основната директория на хранилището. Ако просто се създаде през Файловия мениджър или се качи през FTP, файлът няма да бъде засечен като коректен от Git.

Създаване на файла .cpanel.yml

Файлът .cpanel.yml е нужно да се качи в cPanel хранилището чрез Git. Когато не е наличен този файл, в интерфейса на cPanel » Git Version Control » Управление » Pull или Deploy бутонът Deploy HEAD Commit няма да е активен.

Ако файлът не е качен в хранилището, системата няма да може да прехвърли промените автоматично или ръчно (Deploy HEAD Commit).

Например ако публикувате от Ваше локално хранилище, към отдалеченото в cPanel, следвайте посочените стъпки, за да добавите файла .cpanel.yml.

1. Създайте файл .cpanel.yml в локалното хранилище.

Няма значение как ще добавите файла в локалното хранилище. Например може да го създадете с командата:

touch .cpanel.yml

Ако вече знаете какви задачи искате да поставите в този файл, може да го отворите с предпочитания текстов редактор, например:

vim .cpanel.yml

или

notepad .cpanel.yml

Ако вече знаете какво трябва да е съдържането в този файл, може да го запишете.

Важно: Вижте описание на съдържанието и редовете във файла .cpanel.yml в следващия раздел от статията.

2. Публикувайте промените в локалното хранилище.

Подгответе промените за публикуване с:

git add .

И ги публикувайте:

git commit -m 'created cpanel.yml file'

3. Изпратете промените към отдалеченото cPanel хранилище.

За да изпратите промените към cPanel хранилището, използвайте:

git push origin master

Файлът .cpanel.yml трябва да е качен успешно в директорията на хранилището в cPanel.

Бутонът Deploy HEAD Commit в cPanel » Git Version Control » Управление » Pull или Deploy трябва да е активен.

Ръчно активиране на изпълнението на задачите в .cpanel.yml файла.

Автоматичното изпълнение на задачите от файла .cpanel.yml се случва, след като Git в cPanel засече получена команда push към cPanel хранилището. Например от Вашето локално хранилище качвате промените с push в cPanel хранилището.

Ако използвате отдалечено хранилище в GitHub например, първо трябва да качите .cpanel.yml файла в него и след това да дръпнете (pull) промените в cPanel хранилището от cPanel » Git Version Control » Управление » Pull или Deploy » Update from Remote. След като дръпнете промените, файлът .cpanel.yml ще се намира в cPanel хранилището и бутонът "Deploy HEAD Commit" ще стане активен.

Файлът .cpanel.yml е дръпнат от отдалечено хранилище в GitHub и вече се намира в cPanel хранилището, системата активира възможността за Deploy.

Бележка: Когато не подавате директно push към cPanel хранилището (например използвате pull от cPanel хранилището, за да издърпате промените от GitHub хранилище), вместо всеки път ръчно да използвате бутона "Deploy HEAD Commit", може да се създаде крон задача, която периодично ще задейства процеса по Deploy:

/usr/local/cpanel/bin/uapi VersionControlDeployment create repository_root=/home/cpuser/repositorypath

/home/cpuser/repositorypath - заменете с пътя до хранилището;

Съдържание на файла .cpanel.yml

Примерно съдържание на файла .cpanel.yml:

---
deployment:
      tasks:
        - export DEPLOYPATH=/home/cpuser/public_html
        - /bin/cp filename $DEPLOYPATH   
        - /bin cp subfolder $DEPLOYPATH

DEPLOYPATH - съдържа целия път до целевата директория;
/bin/cp - това е изпълнимият файл на Linux командата "copy";
filename - име на файла, например index.html; така зададена задачата на този ред, ще потърси файла filename в основната директория в хранилището;
subfolder - поддиректория; така зададена задачата, ще копира само поддиректорията без съдържанието в нея;

Целевата директория, в която ще се копира съдържанието, може да е всяка в хостинг акаунта, например поддиректория на public_html:

DEPLOYPATH=/home/cpuser/public_html/dir

Няколко примерни задачи за копиране на съдържание от хранилището в целевата директория.

Копиране на цялото съдържание на поддиректория:

- /bin/cp -r images $DEPLOYPATH

Атрибутът "-r" към командата cp указва рекурсивно копиране на цялото съдържание от директорията images. Ако директорията не съществува, автоматично ще бъде създадена.

Копиране на точно определен файл, намиращ се в поддиректория:

- /bin/cp css/style.css $DEPLOYPATH/css

Тъй като параметърът DEPLOYPATH съдържа само основната директория (/home/cpuser/public_html), ако не се допълни към него пътя до поддиректорията (/css), файлът style.css ще се копира в основната директория (public_html).

Копиране на цялото съдържание на хранилището:

- /bin/cp -r *

Важно: Много е важно да внимавате с подобна задача за копиране на всичко, тъй като ще се прехвърлят и файлове/директории, които може да не искате да попадат в директорията на сайта и да са достъпни за всички в уеб. Системните файлове, с точка в началото на името си например ".somefile", няма да бъдат копирани.

Ако премахнете някой файл от хранилището, този файл няма да се премахне автоматично от директорията на сайта. Ще трябва да го премахнете ръчно.

Вижте още:

🔗 Създаване на Git хранилище в cPanel | Help

🔗 Основни Git понятия и команди | Help

Обновена: 05.02.2020

Беше ли Ви полезна тази статия?

Вижте още