2014-04-30 12 views
7

Pracuję nad projektem wykorzystującym Travis CI. Niektóre z naszych testów wymagają określenia poświadczeń bezpieczeństwa w zmiennych środowiskowych, lub są one pomijane. Używamy the encrypt command of the Travis CLI gem do zdefiniowania secure environment variable dla naszego głównego repozytorium, owner/Project. Zmienna ta jest zawarta w naszym pliku .travis.yml następująco:Definiowanie bezpiecznych zmiennych środowiskowych dla wielu repozytoriów w jednym .travis.yml

jednego repozytorium konfiguracji
env: 
    secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA=" 

travis encrypt został zaszyfrowany tych zmiennych za pomocą klucza prywatnego dla naszego owner/Project i Travis uruchamia akredytowanych testy pomyślnie dla tego repozytorium.

Mamy jednak inne repozytorium, contributor/Project, które jest również używane do programowania. Kiedy Travis jest uruchamiany w tym repozytorium, bezpieczne zmienne środowiskowe nie są dostępne, a testy poświadczeń są pomijane.

użyłem travis encrypt zaszyfrować zestaw poświadczeń dla contributor/Project i starał się dodać go do .travis.yml jak ten:

Przyczyny Extra buduje
env: 
    - secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA=" 
    - secure: "TcOCPDytGQpQgiP4w4LRdLXn+pUvhf5SjJF4J3TXjaPUCfomNfod2WTZn3v4WBR2kg3UCaeqFo2BmGUdwCdPbrAZ3cF2W749HLNU0Z2zxFWru5W+GAGgUi2FXIzzjF+U8Hb/2fLZ6GoUiSlNzVHKo/+kvLDAyuGnGFwfH7dpEb8=" 

Spowodowało Travis uruchomione dwie różne wersje kompilacja. Jedna próbowała użyć każdego zestawu bezpiecznych danych uwierzytelniających. Ponieważ tylko jeden zestaw był prawidłowy dla danego repozytorium, spowodowałoby to dwukrotne uruchomienie zestawu testów, jeden raz poświadczeń i jeden raz bez. You can see an example build here.

Ta dodatkowa kompozycja jest marnotrawstwem i niepotrzebna. Jeśli test działa w środowisku, w którym żaden zestaw bezpiecznych poświadczeń nie jest dostępny (na przykład żądanie wyciągnięcia z widelca), zestaw testów zostanie uruchomiony bez poświadczeń dwukrotnie. Dodanie kolejnych zestawów referencji byłoby jeszcze gorsze; będziesz mieć kilka zbędnych nieuwierzytelnionych buildów dla każdej uwierzytelnionej kompilacji.

Jak zdefiniować bezpieczne zmienne środowiskowe dla wielu repozytoriów w pojedynczej konfiguracji Travis, nie powodując powstania dodatkowych kompilacji?

Odpowiedz

9

Kiedy zdefiniowałem wiele bezpiecznych wartości bezpośrednio pod env, wydawało się, że są traktowane tak, jakbym użył the matrix key, which defines multiple variations of a build. To było tak, jakbym napisał:

Przyczyny Extra Buduje
env: 
    matrix: 
    - secure: "TcOCPDytGQpQgiP4w4LRdLXn+pUvhf5SjJF4J3TXjaPUCfomNfod2WTZn3v4WBR2kg3UCaeqFo2BmGUdwCdPbrAZ3cF2W749HLNU0Z2zxFWru5W+GAGgUi2FXIzzjF+U8Hb/2fLZ6GoUiSlNzVHKo/+kvLDAyuGnGFwfH7dpEb8=" 
    - secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA=" 

Zamiast tego należy określić bezpiecznych poświadczeń w kluczu global tak, że zostaną one zastosowane do każdej budowy:

ładnie działa
env: 
    global: 
    - secure: "TcOCPDytGQpQgiP4w4LRdLXn+pUvhf5SjJF4J3TXjaPUCfomNfod2WTZn3v4WBR2kg3UCaeqFo2BmGUdwCdPbrAZ3cF2W749HLNU0Z2zxFWru5W+GAGgUi2FXIzzjF+U8Hb/2fLZ6GoUiSlNzVHKo/+kvLDAyuGnGFwfH7dpEb8=" 
    - secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA=" 

Travis spróbuje użyć każdego z bezpiecznych zmiennych w jednej kompilacji. Będzie w stanie dekodować i używać tylko jednej (lub żadnej), która jest odpowiednia dla repozytorium i warunków kompilacji. You can see an example build here. W ten sposób możesz dodawać bezpieczne zmienne środowiskowe dla tylu repozytoriów, ile chcesz, do pojedynczej konfiguracji Travis.

+0

Dzięki za udostępnienie tego. Zaczynałem odczuwać desperację! – ratiaris