Деплоймент joomla 5. Github actions
Деплоймент joomla 5
В процессе развития любого проекта возникает необходимость автоматизации процесса деплоймента. В том числе и для сайтов разработанных на основе широко распространённых CMS (**content managment system**). Рассмотрим процесс деплоймента joomla 5x сайта.
Предполагается, что сайт находится под git и уже существует github-репозиторий.
В качестве сервера предполагается любая виртуальная машина (ubuntu).
Для начала создайте папку в корне вашего проекта .github в ней папку workflows и в последней файл deploy.yml (название не имеет значения, расширение имеет значение).
Структура рабочего деплоймент скрипта:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
name: Deploy
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
environment:
name: development
outputs:
image: $
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Remove old one
uses: appleboy/ssh-action@master
with:
host: <virtual-machine-host>
username: <virtual-machine-user>
password: <virtual-machine-password>
port: 22
script: |
shopt -s extglob
sudo rm -rf -- !(configuration.php, administrator/cache/autoload_psr4.php) <path-to-folder-site-on-server>
- name: copy file via ssh password
uses: appleboy/scp-action@master
with:
host: <virtual-machine-host>
username: <virtual-machine-user>
password: <virtual-machine-password>
port: 22
source: "./,!.git,!.github,!.idea"
target: "<path-to-folder-site-on-server>"
overwrite: true
- name: CMOD
uses: appleboy/ssh-action@master
with:
host: <virtual-machine-host>
username: <virtual-machine-user>
password: <virtual-machine-password>
port: 22
script: |
sudo chmod -R 777 <path-to-folder-site-on-server>
sudo rm -rf <path-to-folder-site-on-server>/administrator/cache/autoload_psr4.php
Замечания
- virtual-machine-host - url виртуальной машины в Azure или AWS или DO, пример: ec2-3-33-444-555.us-west-1.compute.amazonaws.com
- virtual-machine-user - пользователь в виртуальной машине/сервере. Для Amazon - это обычно ubuntu
- virtual-machine-password - пароль пользователя
- path-to-folder-site-on-server - папка с вашим сайтом на сервере. Обычно это /var/www/example.com/html
Желательно, после теста этого скрипта - все эти переменные сохранить в Secrets
Подробности можно найти в документации: Using secrets in GitHub Actions
1
sudo rm -rf <path-to-folder-site-on-server>/administrator/cache/autoload_psr4.php
- эта строчка (удаление файла) избавит вас от многих непонятных ошибок по поводу несовместимости каких-то плагинов и прочих joomla 500 errors
- также назначение прав 777 на всю папку - плохая практика, тем не менее она избавляет от многих неожиданных ошибок - где какой-то плагин или компонента пытаются создать или записать файл и у них нет для этого достаточных прав. Если есть более хорошее решение этой проблемы - напишите в комментариях.