タグ付けされた質問 「packages」

3
マルチリポジトリ環境でのパッケージおよびバージョン戦略
私たちは、独自のgitリポジトリを管理する複数のチームを持つ小規模企業です。これはWebプラットフォームであり、各チームの成果物は夜間テストのために1日の終わりに展開されます。バージョン管理とパッケージングに関するプロセスを形式化しようとしています。 すべてのチームには、日々の開発を行うマスターブランチがあります。各チームの品質保証メンバーは、チームの変更による成果物を、すべてのコンポーネントがシェフによって結合されるテストベッドに展開することを望んでいます。アーティファクトはtarballですが、それらをRPMに変換して、バージョンについて正しく考え、推論できるようにします。 リリースプロセスには、各gitリポジトリの開発ブランチ(ほとんどの場合マスター)からリリースブランチを切り離すことが含まれます。これは、成果物のセットでテストとサインオフを実行する品質保証に与えられます。 たとえば、これは関連するリリースブランチを持つ典型的なgitリポジトリです。 0-0-0-0-0-0-0-0-0-0 (master) | | 0 0 (rel-1) | 0 (rel-2) 開発ブランチから来るパッケージのバージョン管理を実行するスキームを見つけようとして立ち往生しています。各リポジトリのmasterブランチに過度にタグを付けたり、タグをリリースブランチのみに制限したりするのは望ましくありません。ただし、標準のyum / rpmセマンティクスを使用して、テストマシンにデプロイされたパッケージを照会できる必要があります。masterブランチにタグがない場合、開発バージョンはどのようになりますか?私git describeはビルドバージョンの有用な表現を提供できることを理解していますが、ブランチ上のさまざまなリリースポイントがタグ付けされている場合はうまく機能します。 EDIT1:@ Urban48の回答に応えて リリースプロセスについてもう少し説明する必要があると考えました。この議論のためにmaster、すべてのリポジトリにブランチがあると仮定しましょう。このmasterブランチは開発ブランチと見なされ、CI-CD対応の自動化されたQA環境に展開されます。これは、マスターの安定性を確保するために夜間テストのサブセットが実行される場所です。リリースブランチをカットする前に、このジョブのパイプラインを確認します。リリースブランチは短命です。リリースブランチを(安定したマスターから)カットした後、完全なリグレッションが実行され、修正が行われ、運用環境に展開されたとします。これには約1週間かかります。ほぼ2週間ごとに実稼働環境にリリースします。 機能ブランチは常にマスターから切り離され、CI-CD安定性チェックを受けるマスターとマージする前に、ある程度の開発者テストを受けます。 修正プログラムは(リリースブランチからカットされた)修正プログラムブランチで作成され、本番環境への影響を最小限に抑えて展開されます。 リリースおよびホットフィックスブランチのバージョン管理戦略は、semverに従います。QAサイクル中のリリースブランチはv2.0.0-rc1、v2.0.0-rc2などのバージョンを通過し、最終的にQAサインオフがになりv2.0.0ます。 バージョンがになるリリースブランチ(およびマスター)にマージされる小さな機能のドットリリースを行うことがありますv2.1.0。また、ホットフィックスはv2.1.1パターンを想定しています。 ただし、問題はこれらのブランチをバージョン管理することではありません。このバージョン管理スキームをまったく変更しないことをお勧めします。唯一の変更点は、開発ブランチ、つまり 主人。CI-CD環境で、以前のリリースから実稼働環境に存在するバージョンを確実に示す方法を教えてください。これは、理想的にはスマートgitタグ付けによって行われますが、masterブランチに過度にタグ付けしないものが推奨されます。

2
Javaコレクション(java.util)のパッケージ構造-Iterableがjava.langにあるのはなぜですか?
以下の図のように、interfaceを除いてIterable、残りのすべての構成要素(interface / class / abstract class)は同じパッケージにありますjava.util パッケージにIterable座っているのはなぜjava.langですか? 注:意図は、Javaプログラミングのパッケージングの側面を理解することです。


1
プログラミングにおける「解決」とはどういう意味ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 Resolve依存関係の挿入(インターフェイスへの実装の解決)、パッケージマネージャー(例:パッケージの依存関係の解決)、Web(例:ホスト名の解決)で、単語が使用される多くの場所で見ます。 では、コードのロジックを特別なものにして、誰かResolveが単純なConvert、Transformまたはさらには単語を選択するようにするのはGetなぜですか?

2
今日、クライアント側のJavascriptライブラリをモジュール化してパッケージ化する方法は?
私は最新のクライアントサイドJSエコシステムに追いつき、CommonJSとAMD(関連ツール-browserify、requirejs、onejs、jam、その他多数)について調べています。Javascriptライブラリを作成する場合、最も広くアクセスできるようにモジュール化/パッケージ化するにはどうすればよいですか(理想的には、CommonJS、AMD、および特にどちらにも誓わないユーザーが)。 jQueryのような人気のあるライブラリは、それ自体を構築するために旧式のファイル連結を使用しexports、グローバルコンテキストに書き込むべきかグローバルコンテキストに書き込むべきかを動的に検出するようです。私は現在同じことをしていますが、主な欠点は(jQueryとは異なり)いくつかのライブラリに依存している場合、推移的なセットを手動で事前に含めるようにユーザーに要求する必要がないことです。(ただし、現在は2つの依存関係しかありません。)そしてもちろん、グローバルな名前空間の汚染。 それとも、コンテキストごとにライブラリの複数のバージョンを生成するのが最もクリーンですか? パッケージングとパブリッシングについても考えています。いくつかのシステムがありますが、主なものはバウアーであり、フェッチするだけなので対処が簡単です。ただし、コンポーネント(CommonJSが必要)のような他のパッケージシステムもターゲットにすべきかどうか疑問に思っています。 他に知っておくべき関連する側面はありますか?これらすべてについて従うべき良いサンプルプロジェクトはありますか?

