GitHub AppでGitコミットに自動タイムスタンプを付与する
コミットがいつ存在したかを証明することが、コードそのものと同じくらい重要になり得ることはすでにご存じでしょう。パテントトロール、クライアントとの紛争、あるいは元協力者があなたのタイムラインに疑問を投げかけた場合、自己ホストのGitログだけでは通常不十分です。内部ログは編集可能であり、ホストされたリポジトリの履歴は先行技術の不変の証明にはなりません。
難しい方法は、基盤となるタイムスタンププロトコルを学び、コミットごとに手動コマンドを実行し、ハッシュをコピーし、確認を待ち、レシートを安全な場所に保存することです。このアプローチは、複数のリポジトリ、複数の開発者、あるいは忙しいリリース週間があるとすぐに破綻します。
Timestamp GITは、その手動の負担をすべて取り除きます。GitHub Appを一度インストールし、保護したいリポジトリを選択するだけで、新しいコミットはすべて毎晩のスケジュールで自動的にBitcoinブロックチェーンにタイムスタンプされます。実行するCLIツールも、手動で管理するレシートファイルも、学ぶべきOpenTimestampsコマンドもありません。
これが重要である根本的な理由について初めて学ぶ方は、暗号学的先行技術とは何か、そしてなぜソフトウェアにとって重要なのかをご覧ください。
この記事では、自動化されたパスについて説明します:一度きりのセットアップ、コミットからBitcoinアンカーまでの間に何が起こるか、証明の監視方法、そしてプロセスを長期にわたって健全に保つ方法です。
一度きりのセットアップ:GitHub Appのインストール
セットアップ全体はGitHub Appのインストールだけです。ローカルエージェントも、設定ファイルも、保守するスクリプトもありません。
手順は以下の通りです:
- GitHub MarketplaceからTimestamp GIT GitHub Appをインストールします。
- 監視したいリポジトリを選択します。
- パブリックリポジトリは無料プランでサポートされています。
- プライベートリポジトリにはProまたはEnterpriseプランが必要です。
- デプロイメントモードを選択します:
- スタンダードモード:GitHub AppがソースリポジトリからHEADコミットハッシュを読み取り、証明ファイルをターゲットリポジトリまたはブランチに書き込みます。
- エンタープライズZKモード:お客様の環境で実行されるGitHub Actionが、コミットハッシュのみをTimestamp GIT APIにプッシュします。Timestamp GITはソースリポジトリへの読み取りアクセスを一切持ちません。
- アクセスを確認します。
- スタンダードモードでは、ソースリポジトリへの読み取りアクセスと、ターゲットリポジトリへの読み書きアクセスが必要です。これはGitHubの権限システムの要件です:コミットハッシュのみの読み取り権限は存在しません。
- エンタープライズZKモードでは、ターゲットリポジトリへの読み書きアクセスのみが必要です。ソースリポジトリがTimestamp GITに読み取りアクセスを許可する必要は一切ありません。
- 完了です。この時点から、新しいコミットは自動的に取得されます。
インストール後、Timestamp GITダッシュボードから監視対象リポジトリを管理できます。コンパイルするものも、実行するデーモンも、設定するcronジョブもありません。
自動化パイプライン:コミットからBitcoinアンカーまで
GitHub Appがインストールされると、プロセスはあなたが意識することなく実行されます。
各コミット後に何が起こるか
監視対象リポジトリにコミットをプッシュすると、GitHub AppがWebhookを通じて新しいコミットを検出します。アプリはソースファイルを読み取りません。その瞬間のリポジトリ状態の暗号学的に安全なフィンガープリントであるコミットハッシュのみを抽出します。
そのコミットハッシュは、次の夜間バッチのためのキューに入れられます。
夜間アンカー実行
毎晩、ワーカープロセスが以下のパイプラインを実行します:
- 各監視対象リポジトリのキューに入れられたすべてのコミットハッシュが収集されます。
- その日のマニフェストファイルが作成されます。
- 収集されたハッシュからMerkleツリーが構築されます。
- MerkleルートがOpenTimestampsプロトコルを使用してBitcoinブロックチェーンにアンカーされます。
- 証明レシートが生成され、専用のタイムスタンプブランチまたはシャドウリポジトリにプッシュバックされます。
Bitcoinの確認自体には通常数時間かかります。つまり、証明ファイルは通常、コミット直後ではなく、夜間実行の数時間後にリポジトリに表示されます。
証明の配信
成果物は.otsレシートファイルと日次マニフェストです。これらのファイルは専用ブランチまたはシャドウリポジトリに書き込まれ、通常のソース履歴から分離されます。
通常のGitコマンドで結果を確認できます:
# 夜間アンカーが完了した後
git fetch origin
# 専用のタイムスタンプブランチまたはシャドウリポジトリを探す
git branch -r
# .otsレシートを含むブランチをチェックアウト
git checkout <timestamps-branch>
# 日次証明ファイルを一覧表示
ls -1 *.ots
正確なブランチ名はリポジトリの設定によって異なります。
エンタープライズZKモード
第三者にソースコードへのアクセスを一切許可できないチーム向けに、エンタープライズZKモードはデータフローを変更します。
GitHub Appがソースリポジトリのメタデータを読み取る代わりに、小さなGitHub Actionがお客様のインフラストラクチャ内で実行されます。アクションはコミットハッシュのみをTimestamp GIT APIにプッシュします。Timestamp GITはコードを受け取らず、ソースリポジトリを読み取らず、ハッシュ以外の何も見ることはありません。
夜間アンカーパイプラインはその時点から同じです:ハッシュキュー、マニフェスト、Merkleツリー、OpenTimestamps証明、Bitcoinアンカー、そしてターゲットリポジトリへの証明配信。
監視と障害処理
自動化は盲目的な信頼を意味しません。システムが機能していることを確認でき、何かがおかしい場合の明確な道筋を持つべきです。
リポジトリステータスダッシュボード
各監視対象リポジトリには、以下を表示するステータスページがあります:
- 最古のアンカー日を含む証明の存続期間。
- 日次アンカーの規則性。
- 各タイムスタンプに紐づくBitcoinブロックおよびトランザクションデータ。
- アンカーされた日のカレンダーヒートマップ。
- ダウンロード可能な監査CSVおよびPDF証明書レポート。
公開APIを通じてステータスを照会することもできます:
curl -s https://timestampgit.dev/api/statusLast/$GITHUB_USER/$GITHUB_REPO | jq .
プライベートリポジトリは、ステータスURLに暗号化されたHMACを付加します。許可されたユーザーのみがプライベートリポジトリのタイムスタンプを表示でき、HMACはサーバーインスタンスに固有です。
READMEバッジ
Timestamp GITは、README用の埋め込み可能なバッジを提供します。バッジは現在の検証状態を表示し、クリックした人は誰でもリンク先のページからタイムスタンプを検証できます。これはオープンソースプロジェクトや、プライベートコードを公開せずに作業の証明を公に示したいエージェンシーに有用です。
監査およびコンプライアンスエクスポート
コンプライアンスまたは法的レビューのために、以下をダウンロードできます:
- 完全な監査台帳(CSV形式)。
- 特定の日付のPDF証明書。
これらのファイルは、リポジトリ内の暗号学的レシートを補完するオフチェーン記録を提供します。
コミットが取りこぼされた場合は?
コミットが予定された夜間バッチで処理されなかった場合、キューに入れられたハッシュはタイムスタンプキューに残り、次の実行で取得されます。リポジトリステータスダッシュボードは、ギャップや不規則性を確認する最初の場所です。リポジトリが一貫して欠落日を示す場合は、影響を受ける範囲を法的請求に依存する前にサポートに連絡してください。
自己ホストDockerオプション
エアギャップ環境や最大限の運用制御のために、Timestamp GITはDockerイメージとして利用可能です。自己ホストインスタンスは同じGitHub Appワークフローを使用しますが、お客様が所有するインフラストラクチャ上で実行されます。
最小限のDocker Composeセットアップは以下のようになります:
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の接続とインスタンスの設定を案内します。評価用に期間限定のデモライセンスが利用可能です。
自動タイムスタンプのベストプラクティス
自動化は反復作業を排除しますが、いくつかの習慣がタイムスタンプ履歴をはるかに強固にします。
頻繁にコミットする。 パイプラインは日次バッチをアンカーします。月に一度しかコミットしない場合、証明ポイントが少なくなり、アンカー間のギャップが大きくなります。定期的なコミットは、密で連続的な先行技術記録を作成します。
意味のあるコミットメッセージを使用する。 タイムスタンプされるのはコミットハッシュですが、人間が読む監査証跡も依然として重要です。APIレスポンスのキャッシュウォーミングを実装のようなメッセージは、紛争時に修正よりもはるかに有用です。
.otsレシートをソースコードから分離しておく。 タイムスタンプブランチまたはシャドウリポジトリを追記専用の証拠ストアとして扱います。編集、スカッシュ、削除を避けてください。
定期的にサンプルを検証する。 少なくとも四半期に一度、代表的なタイムスタンプの公開検証ページを開き、Merkle証明が正しく解決されることを確認します。これにより、証拠が必要になる前に設定のずれを検出できます。
機密プロジェクトにはエンタープライズZKモードを使用する。 リポジトリに営業秘密、内部ツール、または未公開の製品ロジックが含まれている場合、エンタープライズZKモードが最も強力なデフォルトです。Timestamp GITはコミットハッシュのみを認識し、コードが環境から出ることはありません。
規制対象環境ではDocker自己ホスティングを検討する。 エアギャップ運用やGitHub App接続の完全な制御が必要な場合は、Dockerイメージで自己ホストします。
FAQ
GitHub Appでの自動タイムスタンプはどのように機能しますか?
Timestamp GIT GitHub Appをインストールしてリポジトリを選択すると、アプリはWebhookを通じて新しいコミットを自動的に検出します。毎晩、すべてのコミットハッシュをバッチ処理し、Merkleツリーを作成し、OpenTimestampsを使用してルートをBitcoinブロックチェーンにアンカーします。証明レシート(.otsファイル)はその後、リポジトリの専用ブランチにプッシュバックされます——手動の手順は不要です。
ソースコードがTimestamp GITに公開されることはありますか?
いいえ。Timestamp GITはGitコミットハッシュのみを処理し、実際のソースコードは処理しません。スタンダードモードでは、GitHub Appはコミットハッシュを取得するためにリポジトリへの読み取りアクセスを必要としますが、ファイルの内容を読み取ることはありません。エンタープライズZKモードでは、GitHub Actionがお客様のインフラストラクチャ上で実行され、コミットハッシュのみをAPIにプッシュするため、Timestamp GITはコードへのアクセスを一切持ちません。
Timestamp GITが廃業した場合はどうなりますか?
タイムスタンプは永遠に有効です。証明はBitcoinブロックチェーンにアンカーされており、SHA-256とBitcoinブロックデータのみに基づいています。Timestamp GITが存在しなくなっても、標準のOpenTimestampsツールを使用して独立して検証できます。.otsレシートファイルはリポジトリに保存されているため、常に手元にあります。
プライベートリポジトリでTimestamp GITを使用できますか?
はい。ProおよびEnterpriseプランはプライベートリポジトリをサポートしています。プライベートリポジトリの場合、ステータスバッジと検証リンクには暗号化されたHMACが含まれており、許可されたユーザーのみがタイムスタンプステータスを表示できます。エンタープライズZKモードは、ソースリポジトリへの読み取りアクセスを必要としないため、最大限のプライバシーに推奨されます。
設定したら忘れる
手動タイムスタンプが失敗するのは、誰かが実行することを覚えていることに依存しているからです。暗号学的先行技術の価値は、単一の英雄的な努力ではなく、数ヶ月から数年にわたる一貫性から生まれます。
Timestamp GITはその一貫性をインフラストラクチャに変えます。GitHub Appを一度インストールし、リポジトリを接続すれば、夜間ワーカーがフィンガープリンティング、バッチ処理、Bitcoinアンカー、証明配信を処理します。継続的な運用負担なしに、不変の先行技術証明を得られます。
無料プランはパブリックリポジトリをカバーします。Proは月額49ドルでプライベートリポジトリを追加し、エンタープライズZKモードはGitHub Actionワークフロー付きで月額199ドルです。エアギャップまたは規制対象環境向けに、Docker自己ホストライセンスも利用可能です。
今日から暗号学的先行技術ポートフォリオの構築を始めましょう:Timestamp GIT GitHub Appをインストールして、最初のリポジトリを接続してください。