Skip to content

bmstu-iu8-cpp-sem-1/lab-00-introduce-labs

Repository files navigation

Лабораторная 0

Текущая лабораторная работа предназначена для ознакомления со средставами и сервисами, которые требуются для выполнения лабораторных работ.

Вводная часть

Git

Git - это распределённая система управления версиями исходного кода. Git поддерживает быстрое разделение и слияние версий, включает инструменты для визуализации и навигации по нелинейной истории разработки.

В нашем курсе мы будем использовать сервис github.com.

Чтобы выполнить успешно выполнить лабораторную:

  1. Необходимо создать разработческую ветку (назовем её wp/lab) отведенную от ветки с названием master. Это можно сделать с помощью клиентского приложения или прямо в веб-версии.
  2. Всю дальнейшую работу необходимо вести в созданной ветке wp/lab.
  3. После выполнения работы, необходимо создать pull-request, запрос на изменений исходного кода в ветку master. Это удобно сделать в два клика в веб-версии github.com в вашем репозитории.
  4. После этого запуститься автоматическая проверка работы.

GitHub Actions

Каждый учебный репозиторий содержит систему автоматической сборки GitHub Actions. Это позволяет автоматизировано проверить, что в коде нет синктактических ошибок, что исходный код компилируется и проходит ряд тестов.

  1. Первый тест - это тест на то, что исходный код компилируется в исполняемый файл и этот файл работоспособный scripts/tests.sh
  2. Второй тест - это тест на форматирование кода. Специальный скрипт укажет на неточности соответствия принятому scripts/checks.sh

Все эти проверки запускаются на созданный вами PR. Если все тесты прошли успешно, то GitHub Actions выставит "зеленую галочку", сообщающую об успешном прохождении тестов, если хотя бы одна проверка завершилась ошибкой, то появится "красный крестик". И это явное сообщение, что вы что-то сделали не так и необходимо эти ошибки исправить. О том какие именно ошибки вы совершили можно прочитать в лог-файле самого Workflow, чтобы открывать этот файл - щелкните по "красному крестику". Настоятельно рекомендуется прогонять тесты у себя на компьютере. Для этого:

  • Если у вас MacOS или Linux: можно запустить скрипт scripts/setup-all.sh, который должен настроить вам окружение, необходимое для сборки и тестирования. Для его запуска можно использовать sudo ./scripts/checks.sh
  • Если у вас Windows: ещё не поздно передумать и поставить хотя-бы второй системой какой-нибудь Linux. Из рекомендованых: Ubuntu, Fedora; с ними должно быть меньше всего проблем. Если же такое не предоставляется возможным - можно использовать Docker. О запуске тестов в Docker внизу.

Скрипты запускаются: ./scripts/tests.sh, ./scripts/checks.sh и ./scripts/setup-all.sh соответственно если вы в корневой директории склонированного репозитория. Для знающих: в любой другой (в рамках репозитория) - запускать с правками относительного пути, или абсолютным путём

Code review

Code review - это систематическая проверка исходного кода программы с целью обнаружения и исправления ошибок, которые остались незамеченными в начальной фазе разработки. Целью просмотра является улучшение качества программного продукта и совершенствование навыков разработчика. Эта техника принята во всех компаниях, которые занимаются программной разработкой.

Мы же с помощью code review построим процесс обучения.

После того, как вы создали PR и система GitHub Actions сделала первичную проверку вашего кода и выставила "зеленую галочку", то настало время с гордостью отправить ваш PR на code review вашему лаборанту (слэш-команда /check_me в Mattermost для Сибири). Лаборант проверит вашу работу, укажет на ошибки и неточности, попросит исправить ваш код. Лабораторная считается выполненной и зачтенной только после того, как лаборант утвердил ваш PR.

Задание

  1. Создайте собственную ветку wp/lab, отведенную от ветки с названием master.
  2. Реализуйте приложение hello world в файле sources/main.cpp.
  3. Добавьте имя файла sources/main.cpp в соответсвующую секцию в файле CMakeLists.txt.
  4. Создайте pull request (сокращенно PR).
  5. Убедитесь, что TravisCI проверил вашу работу и в ней нет ошибок.
  6. Проверьте работу своего напартника в созданном им PR.
  7. Исправьте замечания вашего напарника в вашем PR.
  8. Убедитесь, что TravisCI проверил вашу работу и в ней нет ошибок.
  9. Сообщите напарнику, что все замечания выполнены и дождитесь, когда напарник утвердит ваш PR.
  10. Влейте свои изменения из ветки wp/lab в ветку master.
  11. Повторите все шаги, пока не доведете эти действия до автоматизма.

Советы

Используйте клиент git

Использование веб версии сервиса github не самый удачный выбор. Это приводит к ошибкам и снижению вашей кармы. Используйте клиент с графическим интерфейсом. Например, Github Desktop.

Используйте автоматические средства фортматирования кода

Ознакомьтесь с утилитой clang-format. Она позволяет автоматически форматировать ваш код в соответсвии с нашим code style. Большинство современных IDE поддерживает форматирование с помощью clang-format. Найдите в вашей IDE как форматировать код. Это сэкономит вам время для прохождения автоматических проверок.

Не игнорируйте эту лабораторную

  1. Если хорошо разберетесь с этой лабораторной, то вы будете мало времени тратить на выполнение требований
  2. Каждый разработчик (и не только разработчики, а еще и другие IT специалисты) на своем основной работе используют такие же требования:
  • систему контроля версий, и git является самой популярной из них
  • автоматизированную сборку и тесты (в нашем случае TravisCI, т.к. хорошо интегрирован с Github и бесплатный)
  • code review. с помощью code review из джунов делают сеньоров.

Запуск лабораторных работ в среде Docker (применимо для Windows)

  1. Довольно очевидно, что docker нужно поставить. Установка docker вне скоупа этого гайда, лучше спросите в интернетах
  2. Убедитесь что в терминале, в котором планируется запускать тесты, текущая директория равна директории расположения вашей лабораторной.
  • Довольно часто терминал в конкретной директории можно открыть через Shift+ПКМ
  • Сменить директорию можно при помощи cd с аргументом пути до интересующей директории. Пример: cd ~/CBeerLabs/01-lab-00-introduce-labs-MyGorgeousNickname или cd C:\Users\User\CBeerLabs\01-lab-00-introduce-labs-MyGorgeousNickname
  • Посмотреть текущую - при помощи pwd.
  1. Стартануть докер-контейнер при помощи docker run -v $(pwd):/lab -it rusdevops/toolbox-cpp.
  • Для пользователей маков на ARM64/любых других компьютерных устройств не на x86_64: если вы здесь, значит вы хотите докер, а не путь 1. Так как на Docker Hub нет образа для arm64/другого, можно создать свой, чтобы не лагало! Для этого достаточно всего лишь docker build -t rusdevops/toolbox-cpp .. Остальная часть гайда остаётся уместной
  1. Поздравляю, вы получили систему, схожую с пунктом 1! Теперь вы можете запускать скрипты как белые люди описано выше