Este projeto é feito de dois componentes:
| Dependência | Requisito de versão |
|---|---|
| Java | 17 |
| Maven | 3.9 |
| Mysql | 8.3 |
| Flyway | 10.13 |
| Cloc 1 | 2,00 |
| Git 1 | 2.43 |
Antes de escolher se deve começar com um slate limpo ou um banco de dados pré-populado, verifique se os seguintes requisitos são atendidos:
O fuso horário do banco de dados está definido como +00:00 . Você pode verificar isso via:
SELECT @@ global . time_zone , @@ session . time_zone ; O agendador de eventos está ON . Você pode verificar isso via:
SELECT @@ global . event_scheduler ; O registro binário durante a criação de funções armazenadas é definido como 1 . Você pode verificar isso via:
SELECT @@ global . log_bin_trust_function_creators ; O banco de dados gse existe. Para criá -lo:
CREATE DATABASE gse CHARACTER SET utf8 COLLATE utf8_bin; O usuário gseadmin existe. Para criar um, execute:
CREATE USER IF NOT EXISTS ' gseadmin ' @ ' % ' IDENTIFIED BY ' Lugano2020 ' ;
GRANT ALL ON gse. * TO ' gseadmin ' @ ' % ' ;Se você preferir começar com um banco de dados vazio, não há mais nada para você fazer. As tabelas necessárias serão geradas através das migrações do Flyway durante a inicialização inicial do servidor. No entanto, se você deseja que o banco de dados local seja preenchido com os dados que coletamos, pode usar o despejo SQL compactado que oferecemos. Hospedamos esse despejo, junto com as quatro iterações anteriores, no Dropbox. Depois de escolher e baixar um dump de banco de dados, você pode importar os dados executando:
gzcat < gse.sql.gz | mysql -u gseadmin -pLugano2020 gse Antes de tentar executar o servidor, você deve gerar seu próprio token de acesso pessoal do GitHub (PAT). O rastreador conta com a API do GraphQL, que é inacessível sem autenticação. Para acessar as informações fornecidas pela API do GitHub, o token deve incluir o escopo repo .
Uma vez feito isso, você pode executar o servidor localmente usando o Maven:
mvn spring-boot:runSe você deseja usar o token ao rastejar, especifique -o nos argumentos de execução:
mvn spring-boot:run -Dspring-boot.run.arguments=--ghs.github.tokens= < your_access_token >Como alternativa, você pode compilar e executar o frasco diretamente:
mvn clean package
ln target/ghs-application- * .jar target/ghs-application.jar
java -Dghs.github.tokens= < your_access_token > -jar target/ghs-application.jar Aqui está uma lista de argumentos específicos do projeto suportados pelo aplicativo que você pode encontrar no application.properties :
| Nome variável | Tipo | Valor padrão | Descrição |
|---|---|---|---|
ghs.github.tokens | Lista <String> | Lista de tokens de acesso pessoal do GitHub (PATs) que serão usados para minerar a API do GitHub. Não deve conter strings em branco. | |
ghs.github.api-version | Corda | 2022-11-28 | Versão da API do GitHub usada em várias operações. |
ghs.git.username | Corda | Login de conta Git usado para interagir com o sistema de controle de versão. | |
ghs.git.password | Corda | Senha usada para autenticar a conta Git especificada. | |
ghs.git.config | Mapa <string, string> | Consulte Application.Properties | Configurações git específicas para o aplicativo 2 . |
ghs.git.folder-prefix | Corda | ghs-clone- | Prefixo usado para os diretórios temporários nos quais os repositórios analisados são clonados. Não deve estar em branco. |
ghs.git.ls-remote-timeout-duration | Duração | 1m | O tempo máximo permitiu a listagem de controles remotos de repositórios Git. |
ghs.git.clone-timeout-duration | Duração | 5m | O tempo máximo permitiu a clonagem de repositórios Git. |
ghs.cloc.max-file-size | DataSize | 25 MB | Limite máximo de tamanho de arquivo para análise com cloc . |
ghs.cloc.timeout-duration | Duração | 5m | O tempo máximo permitiu para um comando cloc executar. |
ghs.crawler.enabled | Booleano | verdadeiro | Especifica se o trabalho de rastreamento do repositório estiver ativado. |
ghs.crawler.minimum-stars | int | 10 | Limite inferior inclusivo para o número de estrelas que um projeto precisa ter para ser escolhido pelo rastreador. Não deve ser negativo. |
ghs.crawler.languages | Lista <String> | Consulte Application.Properties | Lista de nomes de idiomas que serão direcionados durante o rastreamento. Não deve conter strings em branco. Para garantir operações adequadas, os nomes devem corresponder aos especificados em linguista. |
ghs.crawler.start-date | Data | 2008-01-01T00: 00: 00Z | Data de início padrão do rastreador: a data mais antiga do repositório rastejando na ausência de trabalhos anteriores de rastreamento. Formato de valor: yyyy-MM-ddTHH:MM:SSZ . |
ghs.crawler.delay-between-runs | Duração | Pt6h | Atraso entre as execuções sucessivas de rastreador, expressas como uma string de duração. |
ghs.analysis.enabled | Booleano | verdadeiro | Especifica se o trabalho de análise estiver ativado. |
ghs.analysis.delay-between-runs | Duração | Pt6h | O atraso entre a análise sucessiva é executada, expressa como uma string de duração. |
ghs.analysis.max-pool-threads | int | 3 | Quantidade máxima de tópicos vivos dedicados à análise simultaneamente dos repositórios. Deve ser positivo. |
ghs.clean-up.enabled | Booleano | verdadeiro | Especifica se o trabalho responsável pela remoção de repositórios indisponíveis (limpeza) estiver ativado. |
ghs.clean-up.cron | Contrigger | 0 0 0 * * 1 | O atraso entre sucessivos repositórios de repositório é executado, expresso como uma expressão de cron primavera. |
A maneira mais fácil de lançar o front-end é através do script NPM fornecido:
npm run dev Você também pode usar o servidor Web interno do seu IDE ou qualquer outro servidor da Web de sua escolha. Independentemente do método que você escolher para hospedagem, os CORS de back-end o restringem ao uso das portas 3030 e 7030 .
A pilha de implantação consiste nos seguintes contêineres:
| Nome do serviço/contêiner | Imagem | Descrição | Ativado por padrão |
|---|---|---|---|
gse-database | mysql | Banco de dados da plataforma | ✅ |
gse-migration | Flyway | Execuções de migração de esquema de banco de dados | ✅ |
gse-backup | cansadofit/db-backup | Backups automatizados de banco de dados | ❎ |
gse-server | Sart/Ghs-Server | Aplicativo de servidor de inicialização da primavera | ✅ |
gse-website | sart/ghs-website | Nginx Web Server atuando como fornecedor HTML | ✅ |
gse-watchtower | Contendo RRRR/WatchTower | Atualizações automáticas de imagem do docker | ❎ |
A cadeia de dependência de serviço pode ser representada da seguinte forma:
Gráfico RL
GSE-Migration-> | Service_Healthy | GSE-Database
GSE-BACKUP-> | service_completed_successly | Migração de GSE
GSE-SERVER-> | service_completed_successly | Migração de GSE
GSE-WebSite-> | Service_Healthy | GSE-Server
GSE-watchtower-> | Service_Healthy | GSE-Website
A implantação é tão simples quanto, no diretório Docker-Compose, execute:
docker-compose -f docker-compose.yml up -d É importante observar que as etapas de configuração do banco de dados explicadas na seção anterior não são necessárias ao executar com o Docker. Isso ocorre porque as propriedades do ambiente passadas para o serviço criarão automaticamente o usuário e o banco de dados do MySQL durante a inicialização inicial. No entanto, essa conveniência não se estende aos dados do banco de dados, pois a implantação padrão gera um banco de dados vazio. Se você deseja usar os dados existentes dos despejos, precisará substituir a implantação do docker-compose para empregar uma imagem de banco de dados personalizada que inclui o despejo. Para conseguir isso, crie seu arquivo docker-compose.override.yml com o seguinte conteúdo:
version : " 3.9 "
name : " gse "
services :
gse-database :
image : seart/ghs-database:latestA imagem acima incluirá o dump mais fresco do banco de dados, no máximo 15 dias atrás dos dados reais da plataforma. Para uma versão mais específica do banco de dados, consulte a página Docker Hub. Lembre -se de especificar o arquivo de substituição durante a implantação:
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d Os dados do banco de dados são mantidos no volume gse-data , enquanto os logs de back-end detalhados são mantidos em uma montagem local chamada toras. Você também pode usar esse arquivo de substituição para alterar as configurações de outros serviços. Por exemplo, especificando seu próprio PAT para o rastreador:
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 " Qualquer uma das propriedades de inicialização da primavera ou propriedades específicas do aplicativo acima mencionadas podem ser substituídas. Lembre -se de que uma propriedade como ghs.xy corresponde à configuração do ambiente de serviço GHS_X_Y .
Outro exemplo é o serviço de backup de banco de dados automatizado, que é desativado por padrão. Se você deseja reativá-lo, precisaria adicionar o seguinte ao arquivo de substituição:
version : " 3.9 "
name : " gse "
services :
# other services omitted...
gse-backup :
restart : always
entrypoint : " /init " Se você tiver idéias para um recurso que gostaria de ver implementado ou se tiver alguma dúvida, incentivamos você a criar uma nova discussão. Ao iniciar uma discussão, você pode se envolver com a comunidade e nossa equipe, e responderemos prontamente para abordar suas consultas ou considerar suas solicitações de recursos.
Para relatar quaisquer problemas ou bugs que você encontrar, crie um novo problema. O fornecimento de informações detalhadas sobre o problema que você está enfrentando nos ajudará a entender e abordá -las com mais eficiência. Tenha certeza, estamos comprometidos em revisar e responder imediatamente aos problemas que você levantar, trabalhando em colaboração para resolver quaisquer bugs e melhorar a experiência geral do usuário.
Consulte Contribuindo.md para obter mais informações.
Para fazer isso, você deve estar familiarizado com as ferramentas e práticas de migração do banco de dados. Este projeto usa o Flyway da Redgate. A regra geral para a manipulação do esquema é: criar novas migrações e abster -se de editar as existentes .
Somente exigido nas versões antes de 1.7.0 ↩ ↩ 2
Separamos as configurações GIT no nível do aplicativo das usadas pelo usuário para evitar possíveis conflitos ou confusão. Como tal, um arquivo de configuração específico do aplicativo é criado no diretório temporário na inicialização. As configurações adicionadas ao arquivo dependem das entradas ghs.git.config no application.properties . Observe que as subseções de configuração atualmente não são suportadas. ↩