2016-03-24 5 views
5

tarafından tetiklendiğinde, Jenkins'de BUILD_USER'ı nasıl alırsınız Post iş e-postasında bir jenkins işini tetikleyen kullanıcıyı göstermek istedim. Bu 'Build User Vars Plugin' eklentisi ve BUILD_USER env değişkenini kullanarak mümkündür. Ancak bu değişken, iş zamanlayıcı tarafından iş başlatıldığında başlatılamaz., işçiye

cevap

2

Bu, Jenkins 'da çok mümkündür. Yapılandırmayı başlatan kullanıcıyı tanımlayan bir dizi ortam değişkenini ortaya çıkaran, Jenkins için -Build User Vars Plugin adlı bir eklenti vardır. O .. vb BUILD_USER_ID, EMAIL gibi env değişkeni verir

inşa el ile tetiklenebilir olduğunda bu iyi çalışacak bir o

BUILD_USER_ID

için kullanıcı adı oturum giriş yapan kullanıcılar ve vermek nasıl hiç bu env değişken alışkanlık

detaylar enter image description here Bu Koşullu derleme Adım Eklentisi/Çalıştır Co kullanarak Job bir koşul enjekte ederek çözülebilir

için bir ekran görüntüsü Ekli inşa otomatik Jenkins zamanlayıcı/zamanlayıcısı tarafından tetiklendiğinde başlatıldı/değiştirilmesi ndition Plugin, her bir işin içinde, BUILD_USER_ID değişkeni, yalnızca zamanlayıcı veya zamanlayıcı tarafından oluşturulduğunda veya tetiklendiğinde, değişken ifadeyi kullanarak bir koşul ekleyebilmek için bir koşul ekleyebiliriz.

2

belirteci ... EnvInject Eklentisi ve bu kullanılabilir ... ama sadece bunu kullanmak ve çözümü başarmak nasıl bilmek istiyorum - bunu başarabiliriz nasıl i biz adlı bir eklentiyi var biliyorum $ BUILD_CAUSEemail-ext plugin ne arıyorsanız.

'u tıklattığınızda tam içerik belirteci başvurusunu görebilirsiniz., E-posta içeriği yapılandırmasında bağlantı günlüğü oluştur.

Bazı simgeler eklentiler tarafından eklenir, ancak bu varsayılan olarak aviable olmalıdır.

Düzenleme: Yorumlarda bishop tarafından belirtildiği gibi, EnvInject plugin kullanıldığında $ BUILD_CAUSE belirteci farklı davranmaya başlar.

+1

'$ BUILD_CAUSE' kullanıcı içermez. – bishop

+0

Sizin için öyle. Derlemeye elle başladığımda mesajda ismimi görüyorum. 'BUILD_CAUSE: Gestartet durch Benutzer Dominik Gebhart' Çevirildi: Kullanıcı tarafından başlatıldı Dominik Gebhart. PostCommit kanca veya zamanlayıcı tarafından tetiklenen bir Anket tarafından başlatıldığında ve SCM değişiklikleri üzerine inşa edildiğinde, 'Build wurde durch eine SCM-Änderung ausgelöst.'Translated: SCM değişiklikleri ile tetiklenir' içerir. Değişkenin içeriğinin başka bir eklenti tarafından değiştirildiğini düşünüyor musunuz? –

+0

Gerçekten. E-posta eklentisi [tanımlar] (https: //issues.jenkins-ci.org/browse/JENKINS-3166) dediğiniz gibi, ancak env-inject eklentisi [bunu geçersiz kılar] (https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin). Lütfen cevabınızda bunu dikkate al, böylece oyları -1'den +1'e çevirebilirim! (Oylama işlemi düzenleninceye kadar oy verildi.) – bishop

2

Kullanıyorum 'kabuk Yürütme' ve 'Env enjekte' eklenti bir kombinasyon, aşağıdaki gibi:

  1. oluşturma varsayılan değerine yazmak ve bir dosya halinde bu değer yankı kabuk parametresi ikame kullanan yapı adım 'shell Yürütme'. Aşağıdaki ekran görüntüsünde vurgulanan örnek.
  2. Bu dosyayı ayarlamak için özellikler olarak okumak için 'Env Inject' dosyasını kullanın.

Jenkins build steps to default variables

+0

Ayrıca bkz. Http://stackoverflow.com/a/10626193/2908724 – bishop

+1

Bu seçenek benim için çalıştı. Bu, yapı değişkenlerini başka bir işe aktardığımdan ve başka bir işte bir parametreli yapıyı tetiklemeye çalıştığımda, aynı "vars" özellik dosyasını sağladığımda çalışmadığı için benim için biraz can sıkıcıdır. Dosyayı asıl işin bir eseri olarak kaydetme ve bir şablon oluşturmak daha zor olan diğerinden alma işlemini bitirdim. – leeman24