Automatice el sellado de tiempo de commits de Git con una GitHub App
Si alguna vez ha intentado demostrar cuándo ocurrió un commit de Git, conoce la rutina manual: crear un recibo criptográfico para un hash de commit, almacenar el archivo .ots en un lugar duradero, mapear ese recibo de vuelta al commit correcto y repetir el proceso para cada rama y repositorio que importe. Si omite un commit, tendrá un vacío en su registro de estado de la técnica.
Timestamp GIT reemplaza esa rutina con una GitHub App que sella el tiempo de los commits de Git automáticamente. Este artículo trata sobre la ruta de automatización, no sobre los conceptos criptográficos subyacentes. Para obtener antecedentes sobre la prueba de existencia y por qué es importante, consulte Prueba de existencia para código: qué es y por qué es importante.
La tarea manual de sellado de tiempo que puede eliminar
El sellado de tiempo manual generalmente falla por razones aburridas, no por razones de seguridad.
- Olvida sellar una rama de funcionalidad importante.
- Los recibos terminan dispersos en portátiles, artefactos de CI y carpetas aleatorias.
- No hay un mapeo claro entre los archivos de recibo y los commits específicos.
- Diferentes compañeros de equipo usan procesos diferentes, o ningún proceso en absoluto.
- Cuando realmente ocurre una disputa, descubre que el recibo nunca se creó.
La forma difícil es trabajar con OpenTimestamps directamente: instalar herramientas, sellar hashes de commit a mano y almacenar los archivos de recibo usted mismo. Ese enfoque funciona técnicamente, pero es una tarea que compite con el trabajo de desarrollo real.
Timestamp GIT le quita esa tarea de encima. Es un SaaS gestionado y una GitHub App que automatiza completamente y oculta el protocolo OpenTimestamps. Una vez instalado, vigila sus repositorios, recopila los hashes de commit y los ancla en la cadena de bloques de Bitcoin cada noche. Sin herramientas de CLI, sin gestión manual de recibos, sin tener que recordar nada.
Configuración única: conecte su repositorio a la GitHub App
El modelo de configuración es deliberadamente aburrido: instale una vez, conecte los repositorios y continúe.
Modo estándar con la GitHub App:
- Instale la GitHub App Timestamp GIT desde el GitHub Marketplace.
- Conceda acceso a los repositorios que desea monitorear.
- Elija dónde deben almacenarse las pruebas: una rama dedicada en el mismo repositorio o un repositorio espejo separado.
- Listo.
Después de la instalación, la GitHub App comienza automáticamente a monitorear nuevos commits a través de webhooks. No hay cambios de código, ni archivos de configuración locales, ni nada que instalar en las máquinas de los desarrolladores.
Permisos en el modo estándar:
- La app necesita acceso de solo lectura al repositorio de origen para poder leer el hash del commit HEAD.
- Necesita acceso de lectura y escritura al repositorio o rama de destino donde se almacenarán los archivos de prueba.
- Nunca lee ni almacena su código fuente real.
Modo Enterprise ZK para entornos de conocimiento cero:
Si su política de seguridad dice que su código fuente nunca debe salir de su infraestructura, puede usar el modo Enterprise ZK. Una GitHub Action de 12 líneas se ejecuta en su lado y envía solo el hash del commit a la API de Timestamp GIT. En este modo, Timestamp GIT no necesita acceso de lectura al repositorio de origen en absoluto, solo acceso de lectura y escritura al repositorio de destino donde se almacenan las pruebas.
Esta distinción es importante para los equipos de cumplimiento: el modo estándar lee los hashes de commit desde GitHub, mientras que el modo Enterprise ZK envía solo hashes desde su GitHub Action.
El pipeline automatizado: del commit al anclaje en Bitcoin
Después de la configuración, el pipeline se ejecuta sin intervención manual.
Cada noche, un proceso trabajador recopila los hashes de commit pendientes del día y los procesa en un lote:
- Los hashes de commit son detectados por la GitHub App o enviados por su Action de Enterprise ZK.
- Los hashes permanecen en una cola en memoria hasta la ejecución nocturna.
- Un trabajador cron de medianoche agrupa los hashes pendientes por repositorio.
- El trabajador crea archivos de manifiesto para cada repositorio.
- Construye un árbol de Merkle a partir del lote diario.
- Crea pruebas de OpenTimestamps utilizando calendarios OTS públicos.
- La raíz de Merkle se ancla en un bloque de Bitcoin.
Los archivos de manifiesto y los recibos .ots se envían de vuelta a su rama de sellos de tiempo dedicada o al repositorio espejo.
Una nota importante sobre el tiempo: la confirmación de Bitcoin toma varias horas, normalmente alrededor de tres horas. Debido a que el lote se ejecuta a medianoche y el anclaje se completa más tarde, las pruebas generalmente aparecen al día siguiente. Ese retraso no es una falla, es la red de Bitcoin haciendo el trabajo que hace que el sello de tiempo sea inmutable.
Puede verificar el último estado anclado con la API REST:
# Información del último bloque de Bitcoin anclado
curl -s https://timestampgit.dev/api/statusLast/acme/webapp
# Recuento total de commits comprometidos/sellados
curl -s https://timestampgit.dev/api/statusCount/acme/webapp
# Resumen combinado utilizado por las insignias de Shields.io
curl -s https://timestampgit.dev/api/statusSummary/acme/webapp
Reemplace acme/webapp con su usuario u organización de GitHub y el nombre del repositorio.
Para un README público, puede incrustar una insignia de verificación. La página de Repositorio Conectado proporciona el fragmento de Markdown después de la instalación. Una insignia típica se ve así:
[](https://timestampgit.dev/status/acme/webapp)
Para repositorios privados, las URL de estado están protegidas con un HMAC cifrado. Solo los usuarios autorizados pueden ver el estado de esos repositorios, y el HMAC es específico de la instancia del servidor.
Monitoreo y manejo de fallas: mantenga sus pruebas saludables
La automatización no significa ignorar el sistema. Significa monitorear el resultado en lugar de realizar la tarea a mano.
La página de estado del repositorio es su panel principal de salud. Muestra:
- Longevidad de la prueba
- Fecha de anclaje más temprana
- Regularidad diaria
- Datos de bloques y transacciones de Bitcoin
- Un mapa de calor de calendario de días sellados
- CSV de auditoría descargable
- Certificado PDF por fecha sellada
Para monitoreo programático, los endpoints de la API pública cubren los casos comunes:
# Verificar el bloque anclado más reciente
curl -s https://timestampgit.dev/api/statusLast/acme/webapp
# Contar cuántos commits han sido sellados
curl -s https://timestampgit.dev/api/statusCount/acme/webapp
# Obtener un resumen combinado para scripts o Shields.io
curl -s https://timestampgit.dev/api/statusSummary/acme/webapp
Estos endpoints pueden conectarse a su monitor de disponibilidad existente, panel interno o verificación de CI. Por ejemplo, un script programado puede llamar a statusLast una vez al día y alertar si falta la fecha de anclaje esperada.
Los escenarios de falla comunes incluyen:
- Acceso al repositorio revocado en GitHub.
- GitHub App desinstalada.
- Problemas de red entre GitHub y el servicio Timestamp GIT.
Estas fallas aparecen en la página de estado del repositorio en lugar de fallar silenciosamente. Debido a que los hashes de commit se agrupan por fecha, una ejecución nocturna perdida puede recoger los hashes pendientes en el siguiente lote exitoso.
Para cumplimiento y mantenimiento de registros, descargue el CSV de auditoría y el certificado PDF periódicamente. Guárdelos en su archivo legal junto con otra documentación de propiedad intelectual.
Mejores prácticas para el sellado de tiempo automatizado de Git
Una vez que la automatización está en su lugar, algunos hábitos harán que su registro de estado de la técnica sea más sólido.
Selle todos los repositorios, incluidos los privados. Muchos equipos solo sellan proyectos de cara al público. Pero los trolls de patentes y las disputas laborales a menudo apuntan a sistemas internos y secretos comerciales. Los repositorios privados importan tanto, si no más.
Mantenga los archivos de prueba fuera de la rama principal de código fuente. Use una rama de sellos de tiempo dedicada o un repositorio espejo separado. Esto mantiene su rama main limpia mientras brinda a los auditores un solo lugar para encontrar los recibos .ots y los archivos de manifiesto.
Inserte la insignia de verificación en su README. Una insignia visible le dice a los posibles infractores que su historial de commits está anclado en Bitcoin. No es solo decoración; es un elemento disuasorio de bajo costo.
Use el modo Enterprise ZK donde el código fuente debe permanecer interno. Si su equipo de cumplimiento prohíbe el acceso de lectura de terceros a los repositorios de origen, el enfoque de GitHub Action envía solo los hashes de commit a la API de Timestamp GIT.
Para entornos aislados o autoalojados, use la imagen de Docker. Timestamp GIT está disponible como una imagen de Docker para control total:
services:
timestampgit:
image: rue1401/timestampgit:prod
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
valkey:
image: valkey/valkey:8
restart: unless-stopped
Inícielo con:
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
La aplicación estará disponible en http://localhost:8080. En el primer lanzamiento, un asistente de configuración lo guía para conectar su GitHub App y configurar la instancia. Una licencia de demostración por tiempo limitado está disponible en la página de Licencia de Docker.
Descargue informes de auditoría periódicamente. No espere a que comience una disputa legal para recopilar evidencia. Una exportación trimestral o mensual toma unos minutos y le brinda un archivo sin conexión.
Preguntas frecuentes
¿Cómo sella automáticamente el tiempo de mis commits la GitHub App?
Una vez instalada, la GitHub App Timestamp GIT monitorea su repositorio en busca de nuevos commits a través de webhooks. Cada noche, recopila todos los hashes de commit del día, crea un árbol de Merkle y ancla la raíz en la cadena de bloques de Bitcoin utilizando el protocolo OpenTimestamps. Las pruebas se envían de vuelta a su repositorio automáticamente. No se requieren pasos manuales.
¿La GitHub App tiene acceso a mi código fuente?
En el modo estándar, la app requiere acceso de solo lectura al repositorio de origen para leer los hashes de commit, pero nunca lee ni almacena su código fuente real. Para máxima privacidad, el modo Enterprise ZK usa una GitHub Action que envía solo el hash del commit a la API de Timestamp GIT, por lo que su código fuente nunca sale de su entorno.
¿Puedo usar Timestamp GIT con repositorios privados?
Sí. Los planes Pro y Enterprise admiten repositorios privados. La app puede almacenar pruebas en un repositorio espejo o en una rama dedicada, y el acceso a los endpoints de estado está protegido con HMAC para repositorios privados.
¿Cómo puedo verificar que mi commit fue sellado?
Puede verificar a través del panel de estado público, los endpoints de la API como /api/statusLast, o descargando el recibo .ots y ejecutando herramientas estándar de verificación de OpenTimestamps contra la cadena de bloques de Bitcoin. La verificación es independiente y no depende de los servidores de Timestamp GIT.
Conclusión: configúrelo y olvídese
El sellado de tiempo automatizado de Git cambia la pregunta de “¿Recordé sellar este commit?” a “¿Está apareciendo el anclaje nocturno en mi panel?”
Timestamp GIT maneja todo el protocolo OpenTimestamps entre bastidores. Instala la GitHub App una vez, conecta sus repositorios y deja que el pipeline nocturno ancle los hashes de commit en Bitcoin. El resultado es evidencia inmutable y lista para los tribunales de estado de la técnica sin un nuevo hábito manual.
Comience con el plan gratuito para repositorios públicos, pase a Pro Agency para repositorios privados, o use Enterprise ZK cuando el código fuente deba permanecer dentro de su infraestructura. Los autoalojadores pueden implementar la imagen de Docker para control total.
Instale la GitHub App hoy en Timestamp GIT y haga que el sellado de tiempo sea algo que sus repositorios hagan automáticamente.
Publicaciones relacionadas
- Cómo demostrar que su código existió en una fecha específica (sin revelarlo)
- Proteja su startup de los trolls de patentes con el sellado de tiempo de Git
- Cómo los talleres de desarrollo pueden demostrar la entrega de trabajo con Timestamp GIT