Sbayt Anubis CLI
Project description
𓁢 Anubis CLI
Automated Network & User Base Installation Service
Descripción
Esta herramienta define y organiza un conjunto de tareas automatizadas para configurar y
gestionar entornos de desarrollo/producción. Utiliza invoke para estructurar las tareas
y rich para mejorar la experiencia en terminal.
Características principales
- Instalación local y gestión de herramientas CLI esenciales (AWS CLI, Bitwarden CLI).
- Configuración de repositorios privados (CodeArtifact) para pip y uv.
- Automatización de servicios Docker (crear red, iniciar, detener, limpiar, construir).
- Verificación de configuraciones de seguridad y entorno local (Bitwarden, AWS ECR, etc.).
Instalación global
Para instalar la herramienta de forma global, puedes utilizar uv(recomendado) o pipx.
# Con uv (recomendado)
uv tool install anubis-cli
# Con pipx
pipx install anubis-cli
Requisitos
- Python 3.9 o superior.
- uv para instalar herramientas globalmente.
- Un archivo de despliegue (local o global, por defecto: deployment.yml) para definir perfiles y credenciales.
Uso básico
- Ver tareas disponibles:
anubis help - Verificar tu entorno local:
anubis check.environment - Iniciar servicios Docker con perfiles específicos:
anubis docker.up --profiles=infra,api --env=prod - Configurar pip para CodeArtifact:
anubis aws.configure-pip
Configurar autocompletado para anubis:
# Para bash
anubis --print-completion-script bash > ~/.anubis-completion.bash
echo "source ~/.anubis-completion.bash" >> ~/.bashrc
source ~/.bashrc
# Para zsh
anubis --print-completion-script zsh > ~/.anubis-completion.zsh
echo "source ~/.anubis-completion.zsh" >> ~/.zshrc
source ~/.zshrc
Para más detalles o ejemplos adicionales, consulta la documentación de cada tarea
usando el comando anubis --list o revisa los docstrings individuales.
Configuración del Entorno de Desarrollo
A continuación se indica cómo preparar el entorno de desarrollo.
Requisitos
Configuración
-
Crea el entorno virtual:
uv sync -
Comprobar que el entorno virtual se ha creado correctamente:
uv pip check uv tree
-
Utiliza el entorno virtual:
Al utilizar
uvcomo gestor de paquetes, podemos utilizar el entorno de varias maneras:-
(Recomendado) Utilizar el comando
un run <comando>para ejecutar comandos dentro del entorno virtual:uv run anubis uv run pytest -m unit
-
Activar el entorno virtual:
source .venv/bin/activate
-
Manejo de Dependencias
Al utilizar uv como gestor de paquetes, podemos manejar las dependencias de nuestro proyecto de manera sencilla. Cuando se instala una dependencia, se guarda en el archivo uv.lock para que se pueda reproducir el entorno en otro lugar, además de añadirlo al archivo pyproject.toml en su sección correspondiente.
Para instalar nuevas dependencias o actualizar una existente, simplemente ejecuta el siguiente comando:
uv add <package>
Para añadir las dependencias de desarrollo, ejecuta el siguiente comando:
uv add --dev <package>
Para eliminar una dependencia, ejecuta el siguiente comando:
uv remove <package>
uv remove --dev <package>
También se pueden exportar las dependencias a un archivo requirements.txt:
uv export --no-hashes -o requirements.txt
Creación de un nuevo paquete
Para crear un nuevo paquete en desarrollo, sigue los siguientes pasos:
-
Ejecuta el siguiente comando para crear un nuevo paquete:
uv build -
Se creará la carpeta
distcon el paquete y su wheel. -
Instala el paquete en tu entorno virtual en otro proyecto:
Mueve la carpeta
distal directorio raíz del proyecto y ejecuta el siguiente comando:uv tool install --from dist/anubis_cli-{version}-py3-none-any.whl anubis-cli
Despliegue del Paquete
Al ejecutar el workflow CI.yml, se desplegará el paquete en PyPI.
GitHub Actions
El archivo ci.yml contiene un flujo de trabajo que se ejecuta en cada push a la rama master. Este flujo de trabajo consta de los siguientes trabajos:
fetch
Realiza la acción de checkout del código fuente desde el repositorio.
lint
Realiza las siguientes acciones:
- Checkout del código fuente.
- Configura Python utilizando la acción setup-python.
- Configura
uv. - Sincroniza las dependencias utilizando
uv. - Verifica los paquetes instalados.
- Ejecuta los hooks de pre-commit para asegurar la calidad del código.
test
Utiliza una estrategia de matriz para probar en múltiples versiones de Python (3.10, 3.11, 3.12).
Realiza las siguientes acciones:
- Checkout del código fuente.
- Configura Python utilizando la acción setup-python.
- Configura
uv. - Sincroniza las dependencias utilizando
uv. - Ejecuta las pruebas unitarias utilizando
pytest. - Ejecuta las pruebas de integración utilizando
pytest.
scan
Realiza las siguientes acciones:
- Checkout del código fuente.
- Ejecuta el escáner de vulnerabilidades Trivy en modo repositorio para buscar vulnerabilidades críticas y altas en el código, secretos y configuraciones.
publish
Realiza las siguientes acciones:
- Checkout del código fuente.
- Configura Python utilizando la acción setup-python.
- Configura
uv. - Construye y publica el paquete a PyPI.
Ejecución de los Tests
Si deseas ejecutar todos los tests (unitarios y de integración) en el directorio tests, simplemente puedes ejecutar pytest sin especificar un directorio:
uv run pytest
Esto ejecutará todos los tests que pytest pueda encontrar en el directorio actual y sus subdirectorios.
Ejecución de Tests Unitarios
Para ejecutar solo los tests unitarios, que estarían organizados en el directorio tests/unit:
uv run pytest tests/unit
Esto ejecutará todos los tests unitarios que se encuentren en ese directorio y sus subdirectorios.
También puedes especificar un archivo específico si solo deseas ejecutar los tests de un archivo particular:
uv run pytest tests/unit/test_module1.py
Ejecución de Tests de Integración
Para ejecutar solo los tests de integración, que estarían organizados en el directorio tests/integration:
uv run pytest tests/integration
Esto ejecutará todos los tests de integración que se encuentren en ese directorio y sus subdirectorios.
Al igual que con los tests unitarios, puedes especificar un archivo específico si solo deseas ejecutar los tests de un archivo particular:
uv run pytest tests/integration/test_integration_module1.py
Marcadores o Tags
Además, pytest permite usar marcadores o tags para categorizar tus tests y ejecutar solo aquellos marcados con un cierto tag.
Esto es útil si quieres ejecutar un grupo específico de tests independientemente de su ubicación en el directorio.
Por ejemplo, si tienes marcadores como @pytest.mark.unit y @pytest.mark.integration, puedes ejecutar solo los tests marcados como unitarios o de integración de esta manera:
uv run pytest -m unit # Ejecuta solo tests marcados como unit
uv run pytest -m integration # Ejecuta solo tests marcados como integration
Contributing
For a complete guide on how to contribute to the project, please review the Contribution Guide.
Reporting Issues
If you believe you've found a defect in this project or its documentation, open an issue in Jira so we can address it.
If you're unsure whether it's a bug, feel free to discuss it in our forums or internal chat—someone will be happy to help.
Code of Conduct
See the Code of Conduct.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file anubis_cli-0.0.9.tar.gz.
File metadata
- Download URL: anubis_cli-0.0.9.tar.gz
- Upload date:
- Size: 29.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.5.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
497c44a2e50b0d33e96cb10e619f9476dbe933d7ad392851a35849912fa976b2
|
|
| MD5 |
6cff268cbef1d8d31bdce96ced632cd3
|
|
| BLAKE2b-256 |
2836cf278f4611a981549afa22c4453acdc68cc2aba18b433d15215c31e883d5
|
File details
Details for the file anubis_cli-0.0.9-py3-none-any.whl.
File metadata
- Download URL: anubis_cli-0.0.9-py3-none-any.whl
- Upload date:
- Size: 29.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.5.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a7bc84515fe58fe929faaac52d3b0347b257f305ffabd4f76186f75ba782bda
|
|
| MD5 |
178245b2b42af81a2ee5cd03e4acb8dc
|
|
| BLAKE2b-256 |
54d48078d109669a568550e842eea02500592751c28b8fa133fd93b1fa9ffa03
|