Этот проект сделан из двух компонентов:
| Зависимость | Требование версии |
|---|---|
| Ява | 17 |
| Мавен | 3.9 |
| Mysql | 8.3 |
| Пролет | 10.13 |
| CLOC 1 | 2.00 |
| Git 1 | 2.43 |
Прежде чем выбрать, начинать ли с чистого сланца или предварительно заполненной базы данных, убедитесь, что следующие требования выполняются:
Временный пояс базы данных установлен на +00:00 . Вы можете проверить это через:
SELECT @@ global . time_zone , @@ session . time_zone ; Планировщик событий ON . Вы можете проверить это через:
SELECT @@ global . event_scheduler ; Бинарное ведение журнала во время создания сохраненных функций установлено на 1 . Вы можете проверить это через:
SELECT @@ global . log_bin_trust_function_creators ; База данных gse существует. Чтобы создать это:
CREATE DATABASE gse CHARACTER SET utf8 COLLATE utf8_bin; Пользователь gseadmin существует. Чтобы создать один, запустите:
CREATE USER IF NOT EXISTS ' gseadmin ' @ ' % ' IDENTIFIED BY ' Lugano2020 ' ;
GRANT ALL ON gse. * TO ' gseadmin ' @ ' % ' ;Если вы предпочитаете начать с пустой базы данных, вам больше нечего делать. Требуемые таблицы будут генерироваться посредством миграции пролета во время начального запуска сервера. Однако, если вы хотите, чтобы ваша локальная база данных была предварительно заполнена данными, которые мы собрали, вы можете использовать сжатый дамп SQL, который мы предлагаем. Мы размещаем этот дамп вместе с четырьмя предыдущими итерациями, на Dropbox. После выбора и загрузки дампа базы данных вы можете импортировать данные, выполнив:
gzcat < gse.sql.gz | mysql -u gseadmin -pLugano2020 gse Прежде чем попытаться запустить сервер, вы должны генерировать свой собственный токен личного доступа GitHub (PAT). Crawler зависит от API GraphQL, который недоступен без аутентификации. Чтобы получить доступ к информации, предоставленной API GitHub, токен должен включать в себя пример repo .
Как только это будет сделано, вы можете запустить сервер локально, используя Maven:
mvn spring-boot:runЕсли вы хотите использовать токен при ползании, укажите его в аргументах запуска:
mvn spring-boot:run -Dspring-boot.run.arguments=--ghs.github.tokens= < your_access_token >В качестве альтернативы, вы можете компилировать и запустить банку напрямую:
mvn clean package
ln target/ghs-application- * .jar target/ghs-application.jar
java -Dghs.github.tokens= < your_access_token > -jar target/ghs-application.jar Вот список специфичных для проекта аргументов, поддерживаемых приложением, которое вы можете найти в application.properties .
| Имя переменной | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
ghs.github.tokens | Список <string> | Список токенов GitHub Personal Access (PAT), которые будут использоваться для добычи API GitHub. Не должен содержать пустые строки. | |
ghs.github.api-version | Нить | 2022-11-28 | GitHub API версия используется в различных операциях. |
ghs.git.username | Нить | Вход в учетную запись GIT используется для взаимодействия с системой управления версиями. | |
ghs.git.password | Нить | Пароль, используемый для аутентификации указанной учетной записи GIT. | |
ghs.git.config | Карта <строка, строка> | См. Application.properties | Конфигурации GIT, специфичные для приложения 2 . |
ghs.git.folder-prefix | Нить | GHS-клон- | Префикс используется для временных каталогов, в которые анализируются репозитории, клонированы. Не должно быть пустым. |
ghs.git.ls-remote-timeout-duration | Продолжительность | 1 м | Максимальное время разрешено для перечисления удаленных репозиториев GIT. |
ghs.git.clone-timeout-duration | Продолжительность | 5 м | Максимальное время разрешено для клонирования репозиториев GIT. |
ghs.cloc.max-file-size | DataSize | 25 МБ | Максимальный порог размера файла для анализа с cloc . |
ghs.cloc.timeout-duration | Продолжительность | 5 м | Максимальное время разрешено выполнять команду cloc . |
ghs.crawler.enabled | Логический | истинный | Определяет, включена ли задание ползания репозитория. |
ghs.crawler.minimum-stars | инт | 10 | Инклюзивная нижняя граница для количества звезд, которые должен был предпринять проект, чтобы быть поднятым гусеницей. Не должно быть отрицательным. |
ghs.crawler.languages | Список <string> | См. Application.properties | Список языковых имен, которые будут нацелены во время ползания. Не должен содержать пустые строки. Чтобы обеспечить надлежащие операции, имена должны соответствовать указанным в лингвисте. |
ghs.crawler.start-date | Дата | 2008-01-01T00: 00: 00Z | По умолчанию дата начала гусеницы: самая ранняя дата для ползания репозитория в отсутствие предшествующих работ. Формат значения: yyyy-MM-ddTHH:MM:SSZ . |
ghs.crawler.delay-between-runs | Продолжительность | Pt6h | Задержка между последовательными запусками хрупки, выраженная как строка продолжительности. |
ghs.analysis.enabled | Логический | истинный | Указывает, включена ли задание анализа. |
ghs.analysis.delay-between-runs | Продолжительность | Pt6h | Задержка между последовательным анализом, выраженным как строка продолжительности. |
ghs.analysis.max-pool-threads | инт | 3 | Максимальное количество живых потоков, посвященных одновременному анализу репозитории. Должен быть положительным. |
ghs.clean-up.enabled | Логический | истинный | Указывает, включена ли задача, ответственная за удаление недоступных репозитории (очистка). |
ghs.clean-up.cron | Crontrigger | 0 0 0 * * 1 | Задержка между последовательными прогонами очистки хранилища, выраженная как выражение пружинного крона. |
Самый простой способ запустить фронт-конце-через сценарий NPM:
npm run dev Вы также можете использовать встроенный веб-сервер вашего IDE или любой другой веб-сервер по вашему выбору. Независимо от того, какой метод вы выберете для хостинга, Back-End CORS ограничивает вас использованием портов 3030 и 7030 .
Стек развертывания состоит из следующих контейнеров:
| Служба/Имя контейнера | Изображение | Описание | Включено по умолчанию |
|---|---|---|---|
gse-database | mysql | База данных платформы | ✅ |
gse-migration | пролет | Создания миграции схемы базы данных | ✅ |
gse-backup | Усталый/DB-Backup | Автоматизированные резервные копии базы данных | ❎ |
gse-server | Seart/GHS-Server | Приложение Spring Boot Server | ✅ |
gse-website | Seart/GHS-Website | Веб -сервер Nginx действует как поставщик HTML | ✅ |
gse-watchtower | Содержитррр/Сторожевая башня | Автоматические обновления изображений Docker | ❎ |
Цепочка зависимостей обслуживания может быть представлена следующим образом:
График RL
GSE-миграция-> | Service_Healthy | GSE-датабаза
gse-backup-> | service_completed_successbess | GSE-миграция
gse-server-> | service_completed_successbess | GSE-миграция
gse-website-> | service_healthy | GSE-Server
GSE-Watchtower-> | Service_Healthy | gse-website
Развертывание так же просто, как в каталоге Docker-Compose, запустите:
docker-compose -f docker-compose.yml up -d Важно отметить, что шаги настройки базы данных, объясненные в предыдущем разделе, не нужны при работе с Docker. Это связано с тем, что свойства среды, передаваемые в службу, автоматически создадут пользователь и базу данных MySQL во время начального запуска. Однако это удобство не распространяется на данные базы данных, поскольку развертывание по умолчанию генерирует пустую базу данных. Если вы хотите использовать существующие данные с дампов, вам нужно будет переопределить развертывание docker-compose чтобы использовать пользовательское изображение базы данных, которое включает в себя дамп. Чтобы достичь этого, создайте свой файл docker-compose.override.yml со следующим содержанием:
version : " 3.9 "
name : " gse "
services :
gse-database :
image : seart/ghs-database:latestПриведенное выше изображение будет включать в себя самую свежую дамп базы данных, не более 15 дней за фактическими данными платформы. Для более конкретной версии базы данных обратитесь к странице Docker Hub. Не забудьте указать файл переопределения во время развертывания:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d Сама данные базы данных хранятся в томе gse-data , в то время как подробные бэк-энды хранятся в локальном креплении, называемом журналами. Вы также можете использовать этот файл переопределения, чтобы изменить конфигурации других служб. Например, указать свой собственный PAT для Crawler:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-server :
environment :
GHS_GITHUB_TOKENS : " A single or comma-separated list of token(s) "
GHS_CRAWLER_ENABLED : " true " Любое из весенних свойств загрузки или вышеупомянутых специфических для приложения свойства могут быть переопределены. Имейте в виду, что такое свойство, как ghs.xy , соответствует настройке среды обслуживания GHS_X_Y .
Другим примером является автоматизированная служба резервного копирования базы данных, которая отключена по умолчанию. Если вы хотите его повторно включить, вам придется добавить следующее в файл переопределения:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-backup :
restart : always
entrypoint : " /init " Если у вас есть идеи для функции, которую вы хотели бы видеть в реализации или если у вас есть какие -либо вопросы, мы рекомендуем вам создать новое обсуждение. Инициируя обсуждение, вы можете взаимодействовать с сообществом и нашей командой, и мы быстро ответим, чтобы ответить на ваши запросы или рассмотреть ваши запросы на функции.
Чтобы сообщить о любых вопросах или ошибках, с которыми вы сталкиваетесь, создайте новую проблему. Предоставление подробной информации о проблеме, с которой вы сталкиваетесь, поможет нам понять и решить ее более эффективно. Будьте уверены, мы стремимся к быстрому рассмотрению и реагированию на вопросы, которые вы поднимаете, работая совместно для разрешения любых ошибок и улучшения общего пользовательского опыта.
Обратитесь к Appling.md для получения дополнительной информации.
Для этого вы должны быть знакомы с инструментами и практиками миграции базы данных. Этот проект использует Flyway от Redgate. Общее правило манипуляции с схемами: создать новые миграции и воздерживаться от редактирования существующих .
Требуется только в версиях до 1,7,0 ↩ 2
Мы отделяем конфигурации GIT на уровне приложения от тех, которые использовали пользователь, чтобы избежать каких-либо потенциальных конфликтов или путаницы. Таким образом, файл конфигурации, специфичный для приложения, создается во временном каталоге при запуске. Настройки, добавленные в файл, зависят от записей ghs.git.config в application.properties . Обратите внимание, что подразделы конфигурации в настоящее время не поддерживаются. ↩