Show page source of GitHubsync_frs #115250

[[PageNavi(NavigationList)]]

= !GitHubリリースのプロジェクトファイルリリースへの同期機能

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

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

== 設定

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

!https://osdn.net/projects/foo/releases/admin/

「!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からの同期を止めた(同期の設定を削除した)のですが、過去に同期していたパッケージが残ったままです

仕様です。同期の設定を削除しても、その同期設定で同期していたOSDNリリースのパッケージ以下の
リリース/ファイル群は削除されません。

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

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

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

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

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

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

ストレージに対する!GitHubからのミラー機能はファイルリリース同様、現在準備中/近日β公開予定です。

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

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

[[PageNavi(NavigationList)]]