An open API service indexing awesome lists of open source software.

https://github.com/wraith13/solomon

Solomon is a build framework for Windows. Solomon automatically creates a variety of snapshot of the source code.
https://github.com/wraith13/solomon

Last synced: 5 months ago
JSON representation

Solomon is a build framework for Windows. Solomon automatically creates a variety of snapshot of the source code.

Awesome Lists containing this project

README

          

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■ solomon

このWindows環境用のビルドフレームワークはユーザーが記述・設定したコンパイル
およびテストを実行するバッチファイルをキックし、そのコンパイルおよびテスト
の結果別にソースコードのスナップショップを作成します。

その主眼は「最後に成功した時のソースコード」「最後に失敗した時のソースコー
ド」のスナップショットを確実に残すことで、「なぜうまくいかないのか」「なに
が問題だったのか」をこのスナップショットと最新のコードの差分を WinMerge な
どの比較ツールを用いて確認し問題を追跡し易くすることです。

また、これは常に最後にコンパイルおよびテストに成功したソースコードのバック
アップが常に手元に生の状態で残ることを意味し、ちょっとしたミスなどによる手
戻りも最小の範囲にとどめることができ、その修復作業も非常に容易且つ手軽な
ものとなることでしょう。

好みに応じて、ソースコードが更新されたら自動的にコンパイルおよびテストが
走るようにしたり、最終版だけなく履歴としてスナップショットを残すように
設定することなども可能です。

■solomonの想定ユーザー+要求スキル
・Windows上でソフトウェア開発を行う日本人のプログラマ。
・Windowsのcmdによるバッチファイルの作成・編集ができること。

■solomonの前提条件
・日本語版Windows環境であること。
 →cmdでUTF-8を使うのは問題がある為、多言語対応は放棄しました。
・対象となるプロジェクトがcmdからコンパイルおよびテストが実行できること。

■solomonを配置するパス
・C:\Windows や C:\Program Files を除く任意のディレクトリ
・システム全体で一つのコピーを利用することを前提としているがsolomonの対象
 となるプロジェクト毎に個別のコピーを利用する形でも構わない。
 ・その対象となるプロジェクトのディレクトリに配置して、そのディレクトリ
  ごとバージョン管理ツールに突っ込むのもアリ。
・ネットワーク上でも可。

■solomonが依存するプログラム
・cmd(Windows NTファミリーあれば標準搭載されている。)
・robocopy(Windows Vista以降であれば標準搭載されている。)
・wsh(Windows 98以降であれば標準搭載されている。)

■solomonが利用するプログラム
・7-zip
 → http://sevenzip.sourceforge.jp
 →zipファイルを作成する機能を使用する場合に必要になります。

■solomonと合わせて利用することが推奨されるプログラム
・WinMerge
 → http://winmerge.org/?lang=ja
 →ファイルやディレクトリの差分表示に使えます。
 →zipファイルの中身もディレクトリのように扱えそのまま差分表示できます。

■solomonが読み込むファイル・ディレクトリ
・solomon自身のディレクトリ
・対象のプロジェクトのディレクトリ

■solomonが書き込むファイル・ディレクトリ
・対象のプロジェクトのディレクトリ

■solomonの為にユーザーがしなければならないこと
・solomonを任意のディレクトリに配置( リムーバブルメディアやネットワーク上
 でもWindowsのファイルシステムとしてアクセスできる場所であればよい。 )
・solomon共通の設定
・対象のプロジェクト毎の設定

■solomonの稼働期間
・対象プロジェクトにコピーされた build.cmd およびその類の起動から、コンパ
 イル&テスト&スナップショットの作成が完了するまで。
・何らかの形で /auto オプション付きで起動された場合は、強制停止されるまで
 稼働し続けます。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■ 使い方

■準備
1..\cmd\template\solomon ディレクトリを target へコピー(※)
 ・コピー先でディレクトリ名を変えてもよい。
 ※ target はターゲットのプロジェクトのディレクトリ

2.target\solomon\conf\config.cmd の設定
 ・SOLOMON_MAIN_CMD の設定は必須。(MUST)
 ・環境(マシン)によって異なる設定は target\solomon\conf\config.%COMPUTERNAME%.cmd
  で記述するとよい。
  →そうすることで他のマシンの設定との衝突を気にせずにマシン固有の設定を
   ソースコードを管理してるリポジトリへ登録できます。

3.target\solomon\build\*.cmd の作成
 ・target\solomon\build\default.cmd を参考に。
  →このファイルはそのまま修正して使ってもいいですし、別に書き起こす場合
   は削除してください。

■実行
target\solomon\build.cmd を実行します。

...準備の3で用意したコンパイル&テストを実行するcmdが呼び出され、その
結果に応じたスナップショットが適宜作成されます。

target\solomon\build\*.cmd が複数ある場合、コマンドライン引数でその名前
(拡張子は含めない)を指定することで特定のビルドだけを実行することもでき
ます。(半角スペース区切りで複数指定可)
→この場合はスナップショットは作成されません。(本来、コンパイルが失敗した
 スナップショットとして残すべきものが、コンパイルが成功したスナップショット
 扱いになったりしてしまう為。)

■自動実行
target\solomon\auto.build.cmd を実行します。

