ich an einem Projekt arbeite, die Travis CI verwendet. Bei einigen unserer Tests müssen sichere Anmeldeinformationen in Umgebungsvariablen definiert sein, andernfalls werden sie übersprungen. Wir verwenden the encrypt
command of the Travis CLI gem ein secure environment variable für unsere primäre Repository zu definieren, owner/Project
. Diese Variable wird in unserer .travis.yml
-Datei enthalten wie folgt:definiert sichere Umgebungsvariablen für mehrere Repositories in einem einzigen .travis.yml
env:
secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA="
travis encrypt
diese Variablen den privaten Schlüssel für unsere owner/Project
verwenden, und Travis führt die Berechtigungsnachweis-Tests für das Repository erfolgreich verschlüsselt.
Allerdings haben wir ein anderes Repository, contributor/Project
, die auch für die Entwicklung verwendet wird. Wenn Travis in diesem Repository ausgeführt wird, sind die sicheren Umgebungsvariablen nicht verfügbar, und die zertifizierten Tests werden übersprungen.
I verwendet travis encrypt
einen Satz von Anmeldeinformationen für contributor/Project
zu verschlüsseln, und versuchte, es zu dem .travis.yml
wie folgt hinzuzufügen:
env:
- secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA="
- secure: "TcOCPDytGQpQgiP4w4LRdLXn+pUvhf5SjJF4J3TXjaPUCfomNfod2WTZn3v4WBR2kg3UCaeqFo2BmGUdwCdPbrAZ3cF2W749HLNU0Z2zxFWru5W+GAGgUi2FXIzzjF+U8Hb/2fLZ6GoUiSlNzVHKo/+kvLDAyuGnGFwfH7dpEb8="
Das in Travis führte laufen zwei verschiedene Versionen von der Bau. Man versuchte, jeden Satz sicherer Anmeldeinformationen zu verwenden. Da nur ein Satz für ein gegebenes Repository gültig ist, würde dies dazu führen, dass die Testsuite zweimal ausgeführt wird, einmal mit Anmeldeinformationen und einmal ohne. You can see an example build here.
Diese zusätzliche Build ist verschwenderisch und unnötig. Wenn der Test in einer Umgebung ausgeführt wird, in der keine sicheren Anmeldeinformationen verfügbar sind (z. B. eine Pullanforderung von einer Verzweigung), wird die Testsuite zweimal ohne Anmeldeinformationen ausgeführt. Das Hinzufügen weiterer Sätze von Anmeldeinformationen wäre noch schlimmer; Sie haben mehrere redundante, nicht-berechtigte Builds für jeden Credential-Build.
Wie kann ich definieren sichere Umgebungsvariablen für mehrere Repositories in einer einzigen Travis Konfiguration, ohne dass zusätzliche auftreten baut?
Vielen Dank für diesen einen zu teilen. Ich fühlte mich verzweifelt! – ratiaris