8

ビルドを開始しているので、トリガーしているビルドのビルドの説明を設定しようとしていますが、今のところ運がありません。

私は解決策( JenkinsリモートAPIによってトリガーされたビルドのページにテキストを追加する)に出くわし、このように動作するようになりました(最初のコマンドはビルドを開始し、2番目のコマンドは最後の説明を設定します建てる):

curl -v -X POST "http://[myServer]/job/[jobName]/build"
curl -v -X POST "http://[myServer]/job/[jobName/lastBuild/submitDescription" --data-urlencode "description=test description"

ただし、問題は、開始したばかりのビルドがキューに入れられた/すぐに開始されなかった場合、「lastBuild」は開始したばかりのビルドではなく、その前のビルド (まだビルド中) を参照することです。

だから私はこのようなことを試しました:

payload='json={""description"":""test description""}'
curl -v -X POST -H "Content-Type: application/json" -d $payload "http://[myServer]/job/[jobName]/build"

しかし、実際には説明を設定しません。

これを達成する方法はありますか?

私が見つけた他の解決策ですが、私はあまり満足していません:

  • Jenkins のビルド名と説明を Javaの API で変更する - これは「ポスト トリガー ソリューション」でもあり、後で説明を設定するのと同じように確実に機能しません。
  • ビルドの Jenkins の説明を変更する- チェックをビルドして、空の場合にのみ説明を変更してオーバーライドしないようにすることができると思いますが、それはかなり複雑に思えます。これにはもっと簡単な解決策が必要だと思いますよね?
4

5 に答える 5

3

ビルドが開始したらすぐにビルドの説明を設定するという同じニーズがありました。Build Description Setterプラグインは、ビルド後のアクションとしてアクティブ化されますが、これは私には遅すぎる
ことに注意してください。 私がそれを解決した方法は、ジョブ構成と Python スクリプトを少し変更することです (ただし、どの言語でもかまいません)。

  • ジョブ構成に UUID パラメーターを追加する
  • 送信して説明を設定するスクリプトを作成しました

スクリプトは次のように実行します。

  1. ビルドを送信するときは、uuid 値 (一意ですよね?) を生成し、UUID パラメーターを入力します。
  2. Jenkins ジョブをポーリングし (REST API を介して JSON を取得)、実行中のすべてのビルドをループし、(UUID の既知の値を介して) 自分のものを見つけます。ポーリングをタイムアウトで制限して、永久にハングしないようにします
  3. Jenkins Java CLI を使用して説明を設定します (コマンド ' set-build-description ')

ビルドがキューに入れられている場合 (無料のエグゼキューターが利用できない場合) と、上記で設定したタイムアウトが期限切れになる場合を除いて、常に機能します。私にできることは何もありません。

于 2016-04-11T11:31:45.063 に答える
0

Jenkins UI の使用に興味がある方のために、私は次のことを試みています。

  1. https://wiki.jenkins-ci.org/display/JENKINS/Build+Name+Setter+Plugin
  2. https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Postbuild+Plugin

Postbuild プラグインははるかに強力ですが、Groovy の調整と perms が必要です。

于 2016-01-06T01:11:19.703 に答える
-4

私のダウンロード:

String urlDownload = "https://dl.dropbox.com/s/ex4clsfmiu142dy/test.zip?token_hash=AAGD-XcBL8C3flflkmxjbzdr7_2W_i6CZ_3rM5zQpUCYaw&dl=1";     
DownloadManager.Request request = new  DownloadManager.Request(Uri.parse(urlDownload)); 
request.setDescription("Testando"); request.setTitle("Download"); 
request.allowScanningByMediaScanner(); 
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "teste.zip"); 
final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 
final long downloadId = manager.enqueue(request); 
final ProgressBar mProgressBar = (ProgressBar) findViewById(R.id.progressBar1); 

new Thread(new Runnable() { 

    @Override 
    public void run() { 
        boolean downloading = true; 
        while (downloading) { 
            DownloadManager.Query q = new DownloadManager.Query(); 
            q.setFilterById(downloadId); 
            Cursor cursor = manager.query(q); 
            cursor.moveToFirst(); 
            int bytes_downloaded = cursor.getInt(cursor .getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)); 
            int bytes_total = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)); 
            if (cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_SUCCESSFUL) { 
                downloading = false; 
            } 
            final double dl_progress = (bytes_downloaded / bytes_total) * 100; 
            runOnUiThread(new Runnable() { 
                @Override 
                public void run() {
                    mProgressBar.setProgress((int) dl_progress); 
                } 
            }); 
            Log.d(Constants.MAIN_VIEW_ACTIVITY, statusMessage(cursor)); 
            cursor.close(); 
        } 
    } 
}).start();

私のstatusMessageメソッド:

private String statusMessage(Cursor c) { 
    String msg = "???"; 
    switch (c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS))) { 
        case DownloadManager.STATUS_FAILED: 
            msg = "Download failed!"; 
            break; 
        case DownloadManager.STATUS_PAUSED: 
            msg = "Download paused!"; 
            break; 
       case DownloadManager.STATUS_PENDING: 
            msg = "Download pending!"; 
            break; 
       case DownloadManager.STATUS_RUNNING: 
            msg = "Download in progress!"; 
            break; 
       case DownloadManager.STATUS_SUCCESSFUL: 
            msg = "Download complete!"; 
            break; 
       default: 
            msg = "Download is nowhere in sight"; 
            break; 
   } 
   return (msg); 
}
于 2016-10-05T13:06:11.450 に答える