Administra lanzamientos

Un lanzamiento de Cloud Deploy incluye fases. Una fase es una agrupación ordenada y lógica de los trabajos que se realizan en un lanzamiento.

Cada fase incluye trabajos, que son las acciones que se deben realizar en cada fase (por ejemplo, deploy o verify). Cada trabajo puede tener cero o más ejecuciones de trabajos. La ejecución de un trabajo es una instancia de un trabajo. Si el trabajo no se ejecutó, no hay ejecuciones del trabajo.

En este documento, se describen las fases, los trabajos y las ejecuciones de trabajos, y cómo administrarlos.

Estructura de un lanzamiento

Un lanzamiento es un recurso de Cloud Deploy que asocia una versión con un destino.

Fases

Un lanzamiento consta de una o más fases.

Para una estrategia de implementación estándar, solo hay una fase: stable.

En el caso de una estrategia de implementación de versiones canary, hay una fase independiente para cada porcentaje configurado. Por ejemplo, si configuras una versión canary que implementa un 25%, luego el 50% y, luego, el 100%, habrá tres fases:

  • canary-25
  • canary-50
  • stable

Estos nombres de fase son estándar: canary-[PERCENTAGE] para las etapas de versión canary y stable para la fase del 100%. Sin embargo, si configuras una versión canary manual o personalizada, puedes controlar los nombres de las fases.

Trabajos y ejecuciones de trabajos

Cada fase de lanzamiento incluye uno o más trabajos.

Para un lanzamiento en una estrategia de implementación estándar, sin la verificación de implementación habilitada, hay una fase (stable).

En un lanzamiento de versión canary, habrá una fase para cada parte de la versión canary (por ejemplo, canary-25, canary-50, stable) y, por cada fase, un trabajo deploy. Si la verificación está habilitada, también hay un trabajo verify para cada fase.

La ejecución de un trabajo es una instancia de un trabajo. Por ejemplo, se ejecuta una ejecución de trabajo para un trabajo deploy y, si se ejecuta de forma correcta, no hay más trabajos para ese trabajo. Si falla, se puede reintentar como ejecución de otro trabajo.

Cómo omitir fases la primera vez

Algunas estrategias de implementación (por ejemplo, la versión canary) reparten tráfico entre la versión nueva y la anterior. Si implementas en un destino por primera vez, no hay una versión antigua, por lo que no podemos repartir el tráfico.

Por este motivo, cuando implementas una versión canary por primera vez, omitemos la fase o fases de la versión canary y ejecutamos la fase stable. Después de eso, se implementa la aplicación, y las implementaciones de versiones canary futuras incluirán las fases de versión canary.

En una situación real, por lo general, ejecutarás una implementación de versiones canary en la que tu aplicación ya se está ejecutando, por lo que la omisión de esta fase será poco frecuente.

Estados en un lanzamiento

Los lanzamientos, las fases, los trabajos y las ejecuciones de trabajos tienen estados. En esta sección, se describen los estados de cada uno.

Estados del lanzamiento

Un lanzamiento tendrá uno de los siguientes estados:

  • APPROVAL_REJECTED

    El lanzamiento requirió aprobación, pero se rechazó la aprobación.

  • CANCELLED

    El estado terminal de los lanzamientos que un usuario canceló.

  • CANCELLING

    Un usuario canceló el lanzamiento, pero aún no terminó de procesarse la cancelación.

  • HALTED

    En una implementación paralela, si uno o más lanzamientos secundarios fallan, pero al menos un lanzamiento secundario se realiza correctamente, el lanzamiento del controlador se HALTED si hay más fases después de la actual.

    Para reanudar el lanzamiento de un controlador detenido, puedes hacer lo siguiente:

    • Cancela el lanzamiento del controlador

    • Reintenta o ignora los trabajos con errores en los lanzamientos secundarios

  • IN_PROGRESS

    Se está procesando una ejecución de trabajo.

  • FAILED

    Un trabajo falló y el usuario no eligió ignorar el error.

  • PENDING

    El lanzamiento aún no comenzó a procesarse. Este estado pasa a IN_PROGRESS o CANCELED.

  • PENDING_APPROVAL

    El lanzamiento requiere aprobación, pero aún no se aprobó.

  • PENDING_RELEASE

    El lanzamiento está esperando que se renderice la versión.

  • SUCCEEDED

    El lanzamiento finalizó sin errores.

