mirror of
				https://github.com/3ybactuk/marketplace-go-service-project.git
				synced 2025-10-30 05:53:45 +03:00 
			
		
		
		
	init
This commit is contained in:
		
							
								
								
									
										119
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,119 @@ | ||||
| # Шаблон репозитория для реализации проекта на курсе Route 256 | ||||
|  | ||||
|   Поздравляем с зачислением на курс "Продвинутая разработка микросервисов на Go"! Надеемся, что процесс обучения будет | ||||
| увлекательным, а полученные знания пригодятся в работе! | ||||
|  | ||||
|   В рамках курса вам предстоит разработать проект– копию Озона в миниатюре. Не нужно пугаться, ведь на этом пути вас | ||||
| будет сопровождать команда преподавателей и тьюторов. Работа над проектом будет разбита из 8 модулей, каждому из | ||||
| которых, посвящены две лекции и одно практическое занятие. Действующие инженеры Озона поделятся своим опытом и обратят | ||||
| внимание на важные аспекты, которые неизбежно возникают при разработке высоконагруженных распределенных систем. По  | ||||
| окончании каждого модуля будет предложено реализовать ту или иную часть из курсового проекта, имеющую непосредственное | ||||
| отношение к теме модуля. | ||||
|    | ||||
| Желаем успехов в прохождении курса! | ||||
|  | ||||
| # Работа над курсовым проектом | ||||
|  | ||||
| ## Инициализация проекта | ||||
|  | ||||
| Для работы над курсовым проектом необходимо выполнить инициализацию репозитория: | ||||
|  | ||||
| 1. Открыть репозиторий https://gitlab.ozon.dev/go/classroom-18/students/homework-draft (вы уже в нем); | ||||
| 2. Создать копию данного репозитория https://gitlab.ozon.dev/go/classroom-18/students/homework-draft (форк проекта в свой  | ||||
|   приватный репозиторий (см. рис. 1)); | ||||
| 3. Разорвать связь с шаблонным репозиторием, для этого в GitLab необходимо выполнить: Settings › Advanced › Remove | ||||
|   fork relationship (см. рис. 2 и 3); | ||||
| 4. Добавить тьютора в Members проекта. Для этого: Project information › Members › Invite member, пригласить своего | ||||
|   тьютора с правами Maintainer (см. рис. 4, 5 и 6). | ||||
|  | ||||
| <em><strong> | ||||
| Обрати внимание! | ||||
| Если не разорвать связь с проектом, можно случайно отправить изменения в общий проект с шаблоном курсового проекта! | ||||
| </strong></em> | ||||
|  | ||||
|  | ||||
| Рис. 1. Создаем копию проекта | ||||
|  | ||||
|  | ||||
| Рис. 2. Переходим в продвинутые настройки репозитория | ||||
|  | ||||
|  | ||||
| Рис. 3. Разрываем связь в шаблонным проектом | ||||
|  | ||||
|  | ||||
| Рис. 4. Настройки участников проекта | ||||
|  | ||||
|  | ||||
| Рис. 5. Добавить новых участников | ||||
|  | ||||
|  | ||||
| Рис. 6. Добавление тьютора с ролью Maintainer | ||||
|  | ||||
|  | ||||
| ## Выполнение домашнего задания: | ||||
|  | ||||
| 1. В своём форке проекта необходимо создать ветку от master под выполняемое задание. Ветку **необходимо (MUST)** назвать | ||||
|   hw-N, где N– номер модуля, к которому относится выполняемое задание; | ||||
| 2. Выполнить задание; | ||||
| 3. Создать мерж-реквест ветки с решением в master в своём форке проекта; | ||||
| 4. Уведомить тьютора об отправке решения на проверку и поделиться ссылкой на мерж-реквест в Telegram; | ||||
| 5. После проверки задания тьютором он может оставить комментарии к решению. Если требующие исправления замечания | ||||
|   отсутствуют, тьютор засчитывает решение, оставляя отметку (approve) на мерж-реквесте. По итогам проверки тьютор | ||||
|   проставляет оценку за работу в таблице прогресса; | ||||
| 6. Необходимо устранить все обязательные замечания и добиться успешного прохождения проверки тьютором; | ||||
| 7. После того как решение зачтено тьютором, и работа над ним со стороны студента завершена, решение необходимо вмержить | ||||
|   в ветку master. | ||||
|  | ||||
| ## Формат названий на курсе Go на примере домашнего задания №1 (HW1): | ||||
|  | ||||
| | Формат наименования | Пример                       | | ||||
| |--------------------|------------------------------| | ||||
| | Для ветки          | hw-1                         | | ||||
| | Для коммита        | [hw-1] Свободный комментарий | | ||||
| | Для мерж-реквеста  | [hw-1] Свободный комментарий | | ||||
|  | ||||
| ## Прохождение автоматизированных проверок | ||||
|  | ||||
|   На текущем потоке мы в пилотном режиме запускаем систему автоматизированной проверки решений. Это не означает, что | ||||
| тьюторы будут проверять решения менее тщательно, напротив– мы хотим освободить тьюторов от рутинных проверок и | ||||
| помочь им фокусироваться на проверке других важных аспектов реализации. Это требует от вас внимательнее относится | ||||
| к именованию веток, потому что для запуска проверок необходимо чтобы ветки удовлетворяли указанному шаблону `hw-N`. | ||||
|  | ||||
|   Поскольку это пилотный запуск тестирующей системы, возможно возникновение проблем в ее работе, в том числе ложно | ||||
| негативных срабатываний, **успешное прохождения решением всех автоматизированных проверок не является обязательным**. | ||||
| Тем не менее постарайтесь, чтобы ваше решение проходило столько проверок, на сколько это возможно. Уделите внимание | ||||
| проверкам кода (линтеру golangci-lint). Все это поможет избежать лишних замечаний в мерж-реквестах, которые непременно | ||||
| оставит тьютор, и позволит сдать задание быстрее и за меньшее количество проверок. | ||||
|  | ||||
|   Блюдите культуру и гигиену работы с git, постарайтесь не пушить бессодержательные коммиты в систему контроля версий. | ||||
| **Количество коммитов не оценивается**. Большое количество коммитов вызывает запуск автоматизированных проверок, а | ||||
| ввиду ограниченности ресурсов это может создать очередь в их прохождении. Более того, большое количество коммитов в | ||||
| репозитории, где одновременно работает много разработчиков (как обычно и бывает на настоящем крупном проекте), может | ||||
| затруднить слияние и разрешение конфликтов, сложнее понять состояние репозитория и ориентироваться в истории. Хорошей | ||||
| практикой считается выполнение объединения коммитов в один (squash) перед созданием мерж-реквеста и аналогичное | ||||
| объединение коммитов с исправлениями в один перед повторной отправкой тьютору на повторную. Таким образом количество | ||||
| коммитов в ветке будет соответствовать количеству итераций проверки. Мы не считаем количество коммитов и не оцениваем | ||||
| работу по этому признаку. Сказанное выше является рекомендацией, но не требованием. | ||||
|  | ||||
| ## Чтение файла конфигурации | ||||
| В вашем решинии каждый из сервисов должен (MUST) использовать переменную окружения `CONFIG_FILE` в которой указан ПУТЬ  | ||||
| до файла конфигурации.  | ||||
|  | ||||
| [Пример](cart/configs/values_ci.yaml) такого файла для сервиса `cart`, который используется в CI/CD пайплайне  | ||||
| (НЕ МОДИФИЦИРОВАТЬ). | ||||
|  | ||||
| Файлы конфигурации для локального запуска так-же [находятся в репозитории](cart/configs/values_local.yaml). | ||||
|  | ||||
| ## Troubleshooting | ||||
| 1. Чтобы запустить product-service локально требуется выполнить команду | ||||
|  | ||||
| ``` | ||||
| docker login gitlab-registry.ozon.dev | ||||
| ``` | ||||
|  логин и пароль такие-же, как для доступа к https://gitlab.ozon.dev/ | ||||
|  | ||||
| 2. Если при прохождении джобы с тестами вы получаете ошибку | ||||
| ``` | ||||
| ERROR: Job failed: failed to pull image "gitlab-registry.ozon.dev/go/...." with specified policies [always]: Error response from daemon: pull access denied for gitlab-registry.ozon.dev/go/...., repository does not exist or may require 'docker login': denied: requested access to the resource is denied | ||||
| ``` | ||||
| напишите об этом тьютору, чтобы он сделал необходимые настройки. После подтверждения от тьютора, что работы проведены - просто перезапустите пайплайн | ||||
		Reference in New Issue
	
	Block a user
	 irylkov
					irylkov