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!