2009-08-25 12 views
9

Próbuję umieścić projekt maven2 pod ciągłą integracją w hudson. Projekt wykorzystuje selen do niektórych testów integracyjnych. Hudson działa na bezgłowym systemie Linux. Używam xvfb, aby rozpocząć sesję serwera x dla selenu.Ustaw zmienną środowiskową do wbudowania w hudson

Aby uruchomić testy, należy wyeksportować zmienną środowiskową o nazwie DISPLAY. np.

export DISPLAY=:99 

Jednak nie chcę ustawiać zmiennej w polu, ponieważ wpłynie ona na wszystkie kompilacje. Próbowałem wykonać wykonanie powłoki przy użyciu wtyczki m2 extra steps, ale nie działa, ponieważ jest wykonywane w oddzielnym pliku Bash, co oznacza, że ​​zmienne środowiskowe nie są zachowywane.

Czy istnieje sposób na zarejestrowanie zmiennej środowiskowej z hudson.

Odpowiedz

4

W Hudson jest nowa funkcja, która pozwala określić parameters for builds. Wygląda na to, że robi to, co chcesz.

Choć uwaga, że:

warning http://wiki.hudson-ci.org/images/icons/emoticons/information.gif To wciąż bardzo młody cecha, więc sprzężenie zwrotne docenione

...

Parametr [s] są dostępne jako parametrów środowiskowych. Np. powłoka ($ FOO,% FOO%) lub Ant ($ {env.FOO}) może uzyskać dostęp do tych wartości.

+1

nie jestem przekonany, to rzeczywiście odpowiada na pytanie, które poproszono - w jaki sposób ustawić zmienne środowiskowe w taka sama skorupa jak Maven? Parametry te są bardzo przydatne, ale to nie całkiem to, czego użytkownik prosi o - i to również nie pozwala na edycję zmiennych środowiskowych, które są obecnie nie znaczy, że nie może zmusić go do siebie dzwonić. Na przykład, export PATH =/usr/bin/foo: $ PATH nie będzie działać, ponieważ nie rozpoznaje $ PATH – Spedge

+1

@Spedge jesteś utożsamiając czytania i ustawienie zmiennych środowiskowych. Pytanie, jak ustawić zmienną, a opisany mechanizm robi dokładnie to. W twoim przykładzie robisz zarówno zestaw, jak i odczyt, o który nie pytano. –

+0

@Rich Sprzedawca - przeprosiny sir. Zrobiłem teraz trochę pracy na ten temat i rozwiną się w odpowiedzi poniżej (ponieważ w komentarzu jest za mało miejsca). – Spedge

3

Właściwości węzła Hudsona przydałyby się tutaj. Ale jeśli szukasz bardziej zautomatyzowanego sposobu przypisywania numeru ekranu, musisz wykonać trochę więcej pracy, być może związać się z port-allocator plugin lub napisać nową wtyczkę BuildWrapper, która automatycznie uruchamia xvfb i ustawia SCREEN zmienna środowiskowa w imieniu kompilacji.

Jeśli chcesz przejść na inny serwer X do testowania, możesz wypróbować wersję Xvnc plugin dla Hudson. Uruchomi on automatycznie vncserver i ustawi także zmienną środowiskową SCREEN. Ma również możliwość wykonania zrzutu ekranu po zakończeniu testów i pokazania go na stronie Hudson.

+0

W jaki sposób dodajesz * (nie zestaw) do zmiennej środowiskowej, takiej jak 'PATH'? –

+0

@Sridhar Proponuję rozpocząć od zupełnie nowego pytania. –

+0

@Sridhar: Nie ma sposobu, aby to zrobić, jeśli nowa wartość zmiennej powinna przetrwać bieżący krok kompilacji. –

0

Zgodnie z moją odpowiedzią na zaakceptowaną odpowiedź, oto moje wnioski.

Strzeż Un inicjalizacja zmiennych

Podczas korzystania z funkcji parametryzacji w Hudson, można dodać zmienne środowiskowe na końcu łańcucha - pod warunkiem, że zawierają one coś w pierwszej kolejności.

Na przykład, jeśli zmienna środowiskowa $ foo jest pusty, a ty korzystać z następującą linię w parametrem String ...

/usr/bin/ladeda/:$F00 

wówczas zmienna odczyta/usr/bin/ladeda /: $ F00.

Jednakże, jeśli zrobiłem

export F00=/usr/bin/fiddledede 

następnie zmienna eksportowane byłoby ....

/usr/bin/ladeda/:/usr/bin/fiddledede 

Kiedy początkowo prowadził to jako test, ja nie pracowałem na to uwagę - i w ten sposób uważano, że funkcja parametru nie akceptuje zewnętrznych zmiennych środowiskowych, kiedy faktycznie była (po prostu musiała coś zawierać).

10

fyi, wypuszczam dzisiaj the setenv plugin dla Hudsona (zakładając, że java.net odzyska wystarczająco dużo, aby to zrobić!) - zachowuje się podobnie do sparametryzowanej funkcjonalności budowania, ale z prostszym interfejsem użytkownika (tylko tekstem dla danych wejściowych - pary klucz/wartość są oddzielone znakami nowej linii) i bez potrzeby podawania wartości parametrów w czasie kompilacji.

1

Znalazłem działa selen korzystając xvfb-run być bardziej niezawodny niż ustawienie wyświetlania, więc to może pracować dla Ciebie. A więc:

xvfb-run java -jar selenium-server.jar 
1

Czy próbowałeś użyć wtyczki selenu maven?

Wtyczka może być skonfigurowany do uruchamiania Xvfb, wykonaj testy, a następnie zatrzymać go.

użyciu tej konfiguracji pom.xml:

<plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>selenium-maven-plugin</artifactId> 
     <executions> 
      <execution> 
       <id>xvfb</id> 
       <phase>pre-integration-test</phase> 
       <goals> 
        <goal>xvfb</goal> 
       </goals> 
      </execution> 

      <execution> 
       <id>selenium</id> 
       <phase>pre-integration-test</phase> 
       <goals> 
        <goal>start-server</goal> 
       </goals> 
       <configuration> 
        <background>true</background> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 

szczegóły są tutaj: http://mojo.codehaus.org/selenium-maven-plugin/examples/headless-with-xvfb.html

Powiązane problemy