Skip to content

a project to support continuous integration classes

Notifications You must be signed in to change notification settings

brunotojo/2023-s1-ci

 
 

Repository files navigation

Projeto para suporte às aulas de integração contínua

Problema

Esse repositório implementa uma API HTTP para validar o texto de uma senha de acordo com alguns critérios. Entretanto, o código está incompleto e possui bugs, o seu trabalho é consertá-lo, completá-lo e rodar o pipeline.

Este repositório foi desenvolvido utilizando o gerenciador de pacotes poetry, mas você não precisa dele. Basta utilizar o arquivo simple_web_api/requirements.txt

Os critérios para senhas válidas são:

  1. Mínimo de 8 caracteres
  2. Pelo menos 1 número
  3. Pelo menos 1 caractere especial
  4. Pelo menos 1 letra maiúscula
  5. Pelo menos 1 letra minúscula
  6. Caracteres especiais não podem ser / ^ ~

Tarefas

0. Faça o fork do projeto no github;

1. Faça o clone do seu fork na sua máquina;

2. Verifique que os testes não cobrem a especificação e adicione testes e implementação adequados;

3. Rode o seu pipeline com sucesso.

Instalando o ambiente de desenvolvimento

Development environment dependencies

Dependencies Tested Version Minimum Version Url
Python 3.11 3.7.5 link
Poetry (optional) 1.2.0 1.0.0 link

clone o seu fork

$ git clone [email protected]:...XXXX.../2023-s1-ci.git

Instalando as dependências

$ cd 2023-s1-ci/
$ python3 -m venv .venv
$ source .venv/bin/activate
$ cd simple_web_app
$ pip install -r requirements.txt

Rodando a aplicação web

$ cd 2023-s1-ci
$ uvicorn simple_web_app.main:app --reload

Rodando os testes

$ cd 2023-s1-ci
$ pytest

Apêndice

Publicar imagens docker

  1. Criar uma conta no docker hub https://hub.docker.com/
  2. Criar access token no docker hub
  3. Criar variável mascarada docker_hub_token com este access_token no github
  4. Criar variável docker_hub_login com o seu espaço no docker hub no github
  5. Rodar os stages de build e release do pipeline

Fazer deploy da aplicação no PaaS chamado deta

  1. Criar uma conta no deta https://www.deta.sh/
  2. Instalar cliente do deta e configurar projeto
$ curl -fsSL https://get.deta.dev/cli.sh | sh   # instalar cliente deta
$ source ~/.bashrc                              # disponibilizar comando
$ deta login                                    # logar na conta já criada
$ cd 2023-s1-ci                                 # entrar na raiz do projeto
$ deta new —python simple_web_app               # criar projeto no cloud deta
$ cd simple_web_app                             # entrar na pasta com código python
$ deta deploy                                   # realizar deploy
$ deta visor enable                             # habilitar logs no cloud deta
  1. Gerar access token em settings no site deta
  2. Criar variável mascarada DETA_ACCESS_TOKEN no github
  3. Commitar modificações no arquivo simple_web_app/.deta/prog_info
  4. Criar variável PRODUCTION_URL no github com a URL do serviço na deta
  5. Seguir o fluxo de gerência de configuração até a branch main
  6. Disparar o job de deploy manualmente ao final da pipeline na main

rodando do docker

$ cd 2023-s1-ci
$ docker build -t simple_web_app .
$ docker run --rm -p 8000:80 simple_web_app

About

a project to support continuous integration classes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 97.3%
  • Dockerfile 2.7%