こしあん
2026-01-02

WindowsのコマンドプロンプトからGitHubのReleaseに複数のファイルをアップロードする


2{icon} {views}

はじめに

Windowsのコマンドプロンプトを使って、GitHubのタグを作り、そのリリースファイルに大量のPDFファイルをアップロードする方法を自分用のメモとしておいておきます。

先に結論

前提:GitHub CLIをインストールしておく

タグ作成~アップロード

set "TAG=aws2-v1.0.0-test"
git tag -a %TAG% -m "Release %TAG%"
git push origin %TAG%

gh release create %TAG% docs\*.pdf --title "%TAG%" --notes "PDFs for %TAG%"

複数ディレクトリをアップロードする場合

gh release create %TAG% docs\*.pdf otherdocs\*.pdf --title "%TAG%" --notes "PDFs for %TAG%"

制約:リリースファイルにフォルダ構造は持てない。したがってディレクトリ間でベースのファイル名が衝突した場合はエラー。ファイル名やディレクトリ名の命名規則を整備したほうが良い。

おまけ:リモートタグの削除

gh release delete %TAG% --cleanup-tag

背景

背景としては、本の入稿プロセスにおいて、ローカルで実行している入稿データへの変換処理をCI化したいのですが、出来上がったPDFファイルをどこで管理するのかが課題になっていました。

現状は、VSCodeの拡張機能のmarkdown-pdfとPhotoshopの併用でPDFを生成しています。

GitHubで原稿管理していますが、PDFのもととなるマークダウンと画像のみを管理しているだけです。

方法1:PDFをCIジョブ内で作らせる(不採用)

CIジョブ内でPDFをレンダリングしてしまえば、PDFファイルを管理する必要がありません。

しかし、VSCodeの拡張機能には、ヘッドレスモードがなく、VSCode上で「Shift+Ctrl+P」で出している処理をコマンドベースに置き換えることはかなり難しいです。代替として、PDFのレンダラーとしてmd-to-pdfをCI内でPDF生成は可能です。

https://github.com/simonhaenisch/md-to-pdf

一見シンプルなやり方ですが、かなり課題がありました。

  • VSCodeで生成したPDFと、md-to-pdfで生成したPDFでレイアウトが変わってしまう
  • フォントの構成がローカルPCとCI内で統一するのが難しそう
  • Photoshopで生成したPDFは(章区切りの扉など)別に管理が必要

md-to-pdfはA4でとりあえずサクッと出す場合は便利ですが、VSCodeの拡張機能でガッツリチューニングしたものの代替として使うのは厳しそうでした。最初からmd-to-pdfで本を作るぜというならありだと思います。

方法2:PDFをローカル生成し、GitHubのリリースで管理する(採用)

ローカルPCでPDFを生成してそれを正とするというのは崩しそうがないです。ただ、その場合はPDFをどうCIジョブに渡すかという観点が大事になります。

PDFは比較的重いため、Git管理においてしまうと肥大化してしまいます。Git LFSを使えば部分的には解決しますが、結局はバイナリが変わるとコミット差分が増えるというのは変わりません。そこでGitHubはマークダウンと画像のみ管理しつつ、リリースファイルにPDFを退避させるというのが正しそうでした。

これならPhotoshopで生成したPDFも、VSCodeで生成したPDFもGit管理でき、CIにつなぎ込めますし、タグを使ってバージョン管理も可能です。



Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内

技術書コーナー

北海道の駅巡りコーナー


Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です