![]() |
![]() |
![]() |
![]() |
Cutterは <URL:https://osdn.net/> にて プロジェクトのウェブサイト や プラットフォームごとのリポジトリなど をホスティングしています。
そのため、リリース作業ではosdn.net上のプロジェクト領域へ アクセスできる必要があります。
Cutterプロジェクトのメンバでない場合にはプロジェクトの 管理者にosdn.netのアカウント名を以下のProject Membershipページ から追加してもらう必要があります。
Cutterのリリースではすでに述べたようにosdn.netへの パッケージやドキュメントファイルのアップロードを行います。
もし、リリース作業を行う端末のアカウントと osdn.netのアカウントが異なる場合には、 以下のようにしてosdn.netのアカウントを使うように 環境変数
OSDN_USER
の設定を行います。
% export OSDN_USER=(ここにosdn.netのアカウントを指定)
永続的に有効にする場合にはシェルの設定ファイルに上記記述を追加します。
また、GitHubへソースアーカイブのリリースを行うために、 アクセストークンを保存したファイルへのパスを環境変数
{ACCESS_TOKEN_FILE
で指定します。
% export ACCESS_TOKEN_FILE=(ここにアクセストークンを保存したファイルのパスを指定)
また、OSDNへソースアーカイブのリリースを行うために、 アクセストークンを保存したファイルへのパスを環境変数
{OSDN_CREDENTIAL_FILE
で指定します。
% export OSDN_CREDENTIAL_FILE=(ここにアクセストークンを保存したファイルのパスを指定)
OSDN_CREDENTIAL_FILEはosdn-cliをインストールしてosdn loginを実行すると、 $HOME/.config/osdn/credential.ymlとして作成されます。
以下にCutterのリリース作業を行うために事前にインストール しておくべきパッケージを示します。
なお、ビルド環境としては Debian GNU/Linux (sid)を前提として説明しています。 その他の環境ではパッケージ名等適宜読み替えて下さい。:
% sudo apt-get install -V createrepo rpm ruby-full gnupg2 gtk-doc-tools gnome-doc-utils
また、rubyでいくつかパッケージが必要なので以下のコマンドによりインストールします。:
% sudo gem install rdtool fast_gettext mechanize
なお、特に明記していない限り本リリース手順でのコマンドラインの 操作はzshを前提としています。
リリース作業ではパッケージに対する署名を行います。 その際、パッケージ署名用の鍵が必要です。
Cutterプロジェクトでは署名用の鍵をリリース担当者の公開鍵で暗号化して リポジトリのpackages/ディレクトリ以下へと登録しています。
リリース担当者はリポジトリに登録された秘密鍵を復号した後に 鍵のインポートを以下のコマンドにて行います。:
% cd packages % gpg --decrypt release-key-secret.asc.gpg.(担当者) > (復号した鍵ファイル) % gpg --import (復号した鍵ファイル)
鍵のインポートが正常終了すると
gpg --list-keys
でCutterの署名用の鍵を 確認することができます。:
pub 1024D/F07C74AC 2012-08-07 uid Cutter Key (Cutter Official Signing Key) <cutter-users-en@lists.sourceforge.net>
鍵をインポートしただけでは使用することができないため、インポートした鍵に対してtrust,signを行う必要があります。
以下のコマンドを実行して署名を行います。(途中の選択肢は省略):
% gpg --edit-key cutter-users-en@lists.sourceforge.net gpg> trust gpg> sign gpg> save gpg> quit
鍵のインポート作業は初めてリリースを行うときや、 鍵が更新された場合に行います。
Cutterのリリース作業ではリリース専用の環境下(コンパイルフラグ)で ビルドする必要があります。
リリース時と開発時でディレクトリを分けずに作業することもできますが、 誤ったコンパイルフラグでリリースしてしまう危険があります。
そのため、以降の説明では
$HOME/work/cutter
以下のディレクトリに リリース用の作業ディレクトリ(cutter.clean)を作成したものとします。
% mkdir -p $HOME/work/cutter
これ以降
CUTTER_CLEAN_DIR=$HOME/work/cutter/cutter.clean
として説明します。
リリース用のクリーンな状態でソースコードを
$CUTTER_CLEAN_DIR
ディレクトリに 取得するために以下のコマンドを実行します。:
% git clone git@github.com:clear-code/cutter.git cutter.clean
この作業はリリース作業ごとに行います。
ソースコードをcloneした時点ではconfigureスクリプトが含まれておらず そのままmakeコマンドにてビルドすることができません。
Cutterの
$CUTTER_CLEAN_DIR
ディレクトリでautogen.shを以下のように実行します。:
% sh autogen.sh
このコマンドの実行により、configureスクリプトが生成されます。
Makefileを生成するためにconfigureスクリプトを実行します。
リリース用にビルドするためには以下のオプションを指定してconfigureを実行します。:
% ./configure --enable-gtk-doc --with-launchpad-uploader-pgp-key=(Launchpadに登録してある公開鍵の鍵ID)
configureを実行し、Makefileを生成した後に リリース日やバージョンの更新を行うためにmake update-latest-releaseを実行します。
make update-latest-release
コマンドでは
OLD_RELEASE_DATE
に前回のリリースの日付を、
NEW_RELEASE_DATE
に次回リリー スの日付を指定します。
1.2.1のリリースを行った際は以下のコマンドを実行しました。::
% make update-latest-release OLD_RELEASE=1.2.0 OLD_RELEASE_DATE=2011-12-31 NEW_RELEASE_DATE=2012-08-15
これにより、Webサイトのトップページのソース (index.html,index.html.ja)や パッケージのspecファイルなどの関連ファイルが更新されます。
前回リリース時からの変更点をNEWSおよびNEWS.jaへとまとめます。 ここでまとめた内容についてはリリースアナウンスにも使用します。
前回リリースからの変更履歴を参照するには以下のコマンドを実行します。:
% git log -p --reverse $(git tag | tail -1)..
ログを^commitで検索しながら、以下の基準を目安として変更点を追記してい きます。
含めるもの
ユーザへ影響するような変更
互換性がなくなるような変更
含めないもの
内部的な変更(変数名の変更やらリファクタリング)
ドキュメントの最新版と各国語版の内容を同期するために、 poファイルの更新を以下のコマンドにて実行します。:
% make update-po
make update-poを実行すると、各種poファイルが更新されます。
その後に更新した各種.poファイルを翻訳します。
翻訳結果をHTMLで確認するために、以下のコマンドを実行します。:
% make -C doc
コマンドの実行により、HTMLは以下の階層に生成されます。
$CUTTER_CLEAN_DIR/doc/reference/html
英語リファレンス
$CUTTER_CLEAN_DIR/doc/reference/ja/html
日本語リファレンス
確認が完了したら、翻訳済みpoファイルをコミットします。
リリース用のソースアーカイブファイルを作成するために 以下のコマンドを
$CUTTER_CLEAN_DIR
で実行します。:
% make dist % make dist-zip
これにより
$CUTTER_CLEAN_DIR/cutter-(バージョン).tar.gz
と
$CUTTER_CLEAN_DIR/cutter-(バージョン).zip
とが作成されます。
リリース用のアーカイブファイルができたので、 パッケージ化する作業を行います。
パッケージ化作業は以下の2種類を対象に行います。
Debian系(.deb)
Red Hat系(.rpm)
現在サポートされているのは以下の通りです。 UbuntuはPPAでサポートされているものを対象としています。
stretch i386/amd64
buster i386/amd64
xenial i386/amd64
bionic i386/amd64
disco i386/amd64
なお以下のコマンドの実行は
$CUTTER_CLEAN_DIR/packages/apt
以下で 行っているものとします。
UbuntuはLaunchpadを利用しているので後述します。
Ubuntu向けのパッケージのビルドはLaunchpadのPPAを利用しています。
なお以下のコマンドの実行は
$CUTTER_CLEAN_DIR/packages/ubuntu
以下で 行っているものとします。
% make upload
すると、ソースパッケージをPPAへとアップロードします。 あとはパッケージのビルドが終了するのを待ちます。
https://launchpad.net/~cutter-testing-framework/+archive/ubuntu/ppa
ビルドしたパッケージに対しリリース前の動作確認を行います。
Debian系もしくはRed Hat系の場合には本番環境へとアップロードする前に ローカルのaptないしyumのリポジトリを参照して正常に更新できることを確認します。
そのためには、リポジトリをwebサーバ経由で参照できるようにすることが 必要です。
また、osdn.netとディレクトリ階層を揃える必要があります。
リリースの際にはリリースアナウンスをメーリングリストへと流します。
NEWS,NEWS.jaにまとめておいた変更点を元にリリースアナウンスを作成します。
リリースアナウンスには以下を含めます。
インストール方法へのリンク
リリースのトピック紹介
リリース変更点へのリンク
リリース変更点(NEWS,NEWS.jaの内容)
リリースのトピック紹介では、これからCutterを使う人へアピールする点や 既存のバージョンを利用している人がアップグレードする際に必要な情報を提供します。
非互換な変更が含まれるのであれば、回避方法等の案内を載せることも重要です。
パッケージのインストール確認が完了したら、 アップロード作業を行います。
$CUTTER_CLEAN_DIR/packages/apt
ディレクトリで以下のコマンドを実行します。:
% make upload
$CUTTER_CLEAN_DIR/packages/yum
ディレクトリで以下のコマンドを実行します。:
% make upload
$CUTTER_CLEAN_DIR
ディレクトリで以下のコマンドを実行します。:
% make sign-archives % make release-official % make release-debian
osdn.netにtar.gzをアップロードしたあとに、最新版へのリンクを更新するには、 次のようにする。例: 1.2.3の場合
https://osdn.net/projects/cutter/releases/ にアクセスし、「優先ダウンロードファイルの編集」ボタンをクリックすると、 プラットフォームごとに優先してダウンロードさせるファイルを設定することができる。
Cutterにはユーザー向けに提供されているメーリングリストが2つあります。
あらかじめ用意しておいた、リリースアナウンス原稿を [ANN] Cutter (バージョン)という件名で投稿します。
cutter-users-en@lists.osdn.me 英語
cutter-users-ja@lists.osdn.me 日本語
リリースアナウンスまで終わるとリリース作業はひとまず終了し、 次期バージョンの開発が始まります。
そこで、次期リリースバージョンを更新します。
configure.acの以下の箇所を必要に応じて更新します。:
m4_define([cutter_version_major], [1]) m4_define([cutter_version_minor], [2]) m4_define([cutter_version_micro], [2]) m4_define([cutter_version], [cutter_version_major.cutter_version_minor.cutter_version_micro])