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
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:
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?
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