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 Ну, это немного сложнее, есть еще несколько человек, работающих над проектом, вносят изменения в эту ветку. Так что идея заключалась в том, чтобы иметь некую «общую среду живого тестирования», отличную от той, что есть у всех.
Относительно вашего первого вопроса: если вы хотите управлять элементами из текущего репозитория, вам нужно использовать actions/checkout. Это позволит вам получить доступ к репозиторию $github_workspace (одна из переменных среды Github) в вашем рабочем процессе. Например, вы можете использовать команду cd для навигации по репозиторию благодаря действию извлечения или выполнить файл сценария в корне репозитория.
Что касается вашего второго вопроса: флаг -f используется для принудительной проверки. Вы можете передать опцию -f or --force с помощью команды git checkout, чтобы заставить Git переключать ветви, даже если у вас есть неэтапные изменения (другими словами, индекс рабочего дерева отличается от HEAD). По сути, его можно использовать для удаления локальных изменений.
Что касается вашего третьего вопроса: я предлагаю создать отдельный файл в вашем репозитории с вашим скриптом и выполнить его в своем рабочем процессе. Вы даже можете добавить туда комментарии, чтобы объяснить, что делает каждый шаг вашей автоматизации (может помочь в обслуживании, если вы не единственный, кто работает над этим).
Относительно вашего четвертого вопроса: вы можете создать другой скрипт для копирования кода в другую ветку с помощью команд git (с action/checkout). Или даже создайте другой рабочий процесс, который может запускаться при push или pull_request в определенную ветку. Я считаю, что для этого существует множество различных (и действенных) решений.






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