Estados de las fases

Una fase tendrá uno de los siguientes estados:

  • PENDING

    La fase espera a que finalice otra fase del lanzamiento.

  • IN_PROGRESS

    Comenzó la fase.

  • SUCCEEDED

    La fase se completó correctamente.

  • FAILED

    Un trabajo en la fase falló y el usuario no eligió ignorar la falla.

  • ABORTED

    Falló una fase anterior.

  • SKIPPED

    Cuando ejecutas una estrategia de implementación, como una canary, Cloud Deploy salta a la fase stable en casos en los que aún no existe una versión en ejecución de la aplicación para dividir el tráfico. En este caso, el estado se establece en SKIPPED.

Estados del trabajo

Un trabajo tendrá uno de los siguientes estados:

  • ABORTED

    Si una fase falla, se anulan las fases posteriores.

    Si un trabajo falla y ese error no se ignora, se anulan los trabajos posteriores. Por ejemplo, si una fase incluye un trabajo de implementación y uno de verificación, y este falla, el trabajo de verificación se anula.

  • DISABLED

    Algunos trabajos en una fase pueden estar inhabilitados. Por ejemplo, las fases siempre incluyen trabajos de verificación, sin importar si la verificación está habilitada o no. Si la verificación no está habilitada, el trabajo de verificación se configura como DISABLED.

  • FAILED

    Falló una ejecución de trabajo para este trabajo y el usuario no eligió ignorar el error.

    El usuario eligió finalizar la ejecución del trabajo para este trabajo.

  • IGNORED

    Falló una ejecución de trabajo para este trabajo, y el usuario eligió ignorar el error.

  • IN_PROGRESS

    En este momento, se está ejecutando un trabajo para este trabajo.

  • PENDING

    La ejecución del trabajo para este trabajo está esperando para comenzar porque no finalizó otra fase o trabajo.

  • SKIPPED

    Cuando ejecutas una estrategia de implementación, como una canary, Cloud Deploy salta a la fase stable en casos en los que aún no existe una versión en ejecución de la aplicación para dividir el tráfico. En este caso, el estado se establece en SKIPPED en trabajos dentro de las fases o fases omitidas.

  • SUCCEEDED

    La ejecución del trabajo finalizó correctamente y se inició el siguiente trabajo de la fase, o la fase siguiente se inició o está lista para iniciarse (posiblemente la entrada del usuario está pendiente), o el lanzamiento finalizó.

Estados de ejecución del trabajo

  • FAILED

    La ejecución del trabajo falló durante la ejecución.

  • IN_PROGRESS

    La ejecución del trabajo comenzó, pero no ha finalizado.

  • TERMINATED

    El usuario finalizó la ejecución del trabajo.

  • TERMINATING

    El usuario finalizó la ejecución del trabajo, pero aún no terminó.

  • SUCCEEDED

    Cuando la ejecución de un trabajo finaliza correctamente, sin que falle ni que un usuario la finalice, pasa al estado SUCCEEDED, que

Administra el lanzamiento

Con la consola de Google Cloud o el SDK de Google Cloud, puedes hacer lo siguiente con un lanzamiento de Cloud Deploy:

Si usas la implementación en paralelo con una estrategia de implementación de versiones canary, consulta este documento.

Cómo avanzar en un lanzamiento

En el caso de los objetivos configurados para usar una estrategia de implementación que no sea “estándar”, debes avanzar el lanzamiento de una fase a otra.

Por ejemplo, si tienes un destino configurado para realizar una implementación de versiones canary simple solo con las fases 50% y stable (100%), deberás avanzar el lanzamiento una vez, desde la fase canary-50 hasta la fase stable (100%).

