Skip to Content

Novedades

Notas de versión de ajat, de más reciente a más antigua.


Lo último

Secretos y coste de automatización en el informe de riesgo

Disponible desde v1.0.8. El informe de riesgo gana siete hallazgos, cuatro de ellos de severidad alta, y la calificación de la mayoría de inventarios baja hasta que se trabajan.

  • Secretos expuestos. Los tokens en URLs de webhook (Google Chat, Slack, cualquier parámetro key= o token=), las cabeceras Authorization y de token de webhook literales, y los tokens con la forma de GitHub, AWS, Atlassian, Slack y Google se señalan como hallazgos de severidad alta. El hallazgo dice qué tipo de secreto es y dónde está, nunca ninguna parte de él. En una exportación real de 654 reglas encontró 175 reglas; la opción de exportación --redact-sensitive-fields de Jira las había dejado todas intactas. Los informes enmascaran ahora las credenciales en cada fragmento de configuración que citan, incluidos los cuerpos de comentario del informe de workflow.
  • Lo que dispara el coste de la automatización, contado solo sobre reglas habilitadas: programaciones que se disparan más de una vez por hora (alta) o cada hora (media); disparadores que se activan con casi cualquier cambio (media, o alta en scope global y multiproyecto); búsquedas programadas y ramas JQL sin ventana temporal (alta); y búsquedas (lookups) y peticiones web en cada ejecución (media). Programaciones de alta frecuencia se divide en Por debajo de la hora (30 puntos) y Cada hora (12), y una regla deshabilitada con una programación de cinco minutos ya no puntúa.
  • La puntuación se explica a partir de la propia puntuación. La leyenda de puntos y la lista de hallazgos que solo cuentan reglas habilitadas se generan a partir de la misma tabla que usa la puntuación, y los motivos aparecen como un chip por hallazgo, coloreado según la severidad, junto a cada regla — en la tabla superior y bajo la lista de cada hallazgo. Buscar secret o throttled encuentra las reglas, no solo el encabezado.

Consulta Risk para cada hallazgo y sus puntos, y las recetas de barrido de secretos y revisión del coste de automatización.

Búsquedas medidas e historial de ejecución

Disponible desde v1.0.8.

  • ajat export --probe-jql cuenta cada búsqueda programada y rama JQL a través de Jira, acotada a los proyectos de la regla tal como Jira la ejecuta, y escribe los recuentos junto a cada regla. El informe de riesgo señala entonces las búsquedas de más de 1000 work items por su tamaño real y deja de señalar las pequeñas: en un inventario de 654 reglas, leer solo el JQL señaló nueve búsquedas; la sonda descartó ocho (de 0 a 46 work items) y confirmó una en 3.588. Desactivada por defecto; una petición por búsqueda distinta. Consulta Medir el tamaño de las búsquedas.
  • ajat audit-log import lee los ficheros CSV que exporta la página del registro de auditoría de Automation de Jira, y ajat audit-log fetch (experimental) lee los últimos 15 días, o --days hasta 90, del propio registro. Ambos escriben estadísticas de ejecución por regla en la exportación, y el informe de riesgo gana Ejecuciones limitadas (alta), Ejecuciones sin acciones (media), una marca para las ejecuciones que tocaron 100 o más work items y una tabla Reglas más activas junto a la puntuación de riesgo. En un sitio real, el 85 % de las ejecuciones recientes no realizó ninguna acción. La API pública no tiene endpoint de registro de auditoría, así que fetch usa el que llama la propia página de Jira, que Atlassian puede cambiar; import no usa más que la exportación de Jira. Consulta Historial de ejecución de reglas.
  • Todos los informes aceptan --state all|enabled|disabled. El filtro se aplica antes de contar nada, así que los totales, las gráficas, los grupos de duplicados y la calificación de riesgo describen el subconjunto, y la cabecera indica cuál.

Propietarios, actores y la búsqueda que lo devolvía todo

