# Desplegar una aplicación Abra **Despliegue**, configure el proyecto una vez (la IA lee su código y elige cómo se ejecuta cada parte) y seleccione **Desplegar**. Cada despliegue se conserva, así que puede revertir en un paso, y **Desconectar** detiene la aplicación y su costo de inmediato. Un despliegue publica la aplicación que construyó en un proyecto en una dirección web que cualquiera puede abrir. Los despliegues se ejecutan en AWS. Cada uno se construye a partir de un commit y se conserva, así que siempre sabe qué código está publicado. ## Antes de empezar [#antes-de-empezar] En la prueba gratis, las aplicaciones se construyen y ejecutan en [Studios](/docs/es/projects/studio). Compare planes en (consulte [Facturación](/docs/es/workspace/billing)). - **Plan**: Pro. En la prueba gratis, la página de Despliegue ofrece **Publicar con Pro**. - **Rol**: necesita poder cambiar el proyecto. - **Créditos**: una aplicación publicada usa los [créditos](/docs/es/workspace/credits) del espacio de trabajo mientras se ejecuta, según su [configuración de ejecución](/docs/es/deploy/run-settings). - **Apps en línea**: su plan fija cuántas pueden estar publicadas a la vez, como **Apps en línea** "X de Y en línea". Cuando todas están en uso, desconecte una o compre más. - **Código**: en un repositorio de [GitHub](/docs/es/connectors/github) vinculado o en el Studio del proyecto. ## Configurar el proyecto para desplegarlo [#configurar-el-proyecto-para-desplegarlo] La primera vez, el proyecto necesita una configuración de despliegue: qué se ejecuta, cómo arranca y cómo se ejecuta cada parte. La IA la escribe por usted. ### Abra Despliegue [#abra-despliegue] Vaya a o abra la pestaña **Despliegue** del proyecto. Un proyecto que no está listo dice **Este proyecto aún no está listo para desplegarse**. ### Pida a la IA que lo configure [#pida-a-la-ia-que-lo-configure] Si quiere, complete **¿Qué debe ejecutar esta app?** y seleccione **Configura este proyecto para desplegarlo**. La IA lee su repositorio y elige la forma más económica de ejecutar cada parte. ### Revise las partes [#revise-las-partes] **Configuración** lista cada parte con su modo de ejecución, memoria, CPU y lo máximo que puede costar por hora. ## Desplegar [#desplegar] ### Seleccione Desplegar [#seleccione-desplegar] En la tarjeta del proyecto en la página de Despliegue, seleccione **Desplegar**. - **Con un repositorio de GitHub vinculado**, Klarety construye el último commit de la rama de producción. - **Sin repositorio**, usted elige qué IA del Studio despliega el último commit. Como lo pidió una IA, el despliegue espera a que una persona lo apruebe (consulte [Aprobaciones](/docs/es/deploy/approvals)). ### Siga la construcción [#siga-la-construcción] El despliegue aparece en **Despliegues** y pasa por **En cola**, **Compilando** y **Activo**. Cada fila muestra el commit, el origen (**Push de Git**, **Manual** o **Créditos añadidos**), cuándo se creó y cuánto tardó. ### Abra la aplicación [#abra-la-aplicación] Seleccione **Visitar**. La aplicación responde en su dirección gratuita y en cualquier dominio que haya agregado. Con un repositorio vinculado, cada push a la rama de producción se despliega solo. `klarety deploy` despliega el proyecto. Con un repositorio de GitHub vinculado construye el último commit de la rama de seguimiento. Sin repositorio, envía el commit que tiene en la carpeta actual: solo lo que está en el commit, nunca archivos sin confirmar ni ignorados. ```bash klarety deploy --project PROJECT_ID ``` ```json { "deploy_id": "..." } ``` ```python from klarety import Nexus from klarety.errors import AwaitingApprovalError nx = Nexus.connect() try: deploy_id = nx.projects.deploy("PROJECT_ID") except AwaitingApprovalError as waiting: print("A person must approve it:", waiting.approval_id) else: print(nx.projects.describe_deploy("PROJECT_ID", deploy_id)) ``` Ejecutado dentro de un Studio, el despliegue es la solicitud de una IA: lanza `AwaitingApprovalError` y espera a una persona en la página de Despliegue. No lo llame de nuevo; avísele a esa persona. Use `deploy_commit("PROJECT_ID", repo=".")` para un proyecto sin repositorio vinculado y `deploys("PROJECT_ID")` para listar todos los despliegues. ## Volver a publicar [#volver-a-publicar] En una aplicación publicada el botón dice **Volver a publicar**, y la aplicación pregunta **¿Reemplazar la app publicada?** Construye la versión más reciente y la pone en línea cuando está lista; los visitantes ven la actual hasta entonces. Si ya hay un despliegue en curso, la aplicación lo espera. ## Revertir [#revertir] Cada despliegue se conserva. Abra **Más acciones** en una fila anterior de **Despliegues** y seleccione **Revertir a este despliegue**. No se reconstruye nada, así que es rápido, y puede volver de la misma forma. ```python nx.projects.promote("PROJECT_ID", OLDER_DEPLOY_ID) ``` Promover un despliegue anterior equivale a revertir. Klarety también revierte por usted si una versión nueva falla demasiadas solicitudes justo después de publicarse, y el despliegue explica por qué. ## Desconectar una aplicación [#desconectar-una-aplicación] Desconectar una aplicación detiene su costo de inmediato y conserva su nombre, sus datos y sus despliegues. Seleccione **Desconectar** y confirme. Los visitantes ven que está desconectada. Revierta o despliegue para volver a publicarla. ```python nx.projects.take_offline("PROJECT_ID") ``` ## Cuando un despliegue falla [#cuando-un-despliegue-falla] Un despliegue fallido muestra en qué etapa se detuvo (**Compilar**, **Iniciar** o **Publicar**), una explicación sencilla y qué hacer. Seleccione **Ver por qué** para leer lo que imprimió su aplicación. Razones comunes: - La compilación falló. - No se encontró una dependencia. - La aplicación no empezó a responder en su puerto a tiempo. - La aplicación se quedó sin memoria. - La verificación de estado no respondió, o respondió con un error. Seleccione **Arreglar con IA** para enviar lo que salió mal a la IA del proyecto, que trabaja en una solución que puede ver en el Studio. Si el Studio está cerrado, la IA empieza cuando se abra de nuevo. ```python nx.projects.fix_deploy_with_ai("PROJECT_ID", FAILED_DEPLOY_ID) ``` ## Elegir la dirección gratuita de la aplicación [#elegir-la-dirección-gratuita-de-la-aplicación] Cada aplicación recibe una dirección gratuita que sigue funcionando después de agregar su propio dominio. En **La dirección gratuita de tu app**, seleccione **Elegir** (o **Editar**), escriba un nombre y seleccione **Guardar** cuando muestre **Disponible**. Use de 3 a 30 letras minúsculas, dígitos y guiones simples, sin guion al inicio ni al final. Una aplicación publicada se mueve a la nueva dirección y la anterior sigue redirigiendo; si no, la nueva dirección aplica desde el próximo despliegue. ```python print(nx.projects.check_app_name("PROJECT_ID", "acme-orders")) nx.projects.choose_app_name("PROJECT_ID", "acme-orders") ``` ## La clave de la aplicación [#la-clave-de-la-aplicación] Su aplicación publicada llega a los datos del proyecto con su propia clave, que nunca se muestra. Para rotarla, consulte [Ejecución y claves de la aplicación](/docs/es/deploy/run-settings#rotar-la-clave-de-la-aplicación). ## Uso [#uso] **Uso** muestra los créditos usados por día en los últimos días. En **Configuración**, cada parte muestra sus llamadas, errores, respuesta promedio y momento de más carga. ## Siguientes pasos [#siguientes-pasos] - [Aprobaciones](/docs/es/deploy/approvals) - [Ejecución y claves de la aplicación](/docs/es/deploy/run-settings) - [Dominios](/docs/es/deploy/domains) - [Registros](/docs/es/deploy/logs)