Bem-vindo! 👋
Neste desafio, você terá a oportunidade de demonstrar que possui as habilidades necessárias para atuar no time de DevOps do laboratório.
O desafio é implementar uma automação de CI/CD usando Github Actions para um programa que permita realizar as seguintes buscas:
- Listar os órgãos, códigos e editais dos concursos públicos que se encaixam no perfil do candidato, tomando como base o seu CPF;
 - Listar o nome, data de nascimento e o CPF dos candidatos que se encaixam no perfil do concurso tomando com base o Código do Concurso do concurso público;
 
A automação deve realizar as seguintes automações:
- Executar os testes automatizados
 - Verificar a qualidade do código
 - Quebrar o CI quando os testes falharem ou quando a qualidade for menor de 80%
 - Registrar o docker do software no Github Package
 
O arquivo candidatos.txt contém as informações dos candidatos:
| Nome | Data de Nascimento | CPF | Profissões | 
|---|---|---|---|
| Lindsey Craft | 19/05/1976 | 182.845.084-34 | [carpinteiro] | 
| Jackie Dawson | 14/08/1970 | 311.667.973-47 | [marceneiro, assistente administrativo] | 
| Cory Mendoza | 11/02/1957 | 565.512.353-92 | [carpinteiro, marceneiro] | 
O arquivo concursos.txt contém as informações dos concursos públicos:
| Órgão | Edital | Código do Concurso | Lista de vagas | 
|---|---|---|---|
| SEDU | 9/2016 | 61828450843 | [analista de sistemas, marceneiro] | 
| SEJUS | 15/2017 | 61828450843 | [carpinteiro,professor de matemática,assistente administrativo] | 
| SEJUS | 17/2017 | 95655123539 | [professor de matemática] | 
🤩 As tecnologias a serem utilizadas na implementação da solução ficam a seu critério!
- Faça um fork do repositório. Nesse fork esperamos encontrar uma documentação completa da solução e a listagem dos diferenciais implementados.
 - Abra um pull request (PR) do seu fork para o nome repositório com o seu nome como título. Assim conseguimos te localizar melhor e ver que você já finalizou o desafio!
 
🚨 Atenção: você deve enviar apenas o código fonte. Não serão aceitos códigos compilados.
O programa será avaliado levando em conta os seguintes critérios:
| Critério | Valor | 
|---|---|
| Legibilidade do Código | 10 | 
| Documentação do código | 10 | 
| Documentação da solução | 10 | 
| Tratamento de Erros | 10 | 
| Implementar testes unitários | 15 | 
| Implementar integração com Github Action | 10 | 
| Implementar integração com Github Action + SonarQube | 10 | 
| Implementar usando Docker | 5 | 
| Total | 90 | 
A sua pontuação será a soma dos valores obtidos nos critérios acima.
Você pode aumentar sua pontuação implementando os seguintes diferenciais:
| Item | Pontos Ganhos | 
|---|---|
| Criar um serviço com o problema | 30 | 
| Utilizar banco de dados | 30 | 
| Implementar Clean Code | 20 | 
| Implementar o padrão de programação da tecnologia escolhida | 20 | 
| Implementar testes comportamentais | 15 | 
| Usar tecnologias de IaC (Terraform, ansible, HelmChart, etc) | 15 | 
| Total | 130 | 
A pontuação final será calculada somando os critérios obrigatórios e os diferenciais implementados corretamente.
Você será desclassificado se:
- Enviar uma solução que não funcione.
 - Não cumprir os critérios da seção Avaliação.
 - For identificado plágio.
 
Que a força esteja com você. Boa sorte!