0

Jenkins/Maven プラグインを使用して、アプリケーションをテストするためのスキーマ名を生成するにはどうすればよいですか。このスキーマ名は一意である必要があります (DB には存在しません - Oracle/SQL)。Jenkins 固有の文字列ジェネレーターはありますか?

4

1 に答える 1

2

Execute Shellコマンドを使用している場合は、BUILD_IDBUILD_NUMBERを とともに使用できますBUILD_TAG。はBUILD_TAGJenkins ビルド間で完全に一意になりますが (それはjenkins-${JOB_NAME}-${BUILD_NUMBER}です)、長すぎるか、ジョブ名によっては、データベースに不適切な文字が含まれている可能性があります。

ただし、これらの変数を使用して、特定の実行からのデータベース出力を確認したり、特定のジョブの前にあったすべてのデータベースをクリーンアップしたりするために後で使用できる、一意で識別可能な名前を作成できます。

を使用していない場合Execute ShellInject environment variables to the build processオプションはこれらの同じ変数をビルド環境に直接配置し、コードからアクセスできるようにします (環境変数にアクセスできると仮定します)。

データベースの命名

Oracleの場合、データベース名はまだ8文字に制限されているようです(私が見つけた最後の参照の時点で)。そのため、短い静的文字列をBUILD_NUMBER追加して使用する必要がある可能性があります。これは非常に簡単に作成できますシェル。

が大きくなりすぎるのが心配な場合はBUILD_NUMBER、16 進数でエンコードするなどの方法でいつでもスペースを減らすことができます (同じ数字に使用される文字を減らし、ASCII で有効であることが保証されている文字を引き続き使用します)。

それが不十分な場合は、ASCII で格納する必要がある値に base64 エンコーディングを使用しましたが、格納スペースに対して大きすぎました。たとえば、3 バイナリ バイトを取得して base64 にエンコードすると、データベース名の半分として使用できる 4 つの ASCII バイトが得られます。範囲は約 2,400 万のビルドで十分であり、デコードは簡単です。もちろん、エンコードを行うには、最初に数値をバイナリに変換する必要があります (数値の ASCII バージョンの base64 は役に立ちません)。

于 2013-05-09T10:28:26.410 に答える