Jenkins Paramerized Trigger + Copy Artifact

9

Saya sedang berupaya menyiapkan Jenkins untuk menangani rilis build kami. Rilis build terdiri dari penginstal Windows yang menyertakan beberapa binari yang harus dibangun di Linux.

Inilah yang saya miliki sejauh ini:

  • Bagian Windows dan bagian Linux diatur sebagai proyek Jenkins yang terpisah.
  • Proyek Windows parameter, mengambil tag Subversion untuk membangun dan melepaskan.
  • Sebagai bagian dari build-nya, proyek Windows memicu build dari tag Subversion yang sama untuk proyek Linux (menggunakan plugin Parameterized Trigger ) kemudian menyalin artefak dari proyek Linux (menggunakan plugin Copy Artifact ) ke ruang kerja proyek Windows sehingga mereka dapat dimasukkan dalam installer Windows.

Tempat saya macet: Saat ini, Salin Artefak sudah diatur untuk menyalin bangunan yang terakhir berhasil. Tampaknya lebih kuat untuk mengonfigurasi Salin Artefak untuk menyalin dari bangunan persis yang dipicu Pemicu Parameterisasi, tapi saya mengalami kesulitan mencari tahu cara membuatnya. Ada opsi untuk parameter "build selector" yang menurut saya dimaksudkan untuk membantu hal ini, tetapi saya tidak tahu bagaimana seharusnya pengaturannya (dan secara membabi buta bereksperimen dengan berbagai kemungkinan agak menyakitkan ketika pembangunan membutuhkan satu jam atau dua untuk menemukan kesuksesan atau kegagalan).

Bagaimana saya mengaturnya? Bagaimana cara kerja pemilih bangunan?

Josh Kelley
sumber

Jawaban:

11

Setelah Anda menyelesaikan bangunan yang dipicu, Anda akan memiliki variabel env baru yang disetel ke nomor bangunan yang dipicu yang disebut TRIGGERED_BUILD_NUMBER_ <nama pekerjaan>. Anda dapat menggunakannya untuk menyalin kembali artefak secara khusus:

  1. Windows build (disebut " WindowsBuild "), memanggil Linux build (disebut " LinuxBuild ") menggunakan plugin Parameterized Trigger.

    Anda sudah mendapatkan bagian ini, pastikan untuk memeriksa Blok sampai proyek yang dipicu menyelesaikan build mereka dan tentu saja gagal build jika Linux build gagal.

  2. Berikutnya di Salin Artefak Anda dari langkah proyek lain :

    Nama proyek: LinuxBuild

    Yang membangun: Membangun spesifik

    Nomor pembuatan : $ TRIGGERED_BUILD_NUMBER_LinuxBuild (Semua nama proyek memiliki karakter bukan a-zA-Z atau 0-9 diganti oleh _; beberapa karakter dikondensasi menjadi satu _).

Byron Brummer
sumber
haruskah variabel lingkungan "$ TRIGGERED_BUILD_NUMBER_ <downstreamjob>" disetel secara manual? Saya tidak dapat menemukannya di salah satu variabel lingkungan hulu atau hilir.
Harish
1
Ditemukan dari plugin wiki bahwa $ TRIGGERED_BUILD_NUMBER_ <downstreamjob> disetel secara otomatis jika "Blokir hingga proyek yang dipicu menyelesaikan pembangunannya" dicentang.
Harish