मेरे पास एक बहुत ही सरल लेकिन धीमा (~ 15 मिनट) नोड परीक्षण है जिसे मैं उबंटू और लिनक्स पर चलाना चाहता हूं, और प्रत्येक के लिए नोड 6, 8 और 10 पर - इसलिए कुल 6 "नौकरियां" - Azure DevOps पर एक Azure पाइपलाइन के माध्यम से .

मेरा azure-pipeline.yml ऐसा दिखता है:

jobs:
- job: Ubuntu
  pool:
    vmImage: 'Ubuntu 16.04'
  strategy:
    matrix:
      node_6_x:
        node_version: 6.x
      node_8_x:
        node_version: 8.x
      node_10_x:
        node_version: 10.x
  steps:
  - task: NodeTool@0
    inputs:
      version: $(node_version)
    displayName: 'Install Node.js $(node_version)'  
  - script: |
      npm install
    displayName: 'npm install'
  - script: |
      npm run test
    displayName: 'npm test'
- job: Windows
  pool:
    vmImage: 'vs2017-win2016'
  strategy:
    matrix:
      node_6_x:
        node_version: 6.x
      node_8_x:
        node_version: 8.x
      node_10_x:
        node_version: 10.x
  steps:
  - task: NodeTool@0
    inputs:
      version: $(node_version)
    displayName: 'Install Node.js $(node_version)'  
  - script: |
      npm install
    displayName: 'npm install'
  - script: |
      npm test
    displayName: 'npm test'

चूंकि यह गिटहब पर एक ओपन सोर्स रिपोजिटरी है, मुझे उम्मीद है कि ये 6 टेस्ट रन समानांतर में होंगे (क्योंकि 10 समानांतर नौकरियां संभव होनी चाहिए)।

मेरे भंडार में azure-pipeline.yml जोड़ने के पुल अनुरोध के पाइपलाइन रन को देखकर, ऐसा लगता है कि कभी-कभी ऐसा लगता है कि कुछ समानता चल रही है। अक्सर मैं कोई भी काम शुरू होने के लिए मिनटों का इंतजार करता हूं। क्या यह शायद Azure पाइपलाइन पक्ष पर एक क्षमता समस्या है, कि परीक्षण चलाने के लिए कोई एजेंट उपलब्ध नहीं है?

जब कुछ शुरू होता है, तो यह ज्यादातर प्रति ऑपरेटिंग सिस्टम केवल 1 कार्य होता है, जबकि matrix से अन्य "शुरू नहीं / कतारबद्ध" होते हैं। क्या matrix कार्यों को समानांतर में निष्पादित नहीं किया जाना चाहिए?


जो मुझे मेरे वास्तविक प्रश्न पर लाता है:
क्या Microsoft द्वारा होस्ट किए गए एजेंटों के पूल पर Azure पाइपलाइनों पर नौकरियों के वास्तविक समानांतर निष्पादन को प्राप्त करने का कोई तरीका है?

4
janpio 17 सितंबर 2018, 16:46

1 उत्तर

सबसे बढ़िया उत्तर

बदलना

  strategy:
    matrix:
      node_6_x:
        node_version: 6.x
      node_8_x:
        node_version: 8.x
      node_10_x:
        node_version: 10.x

प्रति

  strategy:
    maxParallel: 3
    matrix:
      node_6_x:
        node_version: 6.x
      node_8_x:
        node_version: 8.x
      node_10_x:
        node_version: 10.x

(ध्यान दें कि अतिरिक्त maxParallel: 3) ने काम कर दिया है: जैसे ही पीआर शाखा के लिए प्रतिबद्ध किया जाता है, बिल्ड अब एक साथ शुरू हो जाते हैं।

जबकि maxParallel वर्तमान में केवल "समानांतरता की मात्रा को प्रतिबंधित करता है।", ऐसा लगता है कि matrix कॉन्फ़िगरेशन के लिए समांतरता प्राप्त करने की आवश्यकता है।

(YAML स्कीमा में कार्य के लिए दस्तावेज़ीकरण मदद नहीं करता क्योंकि यह maxParallel को matrix या parallel के विकल्प के रूप में दिखाता है।)

4
janpio 17 सितंबर 2018, 20:29