Inicio rápido
Seis pasos y un fichero de configuración. La única decisión que merece pensarse antes de empezar es qué almacén guarda la historia, y se puede aplazar imprimiendo primero los puntos por la terminal.
De cero a la primera pasada
Sección titulada «De cero a la primera pasada»-
Instala el binario.
Ventana de terminal go install github.com/jmrplens/ghchronicle/cmd/ghchronicle@latestCoge el archivo de tu plataforma en la página de releases y pon
ghchronicleen elPATH.Ventana de terminal docker pull ghcr.io/jmrplens/ghchronicle -
Crea un token en
https://github.com/settings/tokensy expórtalo.Ventana de terminal export GITHUB_TOKEN=github_pat_...Un token clásico con
repo,read:packages,read:user,read:org,security_events,read:public_keyyread:gpg_keyve todo lo que esto recoge. La página del token explica qué permiso compra qué familia, y por qué elGITHUB_TOKENautomático de una Action no basta. -
Escribe la configuración. Dos decisiones, y este es el fichero entero:
config.yaml github:token: ${GITHUB_TOKEN}targets:user: tu-loginsinks:stdout: true # cámbialo por influxdb cuando tengas dónde guardarloCada
${VAR}se lee del entorno al arrancar, así que el fichero no contiene secretos y se puede versionar. Todo lo demás tiene un valor por omisión.La versión documentada, la que comenta todas las opciones que hay, vive en el repositorio y no en la instalación, así que cógela de ahí cuando quieras leer el resto:
Ventana de terminal curl -O https://raw.githubusercontent.com/jmrplens/ghchronicle/main/config.example.yaml -
Mira qué se recogería, antes de gastar cuota en ello.
Ventana de terminal ghchronicle -config config.yaml -listEso imprime los repositorios en alcance. Los forks y los archivados quedan fuera por omisión. Si falta algo que esperabas, esta es la orden que te lo dice.
-
Ejecuta una pasada.
Ventana de terminal ghchronicle -config config.yaml -onceCon
sinks.stdout: truelos puntos salen por la terminal como line protocol en vez de ir a una base de datos, que es la forma más barata de ver la forma de lo que estás a punto de guardar. -
Déjalo corriendo.
Ventana de terminal ghchronicle -config config.yamlCada familia corre entonces con su propia cadencia: las ejecuciones de workflows cada quince minutos, el calendario de contribuciones cada doce horas.
Qué hace la primera pasada que las siguientes no hacen
Sección titulada «Qué hace la primera pasada que las siguientes no hacen»Tres cosas ocurren una sola vez, y son la razón de que la primera pasada sea la cara.
- Se recorre entera la lista de estrellas, página a página, para que cada estrella lleve la fecha en que se dio. Después, las cien más nuevas de cada repositorio viajan en una consulta GraphQL por cada diez.
- Un mes de ejecuciones de workflows, para que una instalación nueva no dibuje una historia de CI que empieza hace quince minutos. Después, el doble de la cadencia, y nunca menos de dos horas.
- El calendario de contribuciones de cada año, si
every.historyestá puesto, hasta el día en que se creó la cuenta. Después, solo el año en curso, reescrito a su cadencia.
Espera unos pocos miles de puntos de una primera pasada sobre veinte repositorios, y unos pocos cientos de cada una de las siguientes.
Nada de eso es la historia. La primera pasada es un incremento más ancho, y un
dashboard a noventa días o a dos años empieza entonces el día en que instalaste
el colector: medido tras un día de pasadas, alrededor de una quinta parte de
las pull requests que declaran los repositorios, commits solo de los últimos
treinta días y jobs de una décima parte de las ejecuciones de workflows. Lanza
ghchronicle -config config.yaml -backfill una vez, antes del servicio o justo
después; la página del relleno dice hasta
dónde llega y lo que cuesta.
Por dónde seguir
Sección titulada «Por dónde seguir»- Formas de instalar es lo que convierte la orden de arriba en algo que sigue corriendo: systemd, Docker o una Action programada.
- La fecha del punto es la idea de diseño de la que se deriva todo lo demás.
- Elegir almacén decide qué preguntas podrás hacer después.
- Coste de una pasada es el precio medido en llamadas a la API.