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
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:
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?
Dzięki za udostępnienie tego. Zaczynałem odczuwać desperację! – ratiaris