Disponible desde v1.0.8.

  • ajat search --owner acepta un account ID, una dirección de correo o un nombre para mostrar; todo lo que no sea un account ID se busca en Jira y debe coincidir con una sola persona. La tabla gana las columnas State y Owner, y la salida JSON lleva el propietario, el actor, el estado y las etiquetas de cada regla.
  • ajat search --author y --scope devolvían todas las reglas. Ambos enviaban un campo que la API de Automation no reconoce, y la API ignora lo que no reconoce, así que el filtro se descartaba en silencio. Ahora ambos envían los campos que Atlassian documenta. La API no puede filtrar por la cuenta con la que se ejecuta una regla, solo por su propietario, así que --author es un alias obsoleto de --owner.
  • ajat rule … selecciona por --owner (account ID, o el nombre o el correo del propietario de una exportación enriquecida) y --actor (la cuenta con la que se ejecuta una regla). --author siempre coincidía con la cuenta de ejecución, cosa que su nombre no decía; sigue funcionando como alias obsoleto de --actor, así que un comando masivo en un script selecciona exactamente las reglas que seleccionaba antes.

Informes: caras, enlaces y tablas ordenables

Disponible desde v1.0.8.

  • Las personas tienen cara en todos los informes. ajat export descarga la foto de cada cuenta resuelta en el directorio de cuentas (unos 4 KB por cuenta; --avatars=false conserva las identidades y omite las fotos), y cada informe embebe cada foto una sola vez. El informe sigue siendo un único archivo que abre sin conexión y no descarga nada de Atlassian. --remote-avatars significa ahora «usar las imágenes alojadas en Jira en lugar de las embebidas». Ejecuta ajat export una vez para incorporar las fotos a una copia de seguridad existente. Consulta Fotos y uso sin conexión.
  • Cada regla abre en Jira. Abrir en Jira lleva a la página propia de la regla — bajo la configuración del proyecto para una regla de un solo proyecto, bajo la página global de automatización para el resto. La exportación registra el tipo y el estilo de cada proyecto en un nuevo .ajat_projects.json, que es lo que hace correcta la ruta para proyectos gestionados por la empresa, gestionados por el equipo, de negocio y de gestión de servicios. Los chips de proyecto muestran el icono del proyecto, la tabla Riesgo por proyecto del informe de riesgo enlaza cada proyecto, y una búsqueda JQL en una tarjeta de regla del inventario enlaza con esa búsqueda en Jira. Consulta Enlaces a Jira.
  • Todas las tablas de los informes se ordenan por sus columnas. Haz clic en una cabecera para ordenar y vuelve a hacer clic para invertir. Las columnas se ordenan por su valor real — «·» es cero, «3 d ago» por fecha, las barras por su número, las personas por nombre, la severidad de alta a baja — y ordenar conserva tu búsqueda. Las tablas anchas se desplazan dentro de su sección en un teléfono, y los lectores de pantalla anuncian cada tabla por su nombre.
  • Nombra tus propios servicios. Un archivo de tema puede asociar hosts a nombres, como factorialhr.com: Factorial HR, y los informes de inventario, riesgo y workflow muestran el nombre allí donde una regla llama a ese host o a uno de sus subdominios. Las integraciones que no son servicios conocidos se muestran ahora por su dominio. Consulta Nombrar tus propios servicios.
  • Las mismas cosas se ven igual en todas partes. Las reglas deshabilitadas llevan la insignia Deshabilitada en todas las listas, cada persona se dibuja con un único componente, «Alta frecuencia» es ahora «Cada hora o más» y las porciones de la gráfica de cadencia dicen lo que contienen, el inventario de etiquetas lista proyectos en lugar de claves de scope, los recuentos por encima de 999 llevan separadores de miles, el panel de Analytics empieza plegado fuera del inventario, e imprimir abre primero todas las secciones plegadas para que se imprima el informe entero.

Licencias: renovaciones y --force

Disponible desde v1.0.8.

  • Reactivar con una clave renovada funciona. Una suscripción renovada conserva su clave, pero ajat license activate --license-key <la misma clave> la rechazaba con «license has expired» una vez vista la caducidad en local, igual que todos los comandos con licencia. El comando consulta ahora la tienda y refresca la licencia instalada cuando la tienda informa de que la clave vuelve a estar activa, y lo dice cuando la tienda sigue informando de que ha caducado o no se puede contactar.
  • --force hace lo que prometía su ayuda con una clave. ajat license activate --license-key <clave-nueva> --force sustituye una licencia activa, liberando antes su puesto; antes, el flag solo se aplicaba a archivos de licencia. Consulta Volver a ejecutar activate.

