2014-04-30 9 views
7

Sto lavorando a un progetto che utilizza Travis CI. Alcuni dei nostri test richiedono che le credenziali sicure siano definite in variabili d'ambiente, altrimenti vengono saltate. Stiamo utilizzando the encrypt command of the Travis CLI gem per definire un secure environment variable per il nostro repository principale, owner/Project. Questa variabile è incluso nel nostro file .travis.yml come segue:Definizione di variabili di ambiente sicure per più repository in un singolo .travis.yml

configurazione a singolo repository
env: 
    secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA=" 

travis encrypt ha cifrato queste variabili utilizzando la chiave privata per la nostra owner/Project, e Travis esegue i test accreditati con successo per quel repository.

Tuttavia, abbiamo un altro repository, contributor/Project, che viene utilizzato anche per lo sviluppo. Quando Travis viene eseguito in quel repository, le variabili di ambiente sicuro non sono disponibili e i test credenziali vengono saltati.

ho usato travis encrypt per cifrare un set di credenziali per contributor/Project, e ha cercato di aggiungerlo alla .travis.yml in questo modo:

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

Ciò ha provocato Travis corsa due diverse versioni di la build. Si è tentato di utilizzare ogni set di credenziali sicure. Poiché solo un set era valido per un determinato repository, ciò comporterebbe l'esecuzione della suite di test due volte, una volta con credenziali e una volta senza. You can see an example build here.

Questa configurazione aggiuntiva è inutile e inutile. Se il test è in esecuzione in un ambiente in cui non sono disponibili né le credenziali sicure (come una richiesta di pull da un fork), la suite di test verrà eseguita due volte senza credenziali. Aggiungere più insiemi di credenziali sarebbe anche peggio; avresti diverse build ridondanti noncredenziali per ogni build credenziale.

Come è possibile definire variabili di ambiente sicure per più repository in una singola configurazione di Travis senza causare ulteriori build?

risposta

9

Quando ho definito più valori di sicurezza direttamente sotto env, sembravano trattati come se avessi usato the matrix key, which defines multiple variations of a build. Era come se avessi scritto:

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

Invece, ho bisogno di specificare le credenziali sicure sotto la chiave global, in modo che essi saranno tutti essere applicati ad ogni generazione:

funziona bene
env: 
    global: 
    - secure: "TcOCPDytGQpQgiP4w4LRdLXn+pUvhf5SjJF4J3TXjaPUCfomNfod2WTZn3v4WBR2kg3UCaeqFo2BmGUdwCdPbrAZ3cF2W749HLNU0Z2zxFWru5W+GAGgUi2FXIzzjF+U8Hb/2fLZ6GoUiSlNzVHKo/+kvLDAyuGnGFwfH7dpEb8=" 
    - secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA=" 

Travis tenterà di utilizzare ciascuna delle variabili sicuri in una sola generazione. Sarà in grado di decodificare e utilizzare solo uno (o nessuno) appropriato per il repository e le condizioni di costruzione. You can see an example build here. In questo modo è possibile aggiungere variabili di ambiente sicure per tutti i repository che si desidera a una singola configurazione di Travis.

+0

Grazie per aver condiviso questo. Stavo iniziando a sentirmi disperata! – ratiaris