gcloud

gcloud deploy rollouts advance ROLLOUT_NAME \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --region=REGION

Donde:

ROLLOUT_NAME es el nombre del lanzamiento actual que deseas avanzar a la siguiente fase.

RELEASE_NAME es el nombre de la versión de la que forma parte este lanzamiento.

PIPELINE_NAME es el nombre de la canalización de entrega que usas para administrar la implementación de esta versión.

REGION es el nombre de la región en la que se creó la versión, por ejemplo, us-central1. Este campo es obligatorio.

Consulta la referencia del SDK de Google Cloud para obtener más información sobre el comando gcloud deploy rollouts advance.

Consola

  1. Abre la página Canalizaciones de entrega.

  2. Haz clic en la canalización que se muestra en la lista de canalizaciones de entrega.

    En la página de detalles de la canalización de entrega, se muestra una representación gráfica del progreso de tu canalización de entrega.

  3. En la pestaña Lanzamientos, en Detalles de canalización de entrega, haz clic en el nombre de tu lanzamiento.

    Se muestra la página de detalles del lanzamiento para ese lanzamiento.

    detalles del lanzamiento en la consola de Google Cloud

    Ten en cuenta que, en este ejemplo, el lanzamiento tiene una fase canary-50 y una fase stable. El lanzamiento puede tener más fases o diferentes.

  4. Haz clic en Implementación avanzada.

    El lanzamiento avanza a la siguiente fase.

Cancela un lanzamiento

Puedes cancelar cualquier lanzamiento que no haya finalizado. También puedes cancelar un lanzamiento con errores para evitar que se realicen más acciones (como ignorar o reintentar). El lanzamiento debe tener uno de los siguientes estados:

  • FAILED
  • HALTED
  • IN_PROGRESS
  • PENDING
  • PENDING_APPROVAL
  • PENDING_RELEASE

Después de que canceles un lanzamiento, este permanecerá en el estado CANCELLING hasta que se completen todas las ejecuciones de trabajos pendientes. Puedes finalizar ejecuciones de trabajos pendientes que no quieras esperar. Una vez que el lanzamiento sea CANCELLED, ya no se podrá avanzar ni modificar.

Para cancelar un lanzamiento, sigue estos pasos:

gcloud

gcloud deploy rollouts cancel ROLLOUT_NAME \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --region=REGION

Donde:

ROLLOUT_NAME es el nombre del lanzamiento actual que deseas avanzar a la siguiente fase.

RELEASE_NAME es el nombre de la versión de la que forma parte este lanzamiento.

PIPELINE_NAME es el nombre de la canalización de entrega que usas para administrar la implementación de esta versión.

REGION es el nombre de la región en la que se creó la versión, por ejemplo, us-central1. Este campo es obligatorio.

Consulta la referencia del SDK de Google Cloud para obtener más información sobre el comando gcloud deploy rollouts cancel.

Consola

  1. Abre la página Canalizaciones de entrega.

  2. Haz clic en la canalización que se muestra en la lista de canalizaciones de entrega.

    En la página de detalles de la canalización de entrega, se muestra una representación gráfica del progreso de tu canalización de entrega.

  3. En la pestaña Lanzamientos, en Detalles de canalización de entrega, haz clic en el nombre de tu lanzamiento.

    Se muestra la página de detalles del lanzamiento para ese lanzamiento.

    detalles del lanzamiento en la consola de Google Cloud

    Ten en cuenta que, en este ejemplo, el lanzamiento tiene una fase canary-50 y una fase stable. El lanzamiento puede tener más fases o diferentes.

  4. Haz clic en Cancelar lanzamiento.

    Se canceló el lanzamiento.

Finaliza la ejecución de un trabajo

Puedes finalizar una ejecución de trabajo que esté en curso. Se recomienda hacerlo, por ejemplo, si la ejecución de un trabajo tarda demasiado o no funciona como se espera. La ejecución del trabajo debe ser IN_PROGRESS para que puedas finalizarlo.