Correcciones en v1.0.8

  • ajat import ya no trata los sidecars de identidad como reglas. El importador leía los ficheros *.external-info.json como reglas, así que una exportación de 654 reglas se leía como 1308 y cada sidecar se planificaba como una actualización de su propia regla. Ahora solo se importan los ficheros de reglas. Si ejecutaste ajat import sobre una exportación enriquecida con una versión anterior, revisa su plan o su fichero de estado en busca de actualizaciones fallidas.
  • Las programaciones usan el método que Jira ejecuta realmente, y las programaciones cron se miden, no se adivinan. Las reglas con el método básico (RRULE) que aún llevaban un cron obsoleto se describían y puntuaban a partir del cron; las programaciones de cada dos horas como 0 0 6-16/2 ? * MON-FRI y las listas de minutos como 0,30 se leen ahora con el periodo que realmente tienen.
  • La tarjeta «Scheduling load» contaba las reglas equivocadas, de modo que una regla que se dispara cada 8 horas contaba como «cada hora o más»; ahora usa la misma prueba que la tarjeta del inventario.
  • Los nombres de regla largos en idiomas distintos del inglés ya no imprimen caracteres rotos en la tabla de búsqueda.
  • Las tarjetas de insight destacadas eran ilegibles, la impresión dejaba fuera las secciones plegadas, los encabezados largos de riesgo comprimían su título, y las listas de reglas de los informes de colisiones, consistencia y riesgo no estaban alineadas. Todo corregido.

Búsqueda y filtros que funcionan como buscas tú

Disponible desde v1.0.7.

  • La búsqueda encuentra las palabras en cualquier orden. kpi edit encuentra Edit and Check — Monitor and Modify KPI Value, y cada palabra se resalta.
  • Los chips de filtro están agrupados en Estado, Scope y Rasgos, y una regla tiene que coincidir con un chip de cada grupo que uses. Elegir Deshabilitada y Programada muestra las reglas que son ambas cosas, no cualquiera de ellas. El informe de workflow también tiene chips y contador de resultados, y el contador cuenta aquello de lo que trata el informe: reglas, grupos de duplicados o hallazgos.
  • «Nada coincide» se dice explícitamente, con un botón para limpiar la búsqueda y todos los filtros, y las listas largas están completas en el archivo con la cola detrás de un botón Mostrar todo que se abre cuando una búsqueda coincide dentro.
  • Los informes abren sin conexión. Las personas se representaban con iniciales en lugar de enlaces <img> a la CDN de Atlassian — unos 1400 en un inventario de 654 reglas — que v1.0.8 sustituyó por fotos embebidas desde la exportación. Las direcciones de correo son enlaces mailto: con botón de copiar, las descripciones de reglas conservan sus saltos de línea y ya no hay destello de tema.
  • Las programaciones que se ejecutan cada pocas horas ya no se llaman de alta frecuencia: el intervalo forma parte de la aritmética en los chips, los recuentos, la puntuación de riesgo y la gráfica de cadencia. Se entiende el formato cron Quartz propio de Jira (0 0 9 ? * MON-FRI), así que una programación se lee «cada día laborable a las 09:00» en lugar de un volcado de campos.
  • Una licencia CI/CD se identifica como licencia de ajat, la guía de licencias nombra los planes que los clientes pueden comprar (Professional y Small Team) y la documentación ya no promete una descarga para Windows.

Saber cuándo hay algo que instalar

ajat doctor informa de la versión más reciente disponible para ti, junto al comando que la instala; la comprobación nunca hace fallar el diagnóstico y responde “no se pudo comprobar” si no hay conexión. Tras un comando normal, ajat también consulta el servicio de actualizaciones como mucho una vez al día, espera dos segundos como máximo e imprime una sola línea en stderr cuando existe una versión más reciente. El aviso no molesta: nunca en CI, nunca bajo sudo, nunca cuando stderr no es un terminal y nunca tras un comando que no necesita licencia. Desactívalo con ajat config set update.notice false.

ajat update sigue funcionando cuando se alcanza el límite diario de descargas de la tienda — cada archivo puede descargarse diez veces al día y, a partir de ahí, ajat obtiene la misma versión del almacenamiento propio de Climakers.

La activación es más estable en Linux

Los archivos de licencia se cifran contra un identificador de máquina y, en Linux, ese identificador ahora sobrevive a las actualizaciones de kernel y microcódigo y a los redimensionamientos de máquinas virtuales. Las licencias activadas antes de esta versión siguen funcionando: una licencia de suscripción se traslada al nuevo identificador la primera vez que se abre y una licencia offline firmada conserva el identificador con el que se emitió. No hace falta reactivar nada y macOS no se ve afectado.

Actualizaciones desde la propia herramienta

