मैं एक NodeJS आवेदन के लिए एक बहु मंच नीला निर्माण पाइपलाइन है।

पहले चरण में, मैं स्रोत कोड बना रहा हूं और कलाकृतियों को स्टेजिंग निर्देशिका (Build.ArtifactStagingDirectory) में कॉपी कर रहा हूं और नीला बिल्ड पाइपलाइन के तीसरे चरण में, मैं PublishBuildArtifacts@1 कार्य का उपयोग करके कलाकृतियों को प्रकाशित करने का प्रयास कर रहा हूं .

लेकिन मुझे निम्नलिखित चेतावनी मिल रही है:

निर्देशिका '/home/vsts/work/1/a' खाली है। आर्टिफैक्ट 'ड्रॉप' बनाने के लिए कुछ भी नहीं जोड़ा जाएगा।

मैंने PipelineArtifacts कार्य को भी आजमाया है।

नीचे बिल्ड पाइपलाइन ओवरव्यू है। यहां छवि विवरण दर्ज करें

नीला-पाइपलाइन्स.yml

trigger:
- master
- feature

pool:
  vmImage: 'ubuntu-latest'

stages:
- stage: BuildApplication
  jobs:
  - job: InstallNodejs
    steps:
    - task: NodeTool@0
      inputs: 
        versionSpec: '10.x'
      displayName: 'Step for installing Node.js'

  - job: PrepareSonarCloud
    steps:
    - task: SonarCloudPrepare@1
      inputs:
        SonarCloud: ******
        organization: ****
        scannerMode: 'CLI'
        configMode: 'manual'
        cliProjectKey: ******
        cliProjectName: ******
        cliSources: '.'
      condition: |
        and
        (
          succeeded(),
          eq(variables['Build.Reason'], 'Pull Request'),
          eq(variables['System.PullRequest.TargetBranch'], 'master')
        )

  - job: BuildNodejs
    steps:
      - script: |
          npm install
          npm run build
        displayName: 'npm install and build'

  - job: CopyFiles
    steps:
    - task: CopyFiles@2
      inputs:
        sourceFolder: $(Build.SourcesDirectory)
        targetFolder: $(Build.ArtifactStagingDirectory)
      displayName: Copy Files to Staging Directory

- stage: StaticCodeAnalysis
  jobs:
  - job: AnalyzeSonarcloud
    steps:
    - task: SonarCloudAnalyze@1
      displayName: 'Run SonarCloud code analysis'
      condition: |
        and 
        (
          succeeded(),
          eq(variables['Build.Reason'], 'Pull Request'),
          eq(variables['System.PullRequest.TargetBranch'], 'master')
        )

  - job: PublishCodeAnalysisReport
    steps:
    - task: SonarCloudPublish@1
      displayName: 'Publish SonarCloud quality gate results'
      inputs:
        pollingTimeoutSec: '300'
      condition: |
        and
        (
          succeeded(),
          eq(variables['Build.Reason'], 'Pull Request'),
          eq(variables['System.PullRequest.TargetReason'], 'master')
        )

- stage: UploadArtifact
  jobs:
  - job: PublishBuildArtifact
    steps:
    - task: PublishBuildArtifacts@1  
      inputs: 
        pathtoPublish: $(Build.ArtifactStagingDirectory) 
        artifactName: drop

यहाँ प्रतिलिपि फ़ाइलें कार्य के लिए लॉग है। यह स्रोत निर्देशिका से स्टेजिंग निर्देशिका में फ़ाइलों की प्रतिलिपि बना रहा है

Here is the log for copy files task. It's copying the files from source directory to staging directory

नीचे दी गई छवि PublishBuildArtifact कार्य के लिए लॉग दिखाती है

image shows the log for PublishBuildArtifact task

1
Navin prasad 22 जिंदा 2020, 16:14
क्या आप अपनी प्रतिलिपि फ़ाइलें कार्य और लॉग रख सकते हैं?
 – 
Shayki Abramczyk
22 जिंदा 2020, 16:29

2 जवाब

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

नीला पाइपलाइन में एक चरण से दूसरे चरण में कलाकृतियों की प्रतिलिपि बनाने में असमर्थ

ऐसा इसलिए है क्योंकि आप फ़ाइल को पहले चरण में कॉपी कर रहे हैं, लेकिन बिल्ड कलाकृतियों को दूसरे चरण में प्रकाशित कर रहे हैं।

वे दो चरण एक ही मशीन पर नहीं हैं।

Microsoft एजेंट को रीसायकल करेगा और आपके द्वारा हर बार एक चरण का उपयोग करने के बाद उसे पुनर्स्थापित करेगा। उसके बाद, MS अगले चरण के लिए एक नए एजेंट को पुन: असाइन करेगा। यही कारण है कि आपने फ़ाइल को संबंधित फ़ोल्डर में कॉपी किया था, लेकिन जब आपने इसे प्रकाशित किया तो यह खाली थी। क्योंकि यह एक ही मशीन पर नहीं है।

इसलिए, इस समस्या को हल करने के लिए, हमें प्रतिलिपि फ़ाइल कार्य का उपयोग करना होगा और उसी चरण में निर्माण कलाकृतियों को प्रकाशित करना होगा।

उम्मीद है ये मदद करेगा।

0
Leo Liu-MSFT 31 जिंदा 2020, 11:14

यदि आपके पास वीएसटीएस एजेंट तक पहुंच है तो आप बिल्ड फ़ोल्डर (यह जांचने के लिए कि क्या निर्माण ठीक से किया गया था) और ArtifactStagingDirectory देख सकते हैं।

0
Alexandra 22 जिंदा 2020, 16:35
क्या Microsoft द्वारा होस्ट किए गए एजेंट तक पहुंचना संभव है?
 – 
Navin prasad
23 जिंदा 2020, 10:36
Microsoft द्वारा होस्ट किया गया नंबर, केवल तभी जब आपके पास स्थानीय सर्वर पर आपका एक VSTS एजेंट हो।
 – 
Alexandra
27 जिंदा 2020, 16:25