2014-04-30 11 views
7

Tôi đang làm việc trên một dự án đang sử dụng Travis CI. Một số thử nghiệm của chúng tôi yêu cầu thông tin đăng nhập bảo mật được xác định trong các biến môi trường, nếu không chúng sẽ bị bỏ qua. Chúng tôi đang sử dụng the encrypt command of the Travis CLI gem để xác định secure environment variable cho kho lưu trữ chính của chúng tôi, owner/Project. Biến này được bao gồm trong tập tin .travis.yml của chúng tôi như sau:Xác định các biến môi trường an toàn cho nhiều kho lưu trữ trong một đơn .travis.yml

Single-Repository Cấu hình
env: 
    secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA=" 

travis encrypt đã mã hóa các biến này bằng cách sử dụng khóa bí mật cho owner/Project của chúng tôi, và Travis chạy các bài kiểm tra chứng nhận thành công cho kho lưu trữ đó.

Tuy nhiên, chúng tôi có một kho lưu trữ khác, contributor/Project, cũng được sử dụng để phát triển. Khi Travis chạy trong kho lưu trữ đó, các biến môi trường bảo mật không có sẵn và các kiểm tra được chứng nhận bị bỏ qua.

tôi đã sử dụng travis encrypt để mã hóa một tập hợp các thông tin quan trọng cho contributor/Project, và cố gắng thêm nó vào .travis.yml như thế này:

Nguyên nhân tắm xây dựng
env: 
    - secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA=" 
    - secure: "TcOCPDytGQpQgiP4w4LRdLXn+pUvhf5SjJF4J3TXjaPUCfomNfod2WTZn3v4WBR2kg3UCaeqFo2BmGUdwCdPbrAZ3cF2W749HLNU0Z2zxFWru5W+GAGgUi2FXIzzjF+U8Hb/2fLZ6GoUiSlNzVHKo/+kvLDAyuGnGFwfH7dpEb8=" 

Điều này dẫn đến Travis chạy hai phiên bản khác nhau của tòa nhà. Một người đã cố gắng sử dụng từng bộ thông tin đăng nhập an toàn. Vì chỉ có một bộ là hợp lệ cho một kho lưu trữ nhất định, điều này sẽ dẫn đến bộ thử nghiệm đang chạy hai lần, một lần với thông tin đăng nhập và một lần không có. You can see an example build here.

Công trình bổ sung này lãng phí và không cần thiết. Nếu thử nghiệm đang chạy trong một môi trường không có sẵn các thông tin đăng nhập bảo mật (chẳng hạn như yêu cầu kéo từ một ngã ba), bộ thử nghiệm sẽ chạy mà không có thông tin xác thực hai lần. Thêm nhiều bộ thông tin đăng nhập sẽ thậm chí còn tồi tệ hơn; bạn sẽ có một số bản dựng không cần thiết chưa được phân bổ cho mọi bản dựng được chứng nhận.

Làm cách nào để xác định các biến môi trường an toàn cho nhiều vị trí lưu trữ trong một cấu hình Travis đơn lẻ mà không gây ra các bản dựng bổ sung nào xảy ra?

Trả lời

9

Khi tôi xác định nhiều giá trị bảo mật trực tiếp dưới env, chúng dường như được coi như là tôi đã sử dụng the matrix key, which defines multiple variations of a build. Cứ như thể tôi đã viết:

Nguyên nhân tắm xây dựng
env: 
    matrix: 
    - secure: "TcOCPDytGQpQgiP4w4LRdLXn+pUvhf5SjJF4J3TXjaPUCfomNfod2WTZn3v4WBR2kg3UCaeqFo2BmGUdwCdPbrAZ3cF2W749HLNU0Z2zxFWru5W+GAGgUi2FXIzzjF+U8Hb/2fLZ6GoUiSlNzVHKo/+kvLDAyuGnGFwfH7dpEb8=" 
    - secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA=" 

Thay vào đó, tôi cần phải xác định các chứng chỉ an toàn dưới sự chủ chốt global, do đó tất cả họ sẽ được áp dụng cho mọi xây dựng:

trình Nicely
env: 
    global: 
    - secure: "TcOCPDytGQpQgiP4w4LRdLXn+pUvhf5SjJF4J3TXjaPUCfomNfod2WTZn3v4WBR2kg3UCaeqFo2BmGUdwCdPbrAZ3cF2W749HLNU0Z2zxFWru5W+GAGgUi2FXIzzjF+U8Hb/2fLZ6GoUiSlNzVHKo/+kvLDAyuGnGFwfH7dpEb8=" 
    - secure: "av9hxTZp/Dhe9xAOq6WlhTNDoWjjczN3lFanG6h/3h4kW7DsxhfXMRA96z6MambbC6c9ARFiwsQ24NeCAfPQ1m6r9uZwNkusqnRDOwZQeVQcmopnoNNG4Kd/9oclIVgsAlSG6WfhkyQPUG2p7PkOvxFV4/YjDSViYDR3eoih3JA=" 

Travis sẽ cố gắng sử dụng mỗi người trong số các biến an toàn trong một build duy nhất. Nó sẽ chỉ có thể giải mã và sử dụng một (hoặc không) phù hợp với kho lưu trữ và các điều kiện xây dựng. You can see an example build here. Bằng cách này, bạn có thể thêm các biến môi trường an toàn cho nhiều kho lưu trữ như bạn muốn một cấu hình Travis duy nhất.

+0

Cảm ơn bạn đã chia sẻ bài đăng này. Tôi bắt đầu cảm thấy tuyệt vọng! – ratiaris

Các vấn đề liên quan