ajat update instala la versión más reciente que incluye tu licencia: la descarga de Climakers, verifica su suma SHA-256 y reemplaza el binario en ejecución. En macOS instala el paquete firmado y notarizado y se ejecuta como sudo ajat update; en Linux reemplaza el binario en su sitio y nunca usa sudo. --check informa sin cambiar nada. Las licencias locales (sin conexión) firmadas también se actualizan y, cuando termina una suscripción, las versiones publicadas antes de esa fecha siguen siendo instalables. Disponible desde v1.0.4. Consulta Actualizar ajat.

Informes

  • report workflow representa cada regla como un runbook con diagrama de flujo: la forma del inventario de automatizaciones convertida en algo que una persona puede leer y entregar a auditoría. Consulta Generar informes HTML.
  • Diagramas de flujo SVG por regla en el inventario, mostrados por defecto al desplegar una regla.
  • Detección de duplicados por comportamiento en el informe de colisiones. Dos reglas escritas de forma distinta pero que hacen lo mismo ahora se detectan, no solo los solapamientos literales de nombre o disparador.
  • El informe de riesgo explica su propia puntuación y enlaza cada regla de la lista de categorías con la lista de reglas de automatización de Jira.
  • Las personas y los proyectos enlazan directamente a Jira, así que un hallazgo de un informe está a un clic de la cuenta o del proyecto que describe. Las reglas enlazaban con la lista de reglas de automatización del sitio hasta v1.0.8, que abre cada regla en su propia página.
  • Chips de identidad con estado en las listas de miembros, y los destinos de notificación — correos y canales — mostrados directamente en el informe.
  • El panel de Analytics se explica solo y aparece en los informes de inventario, colisiones, consistencia y riesgo. El informe de workflow es un manual regla a regla y, deliberadamente, no incluye gráficas del conjunto.

Los fallos de la API te dicen qué hacer

Un token rechazado se mostraba antes como un simple estado HTTP. Los errores de las APIs de Jira y de licencias llevan ahora una pista:

Error: resolve cloud id: GET https://acme.atlassian.net/rest/api/3/myself returned 401: {"message":"Unauthorized"} Hint: Authentication failed — verify your jira.username and jira.api_token

Las pistas cubren autenticación (401), permisos (403), un dominio o recurso equivocado (404), límite de peticiones (429) y caídas de Jira (5xx). Un límite de peticiones agotado sugiere bajar --workers en lugar de simplemente reintentar, y un sitio que no es Cloud se identifica de forma explícita.

Correcciones

  • license activate --license-key <archivo> indica qué flag admite un archivo. Pasar un archivo de licencia a --license-key respondía “invalid license key format: expected UUID v4”; ahora explica que un archivo de licencia se activa con --license-file e imprime el comando exacto.
  • ajat update detecta una versión nueva de inmediato. Justo después de una publicación, update podía informar de la versión anterior durante varios minutos porque el servicio de actualizaciones respondía desde una copia en caché. La instalación, y update --check --force, consultan ahora el servicio directamente.

jira.automation_base_url se ignoraba en silencio en todos los comandos salvo doctor. Si trabajas contra un host de automatización privado, doctor informaba de una instalación correcta mientras export, import, invoke, search y todos los subcomandos de rule seguían hablando con api.atlassian.com. El cliente de Jira se construye ahora en un único sitio, así que todos los comandos leen la misma configuración.

  • --debug no producía salida alguna. Fijaba el nivel de log pero dejaba el destino en su valor por defecto, que lo descarta todo. Ahora escribe en stderr salvo que --log-file indique otra cosa, y retira la barra de progreso para que no se pisen en el mismo flujo.
  • Un log.level, log.format o log.file inválido bloqueaba todos los comandos, incluidos los comandos config que lo reparan, así que ajat config set log.level info no podía arreglar un log.level incorrecto. Ahora recurren a unos ajustes que funcionan durante esa ejecución e indican qué clave cambiar.
  • Una opción global colocada antes de un comando exento hacía que este validara la configuración. ajat --config-file broken.yaml config where inspeccionaba --config-file en lugar de config y se negaba a ejecutarse, mientras que el mismo comando con la opción movida sí funcionaba, lo que dejaba inservibles los comandos config justo para inspeccionar la configuración rota que querías mirar.
  • La barra de progreso podía dejar una goroutine renderizando tras detenerse, de modo que la barra del siguiente comando corrompía el estado de la anterior. Detenerla ahora espera a que el renderizador termine, lo que además elimina un coste fijo de 50 ms en todos los comandos que muestran progreso.

Consulta también

Last updated on