GitHubリリースのプロジェクトストレージへの同期機能

GitHub上に作成されているreleaseをプロジェクトのファイルストレージに同期する機能です。

ファイルリリースへ同期したい場合はこちらを参照してください。

できること/できないこと

  • GitHub上に作成されたtagに対応したソースアーカイブやreleaseのファイルをプロジェクトファイルストレージの指定されたディレクトリ以下画へ複製します。更新があった場合に同期します(ファイルやtag/releaseの追加削除に追従します)
    • 変更に逐次追従せずに、該当の同期設定を作成した時一度のみ(および手動で指示したタイミングに)実行するモードもあります
    • release のみ(tagに対応したソースアーカーイブ以外のみの)ミラーにも対応します
  • Publicリポジトリにのみ対応します(Private リポジトリには対応しません)
  • プロジェクト管理者が同期の設定を行えます
    • 対象となるGitHubリポジトリに対して管理者権限(Webhookを設定できる権限)を持っている必要があります(無関係なGitHubリポジトリに対して同期設定を行うことはできません)

設定

ファイルストレージの管理画面から行います。対象のプロジェクトの「ダウンロードメニュー」にある「ファイルストレージ」の「管理」から管理画面にアクセスします。

https://osdn.net/projects/foo/admin/storage

「GitHubリリースからの同期」にある「同期対象GitHubリポジトリの追加」から設定します。

設定が必要な項目は以下です

ソースGitHubリポジトリ

ミラー対象とするGitHubリポジトリのURLを入力して下さい。https://github.com/foo/bar のような形式のものです。 該当するリポジトリに対する管理者権限(少なくとも Webhook が設定できる権限)が必要になります。

設定したURLはあとから変更できませんので注意して下さい。

ミラー対象とするGitHubリポジトリは Public なものである必要があります(Private リポジトリは指定できません)

ターゲットディレクトリ

ミラー先となるディレクトリ名を指定します。リポジトリを入力した時点でその名前から自動的にディレクトリ名の 候補を自動生成して入力した状態になります、参考にしてください(問題なければそのままでかまいません)。

指定したディレクトリがない場合は最初のミラー時に指定されたディレクトリが作製され、その下に ミラーされます。なお、既存のディレクトリを指定した場合ミラー以前にそのディレクトリにあったディレクトリや ファイルは削除されますので注意してください。

ミラー先となるディレクトリはあとから変更できません

Tag を含める

GitHub上ではリポジトリにtagをうつと、自動的にそのtagに対するzipとtarのアーカイブが生成されて、それが リリースのページ以下から参照できるようになります。さらに、それらのtagを対象にreleaseを作成することが でき、それらには名前をつけたりさらに自動生成されるファイル以外のファイルをまとめて置いておくことが できるようになっています。

OSDNのGitHub同期ではディフォルトでこのtagとreleaseの両方を対象としてミラーを行おうとしますが、 ここでスイッチを無効にするとtagを含めずreleaseのみをミラー対象として処理が行われます

この設定はあとから変更できますが、Tagを含めたミラーをしていた設定をあとからTagを含めないに 変更すると、以降のミラーの実行時にTagに対応して作製されたリリースやファイルは削除されますので 注意して下さい。

なお、GitHub上では release を draft 状態とする(pre-releaseであるとする)ことができます。 この状態のreleaseはミラーされません

自動同期

有効にしておくと、GitHub上でのリリースの変化に追従して逐次OSDN側への変更が反映されるようになります。 (ただし、後述しますがGitHub Webhookの機能の制限による問題により反映に時間がかかるケースが発生することがあります)

無効にすると、ミラーの設定を行った直後の一回のみミラーの処理が行われ以降は処理が行われません (ミラー設定のリスト上、自動同期が無効になっているものには 1shot というラベルがつけられます)

この設定はあとから変更できます

また、自動同期を有効にしている場合でも無効にしている場合でもミラー設定の一覧上から再同期のボタンを 押すことにより、手動で同期処理を行わせることができます。

適用

上記の項目を埋めた上で適用ボタンを押すと、同期設定の書き込みが行われます。

最初に設定を行うときはGitHub上でアプリケーション連携のための認証が行われます。 要求されている権限を確認した上で許可して下さい。なお、GitHub上でのTagの追加やreleaseの変化を 通知するためのwebhookがGitHubの該当リポジトリに自動的に追加されます。

