diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml new file mode 100644 index 0000000..c18f883 --- /dev/null +++ b/.github/workflows/deploy-pages.yml @@ -0,0 +1,31 @@ +name: Deploy GitHub Pages (step-4) # Имя workflow, отображается во вкладке Actions и помогает понять назначение сценария + +on: # Условия, при которых GitHub запускает этот workflow + push: # Workflow запускается при каждом push в репозиторий + branches: # Ограничиваем запуск только указанными ветками + - step-4-setup-github-actions # Деплой выполняется только из этой учебной ветки + +permissions: # Явно задаём права для GITHUB_TOKEN, с которым работает workflow + contents: read # Разрешаем читать содержимое репозитория (нужно для checkout кода) + pages: write # Разрешаем создавать и обновлять деплой GitHub Pages + id-token: write # Разрешаем получать OIDC-токен для безопасной аутентификации деплоя + +jobs: # Описываем набор задач, которые будет выполнять workflow + deploy: # Задача, отвечающая за публикацию сайта + runs-on: ubuntu-latest # Выполняем задачу на виртуальной машине с Ubuntu + + steps: # Последовательные шаги, которые выполняются внутри задачи + - name: Checkout # Шаг с понятным именем для логов + uses: actions/checkout@v4 # Загружает код репозитория в рабочее окружение runner'а + + - name: Setup Pages # Подготавливает окружение для работы с GitHub Pages + uses: actions/configure-pages@v5 # Настраивает Pages и проверяет доступность деплоя + + - name: Upload artifact (src) # Определяем, какие файлы считаются сайтом + uses: actions/upload-pages-artifact@v3 # Упаковывает указанные файлы в артефакт для Pages + with: + path: 'src' # Папка src считается итоговым содержимым сайта + + - name: Deploy # Финальный шаг публикации сайта + id: deployment # Идентификатор шага для получения информации о деплое + uses: actions/deploy-pages@v4 # Публикует артефакт и обновляет GitHub Pages diff --git a/README.md b/README.md index 8e0d3ba..8d67c3f 100644 --- a/README.md +++ b/README.md @@ -61,3 +61,61 @@ 3.5) Если deployment прошел а на странице ghpages (на стенде) новых изменений нет, то проблема может быть в кеше браузера (тогда помогает hard realod или режим incognito) + +### Шаг 4 - Настроить папку src/ + +#### Ветка "step-4-setup-github-actions" + +> Зачем менять на `src/` ? -> Чтобы научиться... +> - папка `src/` это стандарт на frontend проектах (всегда есть) +> - папка `docs/` используется не для хранения кода проекта, а для документации +> - шаг с папкой `docs/` это последний "простой шаг", где можно было сделать все легко через настройки + +> Теперь настало время переходить к github actions... +> - т.к. именно этот инструмент сейчас поможет в автоматизации деплоя + +4.1) Нужно переименовать папку `docs/` в `src/` +(или вернее сказать "переместить содержимое папки `docs/` в папку `src/`") + +4.2) Нужно создать файл `.github/workflows/deploy-pages.yml` + +```yml +name: Deploy GitHub Pages (step-4) + +on: + push: + branches: + - step-4-setup-github-actions + +permissions: + contents: read + pages: write + id-token: write + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Pages + uses: actions/configure-pages@v5 + + - name: Upload artifact (src) + uses: actions/upload-pages-artifact@v3 + with: + path: 'src' + + - name: Deploy + id: deployment + uses: actions/deploy-pages@v4 +``` + +4.3) Закоммитить и запушить все изменения в соответствующую ветку + +4.4) Настроить работу с github actions (переключиться на них) +- перейти в раздел `Settings > Pages` +- в поле `Source` выбрать `GitHub Actions` +- в этом же разделе (`Code and automation`) перейти в раздел `Actions` diff --git a/docs/index.html b/src/index.html similarity index 97% rename from docs/index.html rename to src/index.html index 2999c3e..e3783ac 100644 --- a/docs/index.html +++ b/src/index.html @@ -11,6 +11,7 @@ diff --git a/docs/script.js b/src/script.js similarity index 100% rename from docs/script.js rename to src/script.js diff --git a/docs/styles.css b/src/styles.css similarity index 100% rename from docs/styles.css rename to src/styles.css