gcloud

gcloud deploy job-runs terminate JOB_RUN_ID \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --rollout=ROLLOUT_NAME \
                               --region=REGION

Donde:

JOB_RUN_ID es el (UUID) de la ejecución del trabajo que deseas finalizar. Puedes encontrar el ID de ejecución del trabajo en la consola de Google Cloud, para Cloud Deploy, en la página de lanzamiento:

ID de ejecución del trabajo en los detalles del lanzamiento en la consola de Google Cloud

También puedes obtener el ID de ejecución del trabajo con el comando gcloud deploy rollouts describe.

RELEASE_NAME es el nombre de la versión de la que forma parte este trabajo.

PIPELINE_NAME es el nombre de la canalización de entrega que usas para administrar la implementación de esta versión.

ROLLOUT_NAME es el nombre de la implementación de la que forma parte este trabajo.

REGION es el nombre de la región en la que se creó la versión, por ejemplo, us-central1. Este campo es obligatorio.

Consulta la referencia del SDK de Google Cloud para obtener más información sobre el comando gcloud deploy job-runs terminate.

Consola

  1. Abre la página Canalizaciones de entrega.

  2. Haz clic en la canalización que se muestra en la lista de canalizaciones de entrega.

    En la página de detalles de la canalización de entrega, se muestra una representación gráfica del progreso de tu canalización de entrega.

  3. En la pestaña Lanzamientos, en Detalles de canalización de entrega, haz clic en el nombre de tu lanzamiento.

    Se muestra la página de detalles del lanzamiento para ese lanzamiento.

    detalles del lanzamiento en la consola de Google Cloud

    Ten en cuenta que, en este ejemplo, el lanzamiento tiene una fase canary-50 y una fase stable. El lanzamiento puede tener más fases o diferentes.

  4. En Fases, haz clic en la fase que incluye el trabajo cuya ejecución de trabajo estás por finalizar.

  5. En Ejecuciones de trabajos, selecciona la ejecución del trabajo específica que estás finalizando y, luego, haz clic en Finalizar.

    La ejecución del trabajo finalizó, y su estado, como se muestra en la tabla Fases, es Failure.

Después de finalizar la ejecución de un trabajo, este se considera con errores y puedes realizar cualquiera de las siguientes acciones:

  • Déjalo así e ignora el lanzamiento con errores.
  • Vuelve a intentar el trabajo
  • Ignorar el trabajo y continuar con el siguiente trabajo o fase del lanzamiento

Ignorar un trabajo

Puedes ignorar un trabajo con errores y pasar de inmediato al siguiente trabajo de la fase. Es posible que el trabajo haya fallado por cualquier motivo, por ejemplo, tú o alguien más finalizó la ejecución de un trabajo para ese trabajo.

Un trabajo con errores significa una fase y un lanzamiento con errores. Sin embargo, si ignoras la falla, tanto la fase como el lanzamiento pueden avanzar y, en última instancia, pueden tener estados SUCCEEDED.

gcloud

gcloud deploy rollouts ignore-job ROLLOUT_NAME \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --job-id=JOB_ID \
                               --phase-id=PHASE_ID \
                               --region=REGION

Donde:

ROLLOUT_NAME es el nombre de la implementación de la que forma parte este trabajo.

RELEASE_NAME es el nombre de la versión actual que incluye este trabajo.

PIPELINE_NAME es el nombre de la canalización de entrega que usas para administrar la implementación de esta versión.

JOB_ID es el nombre del trabajo que se debe ignorar, por ejemplo DEPLOY. Puedes encontrar el nombre del trabajo en la tabla Fases para el lanzamiento, en la consola de Google Cloud:

La tabla de fases en la consola de Google Cloud con una ejecución de trabajo con errores

PHASE_ID es el nombre de la fase que incluye el trabajo que ignoras.

REGION es el nombre de la región en la que se creó la versión, por ejemplo, us-central1.

Consulta la referencia del SDK de Google Cloud para obtener más información sobre el comando gcloud deploy rollouts ignore-job.