同期設定が書き込まれると、まず最初の同期が自動的にスタートします。

同期設定の操作

管理画面のGitHubリリースからの同期の項目上部には、設定されている同期の一覧が表示されます。 ここから、それぞれの設定に対して操作を行うことが可能です。

再同期

GitHubからの同期は必要な場合に自動的に行われますが、なんらかの理由(例えば前述のようにGitHubの 制限によりreleaseの更新がうまく伝わらず同期が大きく遅延しているようば場合)、手動で同期の再実行 (再同期)を行うことができます。

なお、再同期のリクエストは実行待ち行列に入れられますので実行開始まで多少の時間がかかるケースが あります(ボタンを押すと即時実行されるわけではありません)

また、再同期のリクエストは一度押すと再同期の処理が完了してから24時間以内はできませんので 注意してください。

編集

該当する同期設定を変更することができます、変更できる項目は「Tagを含める」と「自動同期」のみです。

削除

該当する同期設定を削除できます。その同期が不要になった場合はここから削除できますが、削除してしまった 場合、元には戻せませんので注意して下さい。

削除時にはGitHubのリポジトリ上に設定されたWebhookも自動的に削除されます。ただし、ごく稀に(例えば、 GitHubのAPIの動作に問題が発生しているような間にOSDN上で削除処理を行ったような場合など)なんらかの理由で Webhookが残ってしまうケースがあります。その場合は GitHub の Webhook 管理画面上で手動で削除を行って ください。

また、同期先となっていたディレクトリやそのディレクトリ以下にあるファイルはは削除されずにそのまま残った状態になります。

ミラーされたもの自体が不要である場合は、同期先のディレクトリを削除してください。

FAQ

なにか正常に動いてないように思います

現在、この機能はパブリックβ提供中です。途中仕様の変更や提供機能の削除/追加がある可能性があります。 また、なんらかのバグが残っている可能性もございます。

なんらかの問題が発生していると思わしき場合は チケットからご連絡下さい。

https://osdn.net/ticket/newticket.php?group_id=10743&type=27985

GitHub上でreleaseを更新したのですが同期されません

GitHub上でのリリースの変更に関してWebhookでの通知を受け取って動作するようにはなっていますが、 GitHub Webhookの機能が足りない(release自体を作成した/変更した/削除したことに対してはeventが 飛ぶが、releaseに対してファイルが追加されたり削除されたりした場合に通知するような機能は 一切ない)ため、残念ながらreleaseの操作に対して、OSDN側のシステムが正確にすぐにその変更を知る 方法がありません。

そのため、releaseへの追加/削除に関しては最悪定期での同期を待つ必要があるため、最大1週間ほど 同期が遅れる可能性があります。GitHub上でreleaseを編集したあと、しばらく経っても同期が実行 されない場合は、管理画面から同期のボタンを押すことで手動で同期を実行することもできます。

なお、手動同期は最後に同期を行ったあと24時間以上経たないと実行できませんので、実行タイミングには 注意して下さい。

GitHubからの同期を止めた(同期の設定を削除した)のですが、過去に同期していたディレクトリやファイルが残ったままです

仕様です。同期の設定を削除しても、その同期設定で指定していた対象ディレクトリやそれ以下にあるファイルは削除されません。

削除が必要であれば手動で削除してください。

GitHubからの同期を止めた(設定を削除した)のですが、Webhookの設定がGitHub上に残ったままのようです

基本的にはOSDN上で自動的に作成したWebhookはOSDN側の管理画面での設定削除時に自動的に削除されるはずです。

ただし、なんらかの理由でGitHub上のWebhookの設定削除が行えなかった場合(例えば GitHub 上での API の許可を 取り消したとかGitHubのAPIが止まっているときにOSDN側での設定の削除処理をした場合)などに、Webhook の削除が 失敗したとしても、OSDNシステム上での設定削除は行われるようになっています(その場合、削除後のメッセージに Webhookの削除には失敗した旨の警告文が表示されます)

Webhookの設定が残ってしまっていた場合にはGitHub上での手動削除をお願いします。

ファイルストレージじゃなくてファイルリリースの方にミラーしたいのですが...

同様の機能がありますのでこちらを確認してください。

作業部屋にはミラーできないのですか?

ご利用いただけません。いまのところ(2020年5月現在)、提供するかどうか/提供時期も含め全く未定です。