softdevtools-dns

Лабораторная работа №5: сайт на собственном поддомене

Статус: черновик инструкции для браузера. Репозиторий открыт для пилота; массовый приём заявок ещё не начат. Перед выдачей студентам инструкцию нужно пройти на отдельном аккаунте и дополнить скриншотами живого интерфейса GitHub.

Результат

Простая страница из вашего публичного репозитория открывается по адресу вида student.softdevtools.ru. Вы можете объяснить путь: репозиторий → GitHub Pages → DNS-запись CNAME → HTTP-запрос → страница. На занятии можно показать страницу по HTTP; HTTPS проверяется отдельно, когда GitHub Pages выпустит сертификат. Подробное устройство сертификатов будет отдельной темой.

Оформление не оценивается. Достаточно одной страницы с заголовком, коротким текстом и отличительным признаком: вашим выбранным поддоменом или GitHub-логином. В этой инструкции используется index.html с готовым шаблоном, чтобы все действия можно было выполнить через браузер. Генератор текста или кода допустим. Не размещайте на странице ФИО, группу, телефон или личный email, если не хотите делать их публичными.

Порядок через сайт GitHub

  1. Войдите на github.com. Через New repository создайте публичный репозиторий для страницы. Можно отметить Add a README file, но это не обязательно: в пустом репозитории есть ссылки для первого файла в блоке Quick setup. Запомните точное имя: репозиторий сайта и DNS-репозиторий — две разные вещи.
  2. Если репозиторий пуст, нажмите creating a new file в блоке Quick setup; если README уже есть, нажмите Add file → Create new file. Назовите файл index.html и вставьте минимальную страницу. Вместо ВАШ-ЛОГИН укажите свой GitHub-логин или другую отличительную фразу. Нажмите Commit changes:

    <!doctype html>
    <html lang="ru">
    <meta charset="utf-8">
    <title>Моя страница</title>
    <h1>Привет!</h1>
    <p>Страница GitHub Pages: ВАШ-ЛОГИН</p>
    </html>
    
  3. Откройте Settings → Pages. В разделе Build and deployment выберите Deploy from a branch, ветку main, каталог /(root) и нажмите Save. Дождитесь адреса вида https://username.github.io/repository/, откройте его и убедитесь, что видна ваша отличительная фраза. Первая публикация может занять некоторое время.
  4. Выберите свободный одноуровневый поддомен в softdevtools.ru. Предпочтительный формат — imya-familiya, например ivan-ivanov.softdevtools.ru: строчные латинские буквы и дефис между именем и фамилией. Если имя занято, можно предложить суффикс -2. Реальные имя и фамилию публиковать необязательно: псевдоним можно согласовать с преподавателем. Метка до .softdevtools.ru должна быть не длиннее 47 символов, чтобы GitHub Pages мог выпустить HTTPS-сертификат.
  5. Откройте denrad/softdevtools-dns и нажмите Fork → Create fork. Убедитесь, что теперь вы находитесь в копии под своим GitHub-логином.
  6. В своём fork откройте папку records/, нажмите Add file → Create new file и назовите файл <ваше-имя>.yaml, например ivan-ivanov.yaml. Скопируйте содержимое примера заявки и замените все значения. Нажмите Commit changes; при выборе ветки следуйте подсказке GitHub и создайте отдельную ветку для заявки.
  7. Откройте Pull Request из своей ветки в denrad/softdevtools-dns:main. Проверьте в PR четыре вещи: в списке изменений только ваш новый файл records/*.yaml; имя файла совпадает с subdomain; target равен <ваш-логин>.github.io; repository ведёт к вашему публичному репозиторию со страницей. Дождитесь автоматической проверки; если она нашла ошибку, исправьте тот же файл в своей ветке.
  8. В репозитории сайта укажите то же полное имя в Settings → Pages → Custom domain и нажмите Save. Сделайте это до принятия PR преподавателем и появления DNS-записи.
  9. Преподаватель сверит заявку и примет PR. После слияния автоматизация создаст DNS-only CNAME. До принятия PR поддомен не выделен. Откройте http://<ваше-имя>.softdevtools.ru/ в браузере и проверьте свою фразу. Если сайт ещё не открылся, покажите преподавателю ссылку на PR и повторите проверку позже.
  10. Позже проверьте обычный HTTPS-адрес в браузере. Когда сертификат готов и сайт открывается без предупреждения, включите Enforce HTTPS в Pages.

Клонировать репозиторий, устанавливать Git и открывать терминал для этой лабораторной не требуется. Скриншоты для каждого этапа будут добавлены перед публикацией инструкции; расположение кнопок нужно сверить по живому интерфейсу.

Содержимое примера будущей заявки records/ivan-ivanov.yaml:

subdomain: ivan-ivanov
type: CNAME
target: ivan123.github.io
repository: https://github.com/ivan123/my-lab-site

В target пишется имя username.github.io без https://, пути и названия репозитория. GitHub-логин в target можно писать в том регистре, в котором он показан в GitHub; DNS-запись будет создана в нижнем регистре. Формат этой заявки проверяет автоматическая проверка PR.

Если проверка нашла ошибку

Откройте в PR вкладку Checks и выберите проверку validate-student-request. Замечания показываются прямо у вашего файла: на вкладке Files changed — у нужной строки, а полный список с подсказками — в сводке прогона (Summary). Пример сообщения:

❌ records/sofia-surnaeva.yaml.:1 — Имя файла
   После расширения .yaml стоит лишняя точка или пробел.
💡 Переименуйте файл в records/sofia-surnaeva.yaml.

Что делать: исправить тот же файл в своей ветке и сделать новый коммит — проверка запустится заново сама. Ничего исправлять за вас автоматизация не будет. Частые причины отказа:

Проверка во время занятия

Откройте свой поддомен в браузере и найдите отличительную фразу. Если браузер показывает ошибку имени, сайт ещё не отвечает или предупреждает о сертификате, это разные стадии настройки: покажите преподавателю свой PR и настройки Pages. Предупреждение о сертификате не обходите ради отметки о готовом HTTPS. Для диагностики преподаватель может использовать отдельные инструменты; от студента командная строка не требуется.

Если на компьютере есть Git Bash и хочется увидеть ответ сервера, можно дополнительно выполнить (замените имя на свой поддомен):

command -v curl
curl -i --max-time 10 http://ivan-ivanov.softdevtools.ru/
curl -i --max-time 10 https://ivan-ivanov.softdevtools.ru/

Первая команда проверяет, доступен ли curl в установленном Git Bash. В ответе HTTP ищите успешный статус и текст своей страницы; перенаправление проверяйте, открыв указанный адрес в браузере. Если HTTPS-запрос сообщает об ошибке сертификата, HTTPS пока не готов. Не используйте curl -k для зачёта: он отключает проверку сертификата. Эти команды не заменяют проверку CNAME и не обязательны для лабораторной.

DNS обычно становится виден через несколько минут, но кеширование может замедлить проверку. Выпуск сертификата GitHub Pages может продолжаться дольше практической части. Для лабораторной предусмотрен статус ожидания и повторная проверка после занятия.

Ссылки: создание файла через сайт GitHub, включение Pages из ветки, настройка поддомена в GitHub Pages, Cloudflare TTL.