...スナップショットを撮る対象のディレクトリ内(サブディレクトリも含む)の
ファイルが更新される度に自動的にコンパイル&テストを実行するcmdが呼び
出され、その結果に応じたスナップショットが適宜作成されます。

 → DIR コマンドの出力内容をベースに更新のチェックを行う都合上、前回のフ
  ァイル更新から1分以内で且つファイルサイズが変更されない更新の場合には
  更新を検出できずに別の更新があるまで待機状態なままになってしまうこと
  がある制限があります。

■履歴作成設定(推奨)
target\solomon\conf\config.cmd で SOLOMON_SNAPSHOT_HISTORY を TRUE に
設定すると、スナップショットが履歴が残されるようになります。

7-zip がインストールされている環境ならば SOLOMON_SNAPSHOT_HISTORY_DIR_FORMAT
を \YYYY\MM\DD\hhmmss.zip のように指定することで zip で圧縮して保存さ
れるようになります。

■バージョン管理ツール連携
コンパイル&テストの結果に応じたスナップショットの保存コマンドが指定さ
れる次の環境変数をいずれかのconfig.cmd 内で編集してバージョン管理ツール
へコミット等を行ってください。

・SOLOMON_MAKE_SNAPSHOT_MISSED_COMPILE_CMD
・SOLOMON_MAKE_SNAPSHOT_PASSED_COMPILE_CMD
・SOLOMON_MAKE_SNAPSHOT_MISSED_TEST_CMD
・SOLOMON_MAKE_SNAPSHOT_PASSED_TEST_CMD

→SOLOMON_NO_TEST が TRUE でない場合、 SOLOMON_MAKE_SNAPSHOT_PASSED_COMPILE_CMD
 は呼び出されません。代わりに SOLOMON_MAKE_SNAPSHOT_MISSED_TEST_CMD と
 SOLOMON_MAKE_SNAPSHOT_PASSED_TEST_CMD が呼び出されます。

■分割利用
プロジェクトの規模が大きな場合は、小分けにしてsolomonを利用することも検討
してみてください。その場合のオススメの構成は小分けにした部分では履歴を残し
つつ、全体のビルドに対しては一世代のスナップショットを残すだけという形に
なります。その構成であれば無駄にディスク容量を浪費せず且つ残すべき履歴は
しっかり残せて効果的です。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■ 構成

■.\readme.txt
 →このファイルです。

■.\history.txt
 →リリース用パッケージを作成するバッチファイル。

■.\LICENSE_1_0.txt
 →このソフトウェアで採用しているライセンス

■.\make.release.package.cmd
 →リリース用パッケージを作成するバッチファイル。
 ※このファイル自体はリリース用パッケージには含まれません。

■.\cmd\appendix\make.history.cmd
 →おまけの機能です。詳細は同ファイル内のコメントを参照してください。

■.\cmd\main.cmd
 →solomonのメインコードですが、直接呼び出すものではなく、 target ディレク
  トリの枝にコピーされた solomon\build.cmd からキックさる形での利用となり
  ます。

■.\cmd\conf\config.cmd
 →solomonで共通の設定を記述。

■.\cmd\conf\config.%COMPUTERNAME%.cmd
 →solomonで共通の設定(マシン固有)を記述。

■.\cmd\libcmd ディレクトリ
 →solomonに限らず汎用的に使えるcmdライブラリ

■.\cmd\subcmd\*.cmd
 →solomon用のサブcmd群。

■.\cmd\template\solomon ディレクトリ
 →セットアップ時、targetディレクトリへ手動で組み込むディレクトリ。

■target ディレクトリ
 →スナップショットを残す対象のディレクトリ。

■target\conf\config.cmd
 →プロジェクト固有の設定を記述。

■target\conf\config.%COMPUTERNAME%.cmd
 →プロジェクト固有の設定(マシン固有)を記述。

■.\sample ディレクトリ
 →サンプルプロジェクト。

■.\test ディレクトリ
 →solomon自体のテストを行う為のディレクトリ。
 ※リリース用パッケージには含まれません。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■ 環境変数について

solomon が独自に使用する環境変数の名前は必ず SOLOMON_ あるいは LIBCMD_ と
いうプレフィックスで始まります。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■ ライセンス

Boost Software License - Version 1.0 を採用しています。
詳細は .\LICENSE_1_0.txt を参照してください。

日本語参考訳: http://hamigaki.sourceforge.jp/doc/html/license.html

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■ バージョン採番ルール

■バージョン表記のフォーマット: A.BB.CCC

■メジャーバージョン番号(A):
明らかな非互換の変更が行われた際にインクリメント。
桁数は不定。

■マイナーバージョン番号(BB):
機能追加や上位互換と判断できる仕様変更が行われた際にインクリメント。
桁数は2桁固定。

■ビルド番号(CCC):
バグフィックスや仕様変更というほどでもない微細な修正が行われた際にインクリ
メント。
桁数は3桁固定。

■細則
・各番号は0始まりとする。
・固定桁に足りない場合は先頭を0埋めする。
・番号が固定桁で足りなくなった場合は、上位の番号をインクリメントする。
・上位の番号がインクリメントされた場合、下位の番号は0にリセットする。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■ End Of Document