Деплоймент 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

github 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 на всю папку - плохая практика, тем не менее она избавляет от многих неожиданных ошибок - где какой-то плагин или компонента пытаются создать или записать файл и у них нет для этого достаточных прав. Если есть более хорошее решение этой проблемы - напишите в комментариях.