2

CloudBees Jenkins サービスを使用して、SBT ベースの scala プロジェクトの毎晩のスナップショットを作成し、Sonatype OSS Maven リポジトリに公開したいと考えています。SBT には 、発行資格情報をビルドに提供する2 つの方法があります。1 つは資格情報を .sbt ファイル (暗号化されていない、ナッチ) にインラインで保持し、もう 1 つは外部プロパティ ファイルへのハードコードされたパスを使用します (悲しいことに、暗号化されていません)。

CloudBees には、エージェントを構築するための構成ファイルを提供するメカニズムがありますが、この場所へのパスを自分の にハード コードしたくありません。また、SBT にコマンド ラインからファイルbuild.sbtを読み取るように指示する方法も見つかりません。一番近いのはシステム プロパティ.sbtを設定することでしたが、残念ながらこれは失敗しました。構成ファイルの場所が読み取り専用でマウントされており、SBT がコンパイル済みのクラス ファイルにこの場所を使用しているためです。sbt.global.base

Damien Lecanは、一連のファイルをビルド実行プログラムのディレクトリにコピーするビルド前のスクリプトを実行することで、この問題を巧妙に回避する方法を考え出しました。この解決策は受け入れられますが、ビルドが一時的な状態に依存するようになり、別の潜在的な障害点が追加されるため、不快です。.sbt$HOME/.sbt

ビルド時に読み取り専用のプライベート認証情報にアクセスできる SBT プロジェクトを公開するにはどうすればよいですか?

4

1 に答える 1

2

SBT には、任意の .sbt ファイルをビルドに追加する方法がないようです。ただし、この setコマンドを使用すると、ユーザーはビルド時に設定を変更でき、このコマンドは他のコマンドと同様にコマンド ラインで使用できます。

これは、プライベート マウントからセキュリティ資格情報をロードするための外部ファイルを提供するために、Credentialsオブジェクトが参照を受け入れることができるという事実と組み合わせることができます。File

CloudBees プライベート WebDAV リポジトリで、資格情報プロパティ ファイルを任意の場所 ( など/private/sbt/.credentials) に追加します。Jenkins ジョブ構成で、「Build using sbt」セクションの「Actions」フィールドを次のように設定します。

'set credentials += Credentials(file("/private/myproject/sbt/.credentials"))' publish

私のビルドではclean update "+ test" "+ publish"、クリーンな環境を確保し、クロスコンパイルされたすべてのビルドがリポジトリに転送される前にテストに合格することを確認します。

于 2013-04-13T19:16:53.230 に答える