2
循環パッケージの依存関係を解決する方法
ほとんどのクラスが1つのパッケージに配置されている大規模なコードベースをリファクタリングしています。モジュール性を高めるために、各機能のサブパッケージを作成しています。 パッケージ依存関係グラフにはループがあってはならないことをどこかで覚えていましたが、次の問題を解決する方法がわかりません:FigureパッケージfigureにLayoutあり、パッケージlayoutにLayoutあり、レイアウトを実行するために図が必要なので、パッケージlayoutはパッケージに依存しますfigure。しかし、一方で、a FigureはFigure、その中に他のを含むことができ、独自のを持ちLayout、packageをpackageにfigure依存させますlayout。 実装するContainerインターフェイスを作成FigureしてLayoutパッケージに入れるなど、いくつかのソリューションがあります。これは良い解決策ですか?他の可能性はありますか? ありがとう

1
テストパッケージの命名規則
実際には、テストするパッケージと同じようにテストパッケージに名前を付けています。したがって、最終的には次のような構造になります。 src/main/java com.hello.world helloWorld.java src/test/java com.hello.world helloWorldTest.java パッケージ名を指定するだけでは「テスト」と「テストする」を区別できないので、私は常にこれがかなり賢いとは思えませんでした。一方、これがどういうわけか問題になるケースは、実際には見つかりませんでした。(テストケースとソースクラスの)両方のパッケージに同じ命名規則を使用することは良い習慣ですか?そうでない場合、より良いアプローチは何でしょうか?
11 naming  packages 

2
パッケージ(gems、eggなど)を使用して分離されたアーキテクチャを作成する
主な問題 最も近代的なプログラミングプラットフォームはパッケージ管理のために持っている良いサポートを見て(と思うgem、npm、pipなど、)、それが促進し、疎結合アーキテクチャを作成するように、内部で開発されたパッケージで構成されたアプリケーションやシステムを設計する意味がありませんか? 例 この例としては、データベースアクセス用のパッケージの作成や、システムの認証やその他のコンポーネント用のパッケージの作成があります。もちろん、これらも外部パッケージを使用します。次に、システムはこれらのパッケージをインポートして使用します-独自のコードベースにコードを含める代わりに。 考慮事項 私には、これはコードのデカップリングを促進し、保守性を支援するように思われます。ほとんどWebベースのデスクトップアプリケーションのようなものです(更新はほとんど自動的に適用され、単一のコードベースは単一の機能などに適用されます)。 これは合理的で健全なデザインコンセプトのように見えますか?これは、今日のアプリケーションを構造化する標準的な方法として実際に使用されていますか?

2
Javaで書かれたAPIで内部クラスをカプセル化する方法は?
ライブラリを書かなければならない。当然、非常に小さなAPI(必要に応じてできるだけ広い)のみを使用する必要があります。ライブラリの内部はやや複雑です。したがって、構造化が必要です。 構造化について、私は現在2つの方法を考えています。 1.パッケージを使用します。 長所:ライブラリはきちんと構成できます。その場所のすべて。 短所:パッケージの境界線を介したクラスの使用にはパブリッククラスが必要であり、したがってライブラリ全体のAPIを拡張します。 2.すべて1つのパッケージで静的内部クラスを使用します。 長所:必要なパブリッククラス(クラス、メソッドなど)はごくわずかです。 短所:クラスは、それらを構造化するためにのみ非表示になります。これは、非常に多くの静的内部クラスが使用される非常に数少ないユースケースの1つです。開発者はそれに慣れておらず、見落とす可能性があります。 よく構造化されたライブラリで小さなAPIを実現するより良い方法はありますか? 編集:言及するのを忘れていました:Androidライブラリ用です。したがって、java9はありません。

1
Pythonプログラムをパッケージ化するための良い習慣
私は、個人的なプロジェクトとプロのプロジェクトの両方のコンテキストで、Pythonをしばらく使用しています。 最近私に起こったことの1つは、Pythonプログラムをデプロイするための良い方法を考えたことがないということです。基本的に、それはほとんどがスクリプトの束であるため、私は通常、それらをデプロイしたいマシンにコピーして、出来上がりです! しかし、Pythonプロジェクトをデプロイする方法については、いくつかの良い習慣があるはずだと思います。Pythonの卵について聞いたことがありますが、Pythonの卵が十分に精通していないため、それが適切な選択肢かどうかはわかりません。または、コアモジュールスクリプトを実行するための多数のシェルスクリプトを含む単純な古いtarball? 基本的に、バージョンの追跡が簡単でなく、面倒なので、ファイルをあちこちにコピーするだけでなく、洗練されたエレガントな自己完結型のデプロイメントを実行できるようにしたいと考えています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.