Рабочий процесс Github для развертывания приложения Laravel

Git \ Github новичок здесь.

После долгих поисков в Google мне удалось создать следующий Github-action \ workflow для развертывания приложения Laravel на сервере тестирования в реальном времени.

Мне просто нужен рабочий процесс для обновления файлов приложений на тестируемом живом сервере с последними версиями в репозитории.

Код вроде работает нормально, но есть пара строк, которые я не совсем понимаю.

1) Какова цель этапа оформления заказа (того, который использует actions / checkout @ v2)?

2) Какова цель "git checkout -f" в сценарии развертывания? Это нужно?

3) Что-то мне не хватает \ нужно добавить в сценарий развертывания?

4) Еще одна вещь, которую я хотел бы сделать, - это «скопировать» код, который отправляется на рабочий сервер, в другую ветку репозитория, чтобы отслеживать, что в настоящее время находится на рабочем сервере. Как бы я сделал это в том же действии? (Если это имеет смысл и \ или это даже возможно)

    name: DEV Deploy
    
    on:
      workflow_dispatch:
    
    jobs:
    
      deploy:
        runs-on: ubuntu-latest
    
        steps:
          - name: Checkout
            uses: actions/checkout@v2
    
          - name: Deployment
    
            uses: appleboy/ssh-action@master
    
            with:
              host: ${{ secrets.HOST }}
              username: ${{ secrets.USERNAME }}
              key: ${{ secrets.KEY }}
    
              script: |
                cd /home/app/public_html
                
                php artisan down
                
                git checkout -f
                git branch -u origin/dev
                git pull
                
                composer install --optimize-autoloader --no-dev
                
                npm install
                npm update
                npm run production
                
                php artisan cache:clear
                php artisan view:clear
                php artisan config:cache
                php artisan up

Спасибо.

«... чтобы отслеживать, что в данный момент находится на реальном сервере». Я считаю, что это то, чем должна быть ваша основная ветка.

IGP 06.04.2021 12:51

@IGP Ну, это немного сложнее, есть еще несколько человек, работающих над проектом, вносят изменения в эту ветку. Так что идея заключалась в том, чтобы иметь некую «общую среду живого тестирования», отличную от той, что есть у всех.

Nite 06.04.2021 13:40

Относительно вашего первого вопроса: если вы хотите управлять элементами из текущего репозитория, вам нужно использовать actions/checkout. Это позволит вам получить доступ к репозиторию $github_workspace (одна из переменных среды Github) в вашем рабочем процессе. Например, вы можете использовать команду cd для навигации по репозиторию благодаря действию извлечения или выполнить файл сценария в корне репозитория.

GuiFalourd 06.04.2021 17:32

Что касается вашего второго вопроса: флаг -f используется для принудительной проверки. Вы можете передать опцию -f or --force с помощью команды git checkout, чтобы заставить Git переключать ветви, даже если у вас есть неэтапные изменения (другими словами, индекс рабочего дерева отличается от HEAD). По сути, его можно использовать для удаления локальных изменений.

GuiFalourd 06.04.2021 17:36

Что касается вашего третьего вопроса: я предлагаю создать отдельный файл в вашем репозитории с вашим скриптом и выполнить его в своем рабочем процессе. Вы даже можете добавить туда комментарии, чтобы объяснить, что делает каждый шаг вашей автоматизации (может помочь в обслуживании, если вы не единственный, кто работает над этим).

GuiFalourd 06.04.2021 17:45

Относительно вашего четвертого вопроса: вы можете создать другой скрипт для копирования кода в другую ветку с помощью команд git (с action/checkout). Или даже создайте другой рабочий процесс, который может запускаться при push или pull_request в определенную ветку. Я считаю, что для этого существует множество различных (и действенных) решений.

GuiFalourd 06.04.2021 17:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
6
38
0

Другие вопросы по теме