Jenkins/Maven プラグインを使用して、アプリケーションをテストするためのスキーマ名を生成するにはどうすればよいですか。このスキーマ名は一意である必要があります (DB には存在しません - Oracle/SQL)。Jenkins 固有の文字列ジェネレーターはありますか?
1 に答える
Execute Shell
コマンドを使用している場合は、BUILD_ID
とBUILD_NUMBER
を とともに使用できますBUILD_TAG
。はBUILD_TAG
Jenkins ビルド間で完全に一意になりますが (それはjenkins-${JOB_NAME}-${BUILD_NUMBER}
です)、長すぎるか、ジョブ名によっては、データベースに不適切な文字が含まれている可能性があります。
ただし、これらの変数を使用して、特定の実行からのデータベース出力を確認したり、特定のジョブの前にあったすべてのデータベースをクリーンアップしたりするために後で使用できる、一意で識別可能な名前を作成できます。
を使用していない場合Execute Shell
、Inject environment variables to the build process
オプションはこれらの同じ変数をビルド環境に直接配置し、コードからアクセスできるようにします (環境変数にアクセスできると仮定します)。
データベースの命名
Oracleの場合、データベース名はまだ8文字に制限されているようです(私が見つけた最後の参照の時点で)。そのため、短い静的文字列をBUILD_NUMBER
追加して使用する必要がある可能性があります。これは非常に簡単に作成できますシェル。
が大きくなりすぎるのが心配な場合はBUILD_NUMBER
、16 進数でエンコードするなどの方法でいつでもスペースを減らすことができます (同じ数字に使用される文字を減らし、ASCII で有効であることが保証されている文字を引き続き使用します)。
それが不十分な場合は、ASCII で格納する必要がある値に base64 エンコーディングを使用しましたが、格納スペースに対して大きすぎました。たとえば、3 バイナリ バイトを取得して base64 にエンコードすると、データベース名の半分として使用できる 4 つの ASCII バイトが得られます。範囲は約 2,400 万のビルドで十分であり、デコードは簡単です。もちろん、エンコードを行うには、最初に数値をバイナリに変換する必要があります (数値の ASCII バージョンの base64 は役に立ちません)。