GitHub AppでGitコミットのタイムスタンプ処理を自動化する
Gitコミットがいつ行われたのかを証明しようとしたことがある人なら、手作業のルーティンを知っているはずです。コミットハッシュの暗号学的レシートを作成し、.otsファイルを耐久性のある場所に保存し、そのレシートを正しいコミットに対応付け、重要なすべてのブランチとリポジトリに対してこのプロセスを繰り返す。1つでもコミットを逃せば、先行技術の記録にギャップが生まれます。
Timestamp GITは、このルーティンを、Gitコミットに自動でタイムスタンプを付与するGitHub Appに置き換えます。この記事では自動化の経路に焦点を当て、暗号学的な概念の背景には踏み込みません。存在証明とその重要性に関する背景知識については、コードの存在証明:その概要と重要性を参照してください。
手作業によるタイムスタンプ処理——なくせる面倒な作業
手作業によるタイムスタンプ処理が失敗するのは、通常、セキュリティ上の理由ではなく、退屈な理由からです。
- 重要なフィーチャーブランチへのスタンプを忘れる。
- レシートがノートPC、CIアーティファクト、適当なフォルダに散在する。
- レシートファイルと特定のコミットの対応関係が明確でない。
- チームメンバーごとにプロセスが異なるか、そもそもプロセスがない。
- 実際に紛争が起きたとき、レシートが一度も作成されていなかったことが判明する。
困難な方法は、OpenTimestampsを直接扱うことです。ツールをインストールし、コミットハッシュに手動でスタンプし、レシートファイルを自分で保存する。このアプローチは技術的には機能しますが、実際の開発作業と競合する面倒な作業です。
Timestamp GITは、その面倒な作業を肩代わりします。OpenTimestampsプロトコルを完全に自動化し、隠蔽するマネージドSaaS兼GitHub Appです。一度インストールすれば、リポジトリを監視し、コミットハッシュを収集し、毎晩Bitcoinブロックチェーンにアンカーします。CLIツールも、手動のレシート管理も、記憶する必要もありません。
一度きりのセットアップ:リポジトリをGitHub Appに接続する
セットアップモデルは意図的に退屈なものになっています。一度インストールし、リポジトリを接続し、それで終わりです。
GitHub Appを使用する標準モード:
- GitHub MarketplaceからTimestamp GIT GitHub Appをインストールします。
- 監視したいリポジトリへのアクセスを許可します。
- 証明の保存場所を選択します。同じリポジトリ内の専用ブランチか、別のシャドウリポジトリです。
- 完了です。
インストール後、GitHub AppはWebhookを通じて新しいコミットの監視を自動的に開始します。コードの変更、ローカル設定ファイル、開発者マシンへのインストールは一切不要です。
標準モードでの権限:
- ソースリポジトリへの読み取り専用アクセスが必要です。HEADコミットハッシュを読み取るためです。
- 証明ファイルを保存するターゲットリポジトリまたはブランチへの読み書きアクセスが必要です。
- 実際のソースコードを読み取ったり保存したりすることは決してありません。
ゼロ知識環境向けのEnterprise ZKモード:
ソースコードをインフラストラクチャの外に出してはならないというセキュリティポリシーがある場合は、Enterprise ZKモードを使用できます。12行のGitHub Actionがあなたの側で実行され、コミットハッシュのみをTimestamp GIT APIにプッシュします。このモードでは、Timestamp GITはソースリポジトリへの読み取りアクセスを一切必要としません。必要なのは、証明を保存するターゲットリポジトリへの読み書きアクセスだけです。
この違いはコンプライアンスチームにとって重要です。標準モードはGitHubからコミットハッシュを読み取るのに対し、Enterprise ZKモードはGitHub Actionからハッシュのみを送信します。
自動化パイプライン:コミットからBitcoinアンカーまで
セットアップ後、パイプラインは手動介入なしで実行されます。
毎晩、ワーカープロセスがその日の保留中のコミットハッシュを収集し、バッチ処理を実行します。
- コミットハッシュはGitHub Appによって検出されるか、Enterprise ZK Actionによってプッシュされます。
- ハッシュは夜間実行までインメモリキューに保持されます。
- 深夜のcronワーカーが保留中のハッシュをリポジトリごとにグループ化します。
- ワーカーが各リポジトリのマニフェストファイルを作成します。
- 日次バッチからMerkleツリーを構築します。
- 公開OTSカレンダーを使用してOpenTimestamps証明を作成します。
- MerkleルートがBitcoinブロックにアンカーされます。
その後、マニフェストと.otsレシートファイルが専用のタイムスタンプブランチまたはシャドウリポジトリにプッシュバックされます。
タイミングに関する重要な注意点が1つあります。Bitcoinの承認には数時間、通常は約3時間かかります。バッチは深夜に実行され、アンカーはその後完了するため、証明は通常翌日に表示されます。この遅延は失敗ではなく、タイムスタンプを不変にする作業をBitcoinネットワークが行っているのです。
最後にアンカーされたステータスはREST APIで確認できます。
# 最後にアンカーされたBitcoinブロック情報
curl -s https://timestampgit.dev/api/statusLast/acme/webapp
# コミット済み/スタンプ済みの合計コミット数
curl -s https://timestampgit.dev/api/statusCount/acme/webapp
# Shields.ioバッジで使用される複合サマリー
curl -s https://timestampgit.dev/api/statusSummary/acme/webapp
acme/webappは、あなたのGitHubユーザー名または組織名とリポジトリ名に置き換えてください。
公開READMEには検証バッジを埋め込むことができます。Repository Connectedページでは、インストール後にMarkdownスニペットが提供されます。典型的なバッジは次のようになります。
[](https://timestampgit.dev/status/acme/webapp)
プライベートリポジトリの場合、ステータスURLは暗号化されたHMACで保護されます。これらのリポジトリのステータスを閲覧できるのは許可されたユーザーのみで、HMACはサーバーインスタンスに固有です。
監視と障害処理:証明の健全性を維持する
自動化とは、システムを無視することではありません。手作業でタスクを実行する代わりに、結果を監視するということです。
リポジトリステータスページは、主要なヘルスダッシュボードです。表示される内容:
- 証明の寿命
- 最古のアンカー日付
- 日次の規則性
- Bitcoinブロックとトランザクションデータ
- スタンプ済み日数のカレンダーヒートマップ
- ダウンロード可能な監査CSV
- タイムスタンプ付き日付ごとのPDF証明書
プログラムによる監視には、公開APIエンドポイントが一般的なケースをカバーします。
# 最新のアンカーブロックを確認
curl -s https://timestampgit.dev/api/statusLast/acme/webapp
# スタンプ済みコミット数をカウント
curl -s https://timestampgit.dev/api/statusCount/acme/webapp
# スクリプトやShields.io用の複合サマリーを取得
curl -s https://timestampgit.dev/api/statusSummary/acme/webapp
これらのエンドポイントは、既存のアップタイムモニター、社内ダッシュボード、CIチェックに組み込むことができます。たとえば、スケジュールされたスクリプトが1日1回statusLastを呼び出し、期待されるアンカー日付が欠けている場合にアラートを出すことができます。
一般的な障害シナリオは次のとおりです。
- GitHubでリポジトリアクセスが取り消された。
- GitHub Appがアンインストールされた。
- GitHubとTimestamp GITサービス間のネットワーク問題。
これらの障害は、黙って失敗するのではなく、リポジトリステータスページに表示されます。コミットハッシュは日付ごとにバッチ処理されるため、夜間実行を逃しても、次の成功したバッチで保留中のハッシュを拾うことができます。
コンプライアンスと記録保持のため、監査CSVとPDF証明書を定期的にダウンロードしてください。他のIP文書とともに法的アーカイブに保管しましょう。
自動Gitタイムスタンプ処理のベストプラクティス
自動化が導入されたら、いくつかの習慣で先行技術の記録をより強固にできます。
プライベートリポジトリを含むすべてのリポジトリにタイムスタンプを付与する。 多くのチームは公開プロジェクトにのみタイムスタンプを付けています。しかし、パテントトロールや雇用紛争は、内部システムや営業秘密を標的にすることがよくあります。プライベートリポジトリも同様に、あるいはそれ以上に重要です。
証明ファイルをメインソースブランチの外に置く。 専用のタイムスタンプブランチまたは別のシャドウリポジトリを使用してください。これによりmainブランチをクリーンに保ちながら、監査人が.otsレシートとマニフェストファイルを一箇所で見つけられるようになります。
READMEに検証バッジを埋め込む。 目に見えるバッジは、潜在的な侵害者に対して、あなたのコミット履歴がBitcoinにアンカーされていることを伝えます。単なる装飾ではなく、低コストの抑止力です。
ソースコードを内部に留める必要がある場合はEnterprise ZKモードを使用する。 コンプライアンスチームがソースリポジトリへの第三者読み取りアクセスを禁止している場合、GitHub ActionアプローチはコミットハッシュのみをTimestamp GIT APIに送信します。
エアギャップ環境やセルフホスト環境では、Dockerイメージを使用する。 Timestamp GITは完全な制御のためのDockerイメージとして利用可能です。
services:
timestampgit:
image: rue1401/timestampgit:prod
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
valkey:
image: valkey/valkey:8
restart: unless-stopped
起動方法:
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
アプリケーションはhttp://localhost:8080で利用可能になります。初回起動時、セットアップウィザードがGitHub Appの接続とインスタンスの設定を案内します。期間限定のデモライセンスはDocker Licenseページから入手できます。
監査レポートを定期的にダウンロードする。 法的紛争が始まってから証拠収集を始めないでください。四半期ごとまたは月次のエクスポートは数分で済み、オフラインアーカイブを提供します。
FAQ
GitHub Appはどのようにしてコミットに自動でタイムスタンプを付与するのですか?
インストール後、Timestamp GIT GitHub AppはWebhookを通じてリポジトリの新しいコミットを監視します。毎晩、その日のすべてのコミットハッシュを収集し、Merkleツリーを作成し、OpenTimestampsプロトコルを使用してルートをBitcoinブロックチェーンにアンカーします。証明はその後、自動的にリポジトリにプッシュバックされます。手動の手順は一切不要です。
GitHub Appは私のソースコードにアクセスできますか?
標準モードでは、アプリはコミットハッシュを読み取るためにソースリポジトリへの読み取り専用アクセスを必要としますが、実際のソースコードを読み取ったり保存したりすることは決してありません。最大限のプライバシーを求める場合、Enterprise ZKモードはコミットハッシュのみをTimestamp GIT APIにプッシュするGitHub Actionを使用するため、ソースコードが環境の外に出ることはありません。
プライベートリポジトリでTimestamp GITを使用できますか?
はい。ProプランとEnterpriseプランはプライベートリポジトリをサポートしています。アプリはシャドウリポジトリまたは専用ブランチに証明を保存でき、プライベートリポジトリのステータスエンドポイントへのアクセスはHMACで保護されます。
コミットにタイムスタンプが付与されたことをどのように検証できますか?
公開ステータスダッシュボード、/api/statusLastなどのAPIエンドポイント、または.otsレシートをダウンロードして標準のOpenTimestamps検証ツールをBitcoinブロックチェーンに対して実行することで検証できます。検証は独立しており、Timestamp GITのサーバーに依存しません。
まとめ:設定したら忘れる
自動Gitタイムスタンプ処理は、「このコミットにタイムスタンプを付けるのを覚えていたか?」という問いを、「夜間アンカーがダッシュボードに表示されているか?」という問いに変えます。
Timestamp GITは、OpenTimestampsプロトコル全体を舞台裏で処理します。GitHub Appを一度インストールし、リポジトリを接続すれば、夜間パイプラインがコミットハッシュをBitcoinにアンカーします。その結果、新しい手動の習慣なしに、不変で法廷で使用可能な先行技術の証拠が得られます。
公開リポジトリには無料プランから始め、プライベートリポジトリにはPro Agencyに移行し、ソースコードをインフラストラクチャ内に留める必要がある場合はEnterprise ZKを使用してください。セルフホスターは完全な制御のためにDockerイメージをデプロイできます。
今すぐTimestamp GITでGitHub Appをインストールし、タイムスタンプ処理をリポジトリが自動的に行うものにしましょう。