Consola

  1. Abre la página Canalizaciones de entrega.

  2. Haz clic en la canalización que se muestra en la lista de canalizaciones de entrega.

    En la página de detalles de la canalización de entrega, se muestra una representación gráfica del progreso de tu canalización de entrega.

  3. En la pestaña Lanzamientos, en Detalles de canalización de entrega, haz clic en el nombre de tu lanzamiento.

    Se muestra la página de detalles del lanzamiento para ese lanzamiento.

  4. Selecciona el trabajo con errores que deseas ignorar.

  5. Haz clic en el botón Ignorar fallas.

    La ejecución del trabajo con errores se ignora y el lanzamiento continúa como si el trabajo se hubiera realizado correctamente. Es decir, si hay otros trabajos en la misma fase, se ejecutan. De lo contrario, el lanzamiento está listo para avanzar a la siguiente fase.

Un trabajo con errores, listo para ignorarse, en la consola de Google Cloud

Reintentar un trabajo con errores

Puedes reintentar una ejecución de trabajo que falló. El trabajo puede fallar por cualquiera de los siguientes motivos:

  • No se pudo completar la ejecución de un trabajo.

    Por ejemplo, podría haber un error en los permisos.

  • Un usuario finalizó la ejecución de una tarea de ese trabajo.

    Cuando finaliza la ejecución de un trabajo, se genera un trabajo con errores, que puedes volver a intentar.

  • Falló una prueba de verificación.

    En un trabajo de verificación, la prueba de verificación falló. Aunque el trabajo de verificación se completó correctamente, una de tus pruebas de verificación falló, y propagamos eso al trabajo de verificación. En este caso, vuelve a intentar el trabajo como parte de la depuración de la prueba con errores en tu aplicación.

Para reintentar un trabajo con errores, sigue estos pasos:

gcloud

gcloud deploy rollouts retry-job JOB_NAME \
                       --release=RELEASE_NAME \
                       --delivery-pipeline=PIPELINE_NAME \
                       --rollout=ROLLOUT_NAME \
                       --phase=PHASE_ID \
                       --region=REGION

Donde:

JOB_NAME es el nombre del trabajo que vuelves a intentar. Por ejemplo, si vuelves a intentar el trabajo de verificación después de una verificación con errores, este sería verify.

RELEASE_NAME es el nombre de la versión de la que forma parte este trabajo.

PIPELINE_NAME es el nombre de la canalización de entrega que usas para administrar la implementación de esta versión.

ROLLOUT_NAME es el nombre de la implementación de la que forma parte este trabajo.

PHASE_ID es el nombre de la fase de la que forma parte este trabajo. Por ejemplo, canary-50 o stable.

REGION es el nombre de la región en la que se creó la versión, por ejemplo, us-central1. Este campo es obligatorio.

Consulta la referencia del SDK de Google Cloud para obtener más información sobre el comando gcloud deploy rollouts retry-job.

Consola

  1. Abre la página Canalizaciones de entrega.

  2. Haz clic en la canalización que se muestra en la lista de canalizaciones de entrega.

    En la página de detalles de la canalización de entrega, se muestra una representación gráfica del progreso de tu canalización de entrega.

  3. En la pestaña Lanzamientos, en Detalles de canalización de entrega, haz clic en el nombre de tu lanzamiento.

    Se muestra la página de detalles del lanzamiento para ese lanzamiento.

  4. En Fases y trabajos, haz clic en la fase que incluye el trabajo que quieres reintentar.

  5. Selecciona el trabajo para volver a intentarlo.

  6. Haz clic en Reintentar y confirma tu decisión.

    detalles del lanzamiento en la consola de Google Cloud

    La ejecución del trabajo se vuelve a ejecutar, y el estado del trabajo, como se muestra en la tabla Fases, es "en curso". Si hay otros trabajos en la misma fase, se ejecutan. De lo contrario, el lanzamiento está listo para avanzar a la siguiente fase.

¿Qué sigue?