2015-10-28 5 views
9

में पहले से इंस्टॉल करें मेरे पास एक प्रोग्राम है जिसे कई प्लेटफ़ॉर्म के लिए बनाया जाना आवश्यक है। अभी मैं कुछ ऐसा कर रहा हूं:बिल्ड मैट्रिक्स

matrix: 
    include: 
    env: PLATFORM=foo 
    env: PLATFORM=bar 
    env: PLATFORM=baz 
before_install: 
    - install foo toolchain 
    - install bar toolchain 
    - install baz toolchain 
script: 
    - make PLATFORM=$PLATFORM 

मैं सभी तीन टूलचेन स्थापित नहीं करना चाहता था क्योंकि मैं केवल एक का उपयोग करने जा रहा हूं; यह संसाधनों का अपमानजनक है और अपस्ट्रीम की भयानक टूलचेन वितरण साइट डाउन होने पर सभी बिल्डों को भी तोड़ देती है।

हालांकि, मैं बिल्ड मैट्रिक्स में पहले से इंस्टॉल करने का कोई तरीका नहीं समझ सकता --- दस्तावेज़ीकरण सटीक वाक्यविन्यास के रूप में बेहद अस्पष्ट है। क्या यह संभव है और यदि ऐसा हो तो कैसे?

+0

'प्लैटफॉर्म टूलचेन इंस्टॉल करें, मेबे? –

+0

@ डेविड दिया गया, क्या आपको इसके लिए कोई समाधान मिला? – Nibor

+0

मैं अभी भी देख रहा हूं। –

उत्तर

1

इस विशेष उदाहरण में, आप केवल उस पर्यावरण चर का लाभ उठा सकते हैं जिसे आपने पहले ही इंस्टॉल कमांड को गतिशील रूप से विस्तारित करने के लिए बनाया है।

matrix: 
    include: 
    env: PLATFORM=foo 
    env: PLATFORM=bar 
    env: PLATFORM=baz 
before_install: 
    - install $PLATFORM toolchain 
script: 
    - make PLATFORM=$PLATFORM 

दूसरों, इस तरह के रूप में supporting ancient platforms inconsistent with modern travis environments कि इस सवाल का एक और अधिक जटिल परिदृश्य के लिए खोज मिल सकता है के लिए, मैं मैट्रिक्स अंतर समर्पित स्क्रिप्ट के साथ स्थापित करता है लेते हैं।

. 
├── src 
│   └── Foo.php 
├── tests 
│   ├── FooTest.php 
│   └── travis 
│    ├── install.bash 
│    ├── install.legacy.bash 
│    ├── script.bash 
│    └── script.legacy.bash 
└── .travis.yml 

फिर पर्यावरण के लिए संबंधित स्क्रिप्ट का स्रोत बनाएं।

language: php 
matrix: 
    include: 
    - php: "nightly" 
    env: LEGACY=false 
    - php: "7.0" 
    env: LEGACY=false 
    - php: "5.3.3" 
    env: LEGACY=true 
install: 
    - if $LEGACY; then source ./tests/travis/install.legacy.bash; 
    else source ./tests/travis/install.bash; fi 
script: 
    - if $LEGACY; then source ./tests/travis/script.legacy.bash; 
    else source ./tests/travis/script.bash; fi 

सुंदर बदसूरत, इसलिए मुझे आशा है कि ट्रेविस कभी-कभी आधिकारिक समाधान प्रदान करेगी।