リーンソフトウェア(Webアプリケーション)リリースエンジニアリング

StackOverflow https://stackoverflow.com/questions/250730

  •  05-07-2019
  •  | 
  •  

質問

社内ソフトウェアのリリース方法を再編成したいと考えています。すべてのコード(PHP Webアプリ、一部のJavaアプリ、Perlスクリプト)はSubversionリポジトリにチェックインされますが、ブランチやタグはなく、すべてがトランクにチェックインされます(アプリあたり約1〜3開発者のみ)。実稼働Linuxサーバーでは、ソフトウェアは動作中のsvnコピーから直接実行されます(実際、ほとんどの変更はそこでも発生します)。

小さなアプリがたくさんあり、実行中のシステムに小さな変更を頻繁にリリースするので、リリースエンジニアリングを行い、この混乱をクリーンアップする非常に無駄のない、または透過的な方法を探しています。

そのような異種言語環境(言語的に)でそうするのに役立つツールはありますか? それとも、適切な方法でこれを行う方法を誰かが考えていますか?

それ以外の場合、トランクからSubversionタグを自動的に作成し、対応するタグを本番サーバーにチェックアウトするリリース(シェル)スクリプトを書くことを考えました。しかし、それは私にとってもちょっとハックっぽいですね。

ありがとう、

Haes。

役に立ちましたか?

解決

継続的インテグレーションは間違いなく進むべき道です-どんなCI(ミニマリストのバッチファイルであっても)はどれよりも優れています-しかし、それはあなたが持っているポリシーと同じくらい良いでしょう。ファイルは実際には「バイナリ」または「配布可能」になるわけではないため、リリースをマークするにはリポジトリにタグを付けるか、Subversionのリビジョン番号をどこかに格納するだけで済みます。必要な重要なポリシーは、必要なときにいつでもすべてのリリースを再構築できることです。したがって、現在のリリースと以前のリリースを比較したり、何か問題が発生した場合は古いリリースに戻ることができます。 svnでタグを作成する「オーバーヘッド」を心配しないでください-これは非常に効率的です。

subversionタグを実行するリリーススクリプトは問題ありません。 Subversionチェックインでプロセスを自動的に開始し、それが適切かどうかを判断する自動テストを実行できるため、CI実装(異機種混在の作業には理想的であるため、CruiseControlをお勧めしますが、異機種混在には多少の構成オーバーヘッドが必要です)タグ付けに十分かどうか。

絶対にリリースサーバーに自動展開しないでください。 「ステージングエリア」(「ナイトリービルド」、「ベータテスト」など)の方が良いでしょう。実稼働サーバーに展開するのに十分であると判断する前に、ユーザーにそれをバタンとさせてください。また、以前のバージョンにロールバックできる代わりにポリシーがある限り、不適切なロールアウトの可能性を軽減しました。

実稼働サーバーへの自動チェックアウトは唯一の「ハッキング」部分です。自動化されたチェックアウト、テスト、タグ、ベータ展開は十分に巧妙です。ただし、本番環境への展開には簡単なボタンは使用できません。

他のヒント

タグとブランチを使用します。開発サイクルの一部にします。その「stable-1.0」を更新すると、ブランチ、変更をテストし、「release-1.0.5」というタグを付けて、「svn switch」を行うだけです。サーバー上の新しいタグに。テストしても機能しませんでしたか?スイッチバックして、何が間違っているかを見つけます。

しかし、少なくともバージョン1.5より前のバージョンでは、Subversionでの分岐が苦痛になる場合があります。あなたまたはあなたの開発者がブランチを経験していない場合、最初に少しの手間やミスを期待してください。ただし、コミットしている限り、コードが失われることはありません(最悪の場合、マージが困難です)。

開発者は本当に分岐の使用方法を学ぶ必要があります。 (リリースエンジニアリングだけでなく)さまざまな目的に非常に役立ちます。

運用サーバーでコードを自動的に切り替えるしない。誰かが誤って間違ったボタンを押す可能性があります。生産の更新は常に注意して行う必要があります。新しいタグを追加するためのスクリプトは、単純であるため、私見では不要ですが、マイレージは異なる場合があります。

最後に、実稼働サーバーで誰にも変更を許可しないでください。競合が発生する可能性があり、それらの解決には時間がかかる傾向があります。言うまでもなく、それは異なるワークステーションで特定のリリースを再現する能力を破壊します(ここでうまく動作します!なぜサーバー上ではありませんか?)。

一部の継続的インテグレーションサーバーはこの種のことを行います。たとえば、 Hudson にはSubversion統合があります。タグ付け、テストの実行、デプロイが可能です。

私はハドソンを使用します。 svnからの取得とタグ付け(sblundyを参照)に加えて、適切なプラグイン。 f.ex.、" promote&quotへのプラグインを試すことができます。 ; プロダクションにデプロイするビルド。プロモートされたビルド自体のリストと、さまざまなバージョンの変更/コミットログの両方を保持します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top