[[PageNavi(NavigationList)]]
''rsync等の汎用コマンドツールでのアップロードに対応したファイルストレージ機能の説明は[/docs/FileStorage_Guide 次のページ]にあります。このページで説明するパッケージ型のリリース機能とは別個の機能です。''
= ファイルリリースガイド
OSDNのファイルリリース機能を利用すると、プロジェクトで作成したソフトウェアを配布できます。
== ファイルリリースに関する用語
OSDNのファイルリリースシステムは以下のような階層構造で管理しています。まずはこれらの用語について説明します。
{{{
パッケージ
|
+-リリース
| :
| :
+-リリース
|
+-ファイル
| :
| :
+-ファイル
}}}
=== パッケージ
ファイルリリースの最も大きな単位で、ソフトウェアの名前などを付けます。ソフトウェア名とプロジェクト名が同一のプロジェクトが多いので、各プロジェクトにはデフォルトでプロジェクトUNIX名のパッケージを配置しています(名称はもちろん変更可能です)。
パッケージは、プロジェクトごとに複数もつことができます。例えばhelloというプロジェクトが「foo」というソフトウェアだけでなく「bar」というソフトウェアも開発している場合は「foo」と「bar」というパッケージを作成して管理するとわかりやすいでしょう。
=== リリース
各パッケージはリリースを複数もつことができます。
リリースは以下のものを含みます。
* ファイル(複数可)
* リリースノート(複数言語記述できます)
* 更新履歴(複数言語で記述できます)
つまり、実際に配布する一連のファイルをまとめたものがリリースです。
例えば foo というプログラムの version 0.1 をリリースすることになったとします。その場合は パッケージ 「foo」 以下にリリース「0.1」を作成します。そして 実際の プログラム foo version 0.1 のファイルをそこにアップロードします。また、そのリリースがどういうものなのか(例えば、「最初のリリースです」とか「まだアルファ版です」といったこと)をリリースノートに、前回のリリースからの変更点を変更履歴に記述します。
作成されたリリースは一覧に掲載されますので 一般のユーザはそこからダウンロード可能になります。
== リリース方法
ファイルリリースができるのは、プロジェクト管理者とリリース管理者の権限を持っているユーザーです。
ファイルリリースは、次の順番で行うことになります。
1. パッケージの作成
2. リリースの作成(ファイルアップロード)
順番に見ていきましょう。
=== 1 パッケージの作成
プロジェクトが登録された時点で、プロジェクトのUNIX名と同名のパッケージは自動で作成されます。この名前で問題ない場合は、パッケージを新たに作成する必要はありませんので、次に進んでください。
パッケージを作成するには、プロジェクトのリリース一覧もしくはダウンロードの管理ページから「パッケージの追加」をクリックします。パッケージ名を入力し、公開範囲を選択します通常「公開」でいいはずです(公開範囲の詳細に関しては後述します)
=== 2 リリースの作成
パッケージを作成すると、そのパッケージに対してリリースを追加することができるようになります。同じくリリース一覧もしくはダウンロードの管理ページ上に表示されているリリースを作成したいパッケージ上の「リリースを追加」ボタンをクリックしてください。
リリースには以下の情報が設定できます。
* リリース名
* 公開範囲
* リリースに含まれるファイル
* リリースノート
* 変更履歴
リリースには複数ファイルを追加することができます。また、それぞれのファイルに対して公開範囲を設定することができます。
(複数ファイルのアップロードに対応している)ブラウザからはファイルを複数同時にアップロードすることもできます。
また、ファイルのアップロードにFTPを利用することもできます。FTPでのアップロードを利用する場合は、
リリースの編集画面にあるFTPアップロードを利用するスイッチをonにしてください。FTP でのアップロードに
関する情報が表示されます。
なお、'''ファイルリリースでアップロードできる1ファイルのサイズの上限は2GBまで'''となっています。
リリースには「リリースノート」と「変更履歴」のドキュメントを付加しておくことができます。
付加するドキュメントは以下の方法から選択できます。
* wiki フォーマットで記述する
* リリースの編集ページにあるフォームからwikiフォーマットで入力してください
* 各言語ごとに記述できます
* ファイルの中身を表示する
* アップロードしたファイルのうち、リリースノート/変更履歴のファイルとしてシステムが認識するファイル名を持ったファイルの中身を表示させることができます
* リリースノートとして認識されるファイル名は「readme」「release」「releasenote」です(大文字小文字は区別されません)
* 変更履歴として認識されるファイル名は「changes」「changelog」です(大文字小文字は区別されません)
* 対応しているファイルフォーマットは text(拡張子なし もしくは.txt という拡張子がついているファイルはtextファイルとして扱います)、html (.htm もしくは .html を拡張子としてもつファイルは html として扱います)、および markdownです(.md という拡張子をもつファイルを markdown として扱います)
* ファイル名のあと(拡張子の前)に ハイフンと言語名を指定することで言語ごとにことなるファイルを表示できます(例: README-ja.txt というファイルは日本語のリリースノートとして扱われます。なお ハイフンと言語名がないファイルは英語のファイルとして扱います)
* ファイル内の文字コードは UTF-8 を想定しています(その他のコードで書かれたファイルは文字化けする可能性があります)
* html に関しては一部のタグは無視されます
* ファイル名が該当しても中身がテキストファイルでない場合は表示されません
* 30kbytes を超える文章の場合は、それ以降は表示されません
* ファイルの状態は「公開」である必要があります(限定公開/非公開のファイルの中身を利用することはできません)
アップロードしたファイルのなかに条件に合致するものがあるとリリースの編集UIにファイル名群が選択肢として表示されます。
ファイルの中身を表示したい場合にはそこから選択して適用してください(適用しないと更新されません。注意してください)
なお、ファイルの中身を表示するを選択して適用した場合には、フォームから入力したドキュメントの情報は削除されますので
ご注意ください。
== 公開範囲に関して
パッケージ/リリース/ファイル にはそれぞれ「公開範囲」を設定することができます。公開範囲の設定は以下のような
意味を持ちます
* '''公開''': 誰でもアクセスできる状態です(通常はこれを設定します)
* '''限定公開''': (プロジェクト管理者/ファイルリリース管理者以外が閲覧した場合) リストに表示されなくなります。ただし、アクセスするURLを知っている場合は誰でも直接アクセスすることが可能です。例えば、一般公開前にプロジェクトメンバーにURLを連絡してなにかミスがないか事前に確認してもらってから公開するといった用途に使うことを想定しています
* '''非公開''': プロジェクト管理者/ファイルリリース管理者以外は閲覧ができない状態です(URLを知っていてもアクセスできません)
パッケージ/リリース/ファイルそれぞれに個別に公開範囲を設定できますが、それぞれの実際の公開範囲はより上位のもの(リリースであれば パッケージ、ファイルであればそのファイルを含んでいるリリースとパッケージ)の影響を受けます。
例えば、リリースを公開に設定していても そのリリースを含んでいるパッケージが限定公開だった場合 そのリリースは一覧にはリストされません。
== 優先ダウンロード
ファイルリリース一覧やプロジェクトトップページなどに表示される優先ダウンロードを設定することができます。例えば、その時点での安定版のファイルを指定しておくことでそれが目立つ形で表示されるためそのファイルをユーザに優先的にダウンロードさせることができるようになります。
優先ダウンロードはファイルの種類ごとに1つずつ指定できます。
== システム要件
リリースしたプログラムなどの動作条件を記述できるシステム要件を設定できます。システム要件はプロジェクト全体で1つ (複数の言語で)記述できます。
== 各リリースファイルのURL
公開された各パッケージ、リリース、リリースファイルを指すURLは下記のようになります。
* パッケージURL:!https://osdn.net/projects/(プロジェクト名)/releases/(パッケージid)
* リリースURL:!https://osdn.net/projects/(プロジェクト名)/releases/(リリースid)
* リリースファイルURL:!https://osdn.net/projects/(プロジェクト名)/downloads/(リリースid)/(ファイル名)/
プロジェクトWebなどからユーザをダウンロードへ誘導する場合、上記のリリースもしくはリリースファイルの形式のURLで告知することになります。ミラーサーバーを指定する幾つかの形式のURLも存在しますが、歴史的にもそれらのURLに永続性はありませんので、なるべく使用しないようにしてください。なお、パッケージidやリリースidは単なる数字の羅列であり、プロジェクト側でダウンロードURLを告知する際に不便な場合があります。そのため、パッケージ/リリース/リリースファイルを指すURLには下記のような簡略化した形式のURLが用意されています。
* 簡略パッケージURL: !https://osdn.net/pkg/(プロジェクト名)/(パッケージ名)
* 簡略リリースURL: !https://osdn.net/rel/(プロジェクト名)/(リリース名)
* 簡略リリースURL(パッケージ名を明示): !https://osdn.net/rel/(プロジェクト名)/(パッケージ名)/(リリース名)
* 簡略リリースファイルURL:!https://osdn.net/dl/(プロジェクト名)/(ファイル名)
一つのプロジェクト内に同一の名前のパッケージ/リリースファイルが存在することがありますが、そのようなパッケージ名/リリース名/ファイル名で上記の形式を使用した場合、新しい方のリリースファイルを指すURLとなります。
また、リリースに関しては複数のパッケージに同一のリリース名が存在するような場合があると思いますが(例えば、あるプロジェクトに パッケージA と
パッケージBが存在していて、ともに1.0というリリースを持っているといいったケース)、その場合は前述の簡略リリースURLの2つめのように、
パッケージ名を明示することで どのパッケージのどのリリースなのかを明示することもできるようになっています。
Tera Term 4.90を例として示すと、下記のようなURLを公開のアナウンス用として使用することができます。それぞれ都合の良いURLを使い分けてください。
* パッケージURL: https://osdn.net/projects/ttssh2/releases/p7801
* 簡略パッケージURL: [https://osdn.net/pkg/ttssh2/Tera%20Term https://osdn.net/pkg/ttssh2/Tera Term]
* リリースURL:https://osdn.net/projects/ttssh2/releases/64798
* 簡略リリースURL: https://osdn.net/rel/ttssh2/4.90
* 簡略リリースURL(パッケージを明示): [https://osdn.net/rel/ttssh2/Tera%20Term/4.90 https://osdn.net/rel/ttssh2/Tera Term/4.90]
* exeファイルのダウンロードURL:https://osdn.net/projects/ttssh2/downloads/64798/teraterm-4.90.exe/
* exeファイルの簡略化URL:https://osdn.net/dl/ttssh2/teraterm-4.90.exe
== 直接ダウンロード
現在、wget、curl、libwww-perl、!PowerShellからのリリースファイルURLへのアクセスがあった場合、htmlページを経由することなく直接ファイルのダウンロードが開始されます。
== Web UI以外からのファイルリリースのアップロード
OSDNの[/projects/osdn-codes/wiki/APIGuide REST API]を利用してファイルリリースのアップロードや編集作業を行うこともできます。また、このAPIを利用して実装された[/projects/osdn-codes/wiki/CommandLineInterface コマンドラインツール]も用意されています。このコマンドラインツールを使えば、簡単なコマンドでローカル側のファイルツリーをOSDN側のリリースファイルのツリーへ反映させることができます。
== Virus検査の実施
アップロードされたファイルは [https://www.virustotal.com VirusTotal]を利用して、Virus検査が行われます。
* 検査結果の詳細はプロジェクト管理者/ファイルリリース管理者に対して、リリース一覧ページ等に表示されます。問題のあるファイルが含まれたりしていないか確認してください。
* 検査結果をもって、Virusの混入がないことを保証するものでもありません。
* !VirusTotalでは複数のVirus検査エンジンを利用して横断して検査を行うことにより、Virus等の検出を行うものです。これらのエンジンの中には非常にセンシティブで偽陽性(false positive)を頻繁に返すものがいくつかあるため、現実的に全く問題がないファイルでも稀にいくつかのVirus検出警告が上がる場合があります(つまり、!VirusTotalからの結果をもって即そのファイルが危ないとは判断できません)。また、zip等で複数のファイルをまとめてあるようなケースでは、個々のファイルの検査結果に対して、警告が累積して提示されるため 軽微な誤検出が重なっていくつもの警告があがっているように見えるケースもあります。!VirusTotalの特性を把握した上で、結果の詳細を確認して判断してください。
* !Virus検出の結果、警告が一定以上ある場合は、その結果をそのファイルのプロジェクト管理者およびファイルリリース担当者にメールで通知します(一定期間後に再検査を行う場合もありますので、一つのファイルに関して複数回のメール通知送信されるケースがございます)
* !VirusTotal による検査結果を as is で提供する機能であり、その結果から問題がないか確認していただくものです。VirusTotalの結果自体に対して、例えば誤検出等が発生しているようなケースなどに連絡する等の機能は(VirusTotal側にそういった機能の提供がないこともあり)ありません。
* !VirusTotalの結果から 明らかに問題があると判断されたファイルは、サイト管理者側で非公開化や削除などの措置をとる場合があります
* !VirusTotal の API の制限のため 350MB 以上のファイルに関しては現状チェックが行なえません
* 検査結果はアップロードした直後すぐには表示されません(!VirusTotal自体の挙動、及びAPIのアクセス制限のため、最短でも30分程度、場合によっては数日以上かかるケースがあります)
* 一定期間(現在 90日としています)ごとに、再検査が行われます(ただし、APIの制限から即時再検査が行われませんし、再検査の結果が出るのにも時間がかかるケースがありますので、必ず90日ごとに検査が行われることを保証するものではありません。90日経過すると再検査のキューに入れられますので、その後数日経過すると結果が更新されます)
* プロジェクト管理者およびファイルリリース管理者はWebUI上からファイルの再検査リクエストを提出できます。この場合の再検査も即時には行われません。結果の取得まで最大数日かかる場合があります。また、同一ファイルに関しては 一度再検査を行うと、一定期間(現状 3日としています)再検査の要求を出せません(!VirusTotal側のエンジンの定義ファイル等の更新がない限り出力はかわりませんので、頻繁に検査を行うことは意味がありません)
* osdn.net のシステムによらずに Web ブラウザ等から !VirusTotalにアクセスして、手動でファイルの検査を行うこともできます。この場合、osdn.net システム側では検査結果が更新されたことを検知できませんので、osdn.net 側に表示している結果より新しいレポートが!VirusTotal側に表示される場合があります。詳細レポートのリンクは最新のものが表示されるものになっていますので、osdn.net 側の結果より新しいレポートが表示される場合は !VirusTotal 側の結果を参照してください。
[[PageNavi(NavigationList)]]