アーティファクトの保存にBitbucket-serverを使用しない理由は何ですか?


10

私はまったく新しいプロジェクトを立ち上げる会社と協力しており、私たちは何のためにどのツールを使用するかについて話しています。構築されたアーティファクト(この場合はAPK)を保存するためのArtifactoryまたはNexusについて話していましたが、ソフトウェアで使用するのと同じようにBitbucketを使用できない理由を尋ね、インストールと維持に必要なツールの数を減らしました。

私の最初の応答は、「ソースはソースリポジトリに入れられ、アーティファクトはアーティファクトリポジトリに入る」でしたが、それは実際にはなぜか、またはなぜかという答えではありません。実際、グーグルで回る理由もありませんでした。

これに追加:この製品は規制された業界向けです。つまり、構築されたアーティファクトの完全なバージョン管理された監査可能な記録が必要です。これが、私たちがこれを調査している理由の1つです。また、いくつかのコメントで述べたように、ここで追加しますが、Bitbucketは一般公開されていないプライベートGCPにインストールするため、他の人がアクセスする心配はありません。

これへの入力はありますか?それらをBitbucketに保存すると、後で私たちに噛みつくものはありますか?

回答:


11

大きなバイナリをgitリポジトリに保存しない理由:

  • リポジトリを複製すると、デフォルトでこれらのバイナリがすべてダウンロードされます。バイナリは、定期的に構築された場合、消費する傾向がある大規模なソースコードに比べて、ストレージの量を- gitそれらを圧縮し、または計算デルタ、そのサイズを小さくすることができません。
  • git履歴が失われないようにするために非常に長い時間をref費やします。履歴の一部であるもの(ブランチまたはタグ)を削除することはありません。また、後でスペースが足りなくなったために古くて役に立たないバイナリを削除することを決定した場合、不可能ではないにしても、非常に難しいことがわかります。
  • 適切なアーティファクトストアの1つのポイントは、古くなった、または侵害されたパーツを段階的に廃止するのに役立つことです。gitあなたのために実際にそれを行うことはできません-あなたはそのためにあなた自身のツールを書かなければならないでしょう-そしてあなたは歴史の古いバージョンを取り除くことは決してないでしょう。
  • 「コミット」の概念は、バイナリには実際には適用されません。「upload」や「download」などの操作が必要です。これらの操作は、ソフトウェアのビルドプロセス(つまり、bundlerRubyの世界やmavenJava)に定期的に関与しているためです。これらのビルダーは、アーティファクトリポジトリからサードパーティライブラリを簡単にフェッチする方法と、新しいバージョンをアップロードする方法を知っています。gitダウンロード用のリポジトリで動作することを確信している可能性があり ますgitが、バージョン情報がないため、独自のツールを使用するか、バイナリを手動で見つけるためのコミットを指定するか、使用中のすべてのバイナリをローカルでチェックアウトする必要があります。また、gitリポジトリにアップロードする場合も、独自のツールを使用します(偽のコミットも作成します)。

全体として、それを使用gitするのは間違ったツールです。あなたの同僚は、ネクサスのようなさらに別の複雑なツールを追加することを恐れている場合には、少なくとも使用するように説得するシンプルなツールの代わりに、gitいくつかの任意のように- (s)ftp/ scpとVMのどこかでリポジトリ、httpsシンプルなウェブサーバ経由でのアクセスを。

を使用する必要がある場合gitは、少なくともビルドバイナリがソースコードと一緒にコミットされていないことを確認してください。孤立したブランチを作成する方法については、この古い回答をご覧ください。これらは少なくとも後で削除でき、バイナリ自体はガベージコレクションによって削除されます。すべてのクライアントが常にすべてをダウンロードする必要があるわけではありません。


質問を読んだ後、元の質問に何を追加したかを確認してください。構築されたすべてのアーティファクトの完全な記録が必要です。「Gitにはバージョン情報がありません」というあなたの声明に興味があります。それがgitが行うことであり、ビルドされたアーティファクトのバージョン管理はまさに私たちが必要としていることです。他のビルドに含めるライブラリではなくAPKもビルドしています。WRTはソースとバイナリを一緒にチェックします。はい、バイナリには別のリポジトリを使用することを期待しています。ありがとう。
dj_segfault 2018年

2
セマンティクスの意味での「バージョン情報」を意味しました-アーティファクトリポジトリは、1つのアーティファクト(名前)が複数のバージョンを持つことができることを知っています。「最新」のものをあなたに与えてください。あなたのコメントから、異なるリポジトリを使用しているという事実は重要であり、同様に質問に入ります。それは全体の見方を変えるでしょう。私の答えは、あなたの同僚がビルドバイナリソースコードと一緒にコミットしたいと思っていることを想定していました。
AnoE 2018年

5

Gitリポジトリは(Bitbucketでホストされているかどうかにかかわらず)アーティファクトリポジトリとして使用できますが、次の点に注意する必要があります。

  • Gitはもともと(大規模な)バイナリデータ用ではなく、ソースコードのバージョン管理システムとして作成されたものであり、これが依然として主な関心事です。Git LFSなど、Gitで大きなファイルを効率的に操作できる拡張機能がありますが、それでもGitのコアには組み込まれていません。
  • 適切なアーティファクトリポジトリには、Gitベースのサービスでは簡単に提供できない機能があります。たとえば、おそらく古いスナップショットアーティファクトを削除したい場合、Gitの操作は設計されていませんが、アーティファクトリポジトリのコア機能は何ですか。そのような機能のいくつかは、「アーティファクトリポジトリとは」という質問への回答で説明されています。

したがって、Git / Bitbucketをアーティファクトリポジトリとして使用できますが、それはドライバーの代わりにハンマーでネジを動かすようなものです。


0

Bitbucketのリポジトリ内にapkファイルを保存する場合は、gitまたはcurlを使用してクローンを作成する必要があります。プライベートリポジトリの場合、アクセス、サイズ制限などが必要です。

ソフトウェアリポジトリは、バイナリファイルを格納する方が快適です。mavenの独自のミラーを作成できます。


興味深い角度。たまたま、このアプリケーションは、アプリストアからではなく、常にサイドロードされるAndroidアプリです。プライベートであるレポは私たちにとってプラスです。他のビルドに含まれるライブラリについて話している場合、これはすべて問題になることに同意します。ご入力いただきありがとうございます。
dj_segfault 2018年

0

bitbucketパイプラインを使用してダウンロードセクションにデプロイし、アーティファクトをそこに保持できます。ここにそのドキュメントの例があります


私がいることを発見し、それは素晴らしいアイデアだと思ったが、私はTHINK(決定的と言うドキュメントを発見していない)のダウンロードは唯一彼らのクラウド版です。環境にBitbucketをインストールしています。それでも機能しますか?
dj_segfault 2018年

@ dj_segfault、Bitbucket Pipelines(したがっておそらくダウンロードセクションも)は(現在は?)「クラウドのみ」です。アトラシアンのサポートフォーラムおよびバグトラッカーのBSERV-9245でこの質問を参照してください。
siegi 2018年

0

他の人が言ったように、バイナリをgitにチェックインしないでしょう。ただし、Bitbucketは、リポジトリごとに個別の「ダウンロード」領域を提供します。これは別の領域であり、gitリポジトリの一部ではありません。Bitbucket Pipelinesを使用している場合、ワークフローに適していれば、ダウンロード領域へのデプロイを自動化することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.