ใช้ตัวแปรการประทับเวลาในไปป์ไลน์ azure devops

Aug 17 2020

ฉันติดอยู่ที่การใช้ตัวแปรบิวด์ในท่อส่งสีฟ้า

สิ่งที่ฉันพยายามบรรลุ: สร้างตัวแปรด้วยการประทับเวลาปัจจุบันและใช้ตัวแปรนี้เพื่อตั้งชื่อบิลด์และเวอร์ชันอาร์ติแฟกต์ (สำหรับการตรวจสอบย้อนกลับ)

ในการกำหนดค่าปัจจุบันของฉันสคริปต์ powershell ทำงานสำเร็จ แต่ตัวแปร foo ว่างเปล่าในขั้นตอน npm (ดูโค้ด yml ด้านล่าง)

variables:
  system.debug: true

name: $(TeamProject)_$(Build.DefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)-$(Hours)$(Minutes)$(Seconds) [...] steps: - task: PowerShell@2 inputs: targetType: 'inline' script: 'Write-Host "Setting up the date time for build variable" $date=$(Get-Date -format yyyyMMdd-Hmmss) Write-Host "##vso[task.setvariable variable=foo]$date"'

- task: Npm@1
  inputs:
    command: 'custom'
    customCommand: '--no-git-tag-version version prerelease --preid=dev-$(foo)'
  displayName: 'npm version prerelease'

คำถามของฉัน: ทำไมตัวแปร foo (แนะนำด้วย powershell) จึงว่างเปล่าในขั้นตอน npm มีวิธีตั้งชื่อบิวด์ด้วยตัวแปร foo ที่แนะนำตัวเองหรือไม่ (เพื่อใช้การประทับเวลาเดียวกันสำหรับชื่อบิลด์และเวอร์ชันอาร์ติแฟกต์)

คำตอบ

1 PatrickLu-MSFT Aug 18 2020 at 16:54

คุณใช้ไปป์ไลน์ YAML ผิดรูปแบบ คุณสามารถใช้ข้อมูลโค้ดด้านล่าง:

steps:
- powershell: |
   Write-Host "Setting up the date time for build variable"
   $date=$(Get-Date -format yyyyMMdd-Hmmss)
   Write-Host "##vso[task.setvariable variable=foo]$date"
  displayName: 'PowerShell Script'

จากนั้นตัวแปร foo นี้ควรนำมาใช้กับ powershell ประสบความสำเร็จ คุณจะเห็นมันขยายตามงาน npm