Show page source of FileRelease_Guide #105165

[[PageNavi(NavigationList)]]

= ファイルリリースガイド

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まで'''となっています。

== 公開範囲に関して

パッケージ/リリース/ファイル にはそれぞれ「公開範囲」を設定することができます。公開範囲の設定は以下のような
意味を持ちます

 * '''公開''': 誰でもアクセスできる状態です(通常はこれを設定します)
 * '''限定公開''': (プロジェクト管理者/ファイルリリース管理者以外が閲覧した場合) リストに表示されなくなります。ただし、アクセスするURLを知っている場合は誰でも直接アクセスすることが可能です。例えば、一般公開前にプロジェクトメンバーにURLを連絡してなにかミスがないか事前に確認してもらってから公開するといった用途に使うことを想定しています
 * '''非公開''': プロジェクト管理者/ファイルリリース管理者以外は閲覧ができない状態です(URLを知っていてもアクセスできません)

パッケージ/リリース/ファイルそれぞれに個別に公開範囲を設定できますが、それぞれの実際の公開範囲はより上位のもの(リリースであれば パッケージ、ファイルであればそのファイルを含んでいるリリースとパッケージ)の影響を受けます。

例えば、リリースを公開に設定していても そのリリースを含んでいるパッケージが限定公開だった場合 そのリリースは一覧にはリストされません。

== 優先ダウンロード

ファイルリリース一覧やプロジェクトトップページなどに表示される優先ダウンロードを設定することができます。例えば、その時点での安定版のファイルを指定しておくことでそれが目立つ形で表示されるためそのファイルをユーザに優先的にダウンロードさせることができるようになります。

優先ダウンロードはファイルの種類ごとに1つずつ指定できます。

== システム要件

リリースしたプログラムなどの動作条件を記述できるシステム要件を設定できます。システム要件はプロジェクト全体で1つ (複数の言語で)記述できます。

== 各リリースファイルのURL

公開された各パッケージ、リリース、リリースファイルを指すURLは下記のようになります。

 * パッケージURL:!https://osdn.jp/projects/(プロジェクト名)/releases/(パッケージid)
 * リリースURL:!https://osdn.jp/projects/(プロジェクト名)/releases/(リリースid) 
 * リリースファイルURL:!https://osdn.jp/projects/(プロジェクト名)/downloads/(リリースid)/(ファイル名)/

プロジェクトWebなどからユーザをダウンロードへ誘導する場合、上記のリリースもしくはリリースファイルの形式のURLで告知することになります。ミラーサーバーを指定する幾つかの形式のURLも存在しますが、歴史的にもそれらのURLに永続性はありませんので、なるべく使用しないようにしてください。なお、パッケージidやリリースidは単なる数字の羅列であり、プロジェクト側でダウンロードURLを告知する際に不便な場合があります。そのため、リリースファイルを指すURLには下記のような簡略化した形式のURLが用意されています。

 * 簡略リリースファイルURL:!https://osdn.jp/dl/(プロジェクト名)/(ファイル名)

一つのプロジェクト内に同一の名前のファイルが存在することがありますが、そのようなファイル名で上記の形式を使用した場合、新しい方のリリースファイルを指すURLとなります。

Tera Term 4.90を例として示すと、下記のようなURLを公開のアナウンス用として使用することができます。それぞれ都合の良いURLを使い分けてください。

 * リリースURL:https://osdn.jp/projects/ttssh2/releases/64798
 * exeファイルのダウンロードURL:https://osdn.jp/projects/ttssh2/downloads/64798/teraterm-4.90.exe/
 * exeファイルの簡略化URL:https://osdn.jp/dl/ttssh2/teraterm-4.90.exe


== 直接ダウンロード

現在、wget、curl、libwww-perlからのリリースファイルURLへのアクセスがあった場合、htmlページを経由することなく直接ファイルのダウンロードが開始されます。


== Web UI以外からのファイルリリースのアップロード

OSDNの[/projects/osdn-codes/wiki/APIGuide REST API]を利用してファイルリリースのアップロードや編集作業を行うこともできます。また、このAPIを利用して実装された[/projects/osdn-codes/wiki/CommandLineInterface コマンドラインツール]も用意されています。このコマンドラインツールを使えば、簡単なコマンドでローカル側のファイルツリーをOSDN側のリリースファイルのツリーへ反映させることができます。

[[PageNavi(NavigationList)]]