我正在尝试在Azure DevOps YAML管道中为NuGet包生成一个名称。
上下文将在每个自动构建中使用软件包名称,分支名称,日期和递增的修订号创建软件包。
packageName-branchName-年-月-日-修订版
这样,当创建一个新的功能分支时,它将生成一个唯一的程序包,可用于在需要它的项目中进行测试。
我正在努力根据环境变量(例如日期或修订号)在YAML文件中设置变量。
使用## vso命令,我可以将'myVariable'设置为hello并打印出来。
- script: |
echo '##vso[task.setvariable variable=myVariable]hello'
- script: |
echo my variable is $(myVariable)
当我尝试按以下方式从PowerShell设置变量时,出现以下错误“#$ dateStr”未被识别为内部或外部命令”。
# Create a variable
- script: |
#$dateStr = (Get-Date).ToString('yyyy-MM-dd')
echo '##vso[task.setvariable variable=myVariable]#$dateStr'
# Print the variable
- script: |
echo my variable is $(myVariable)
当我尝试这样在YAML文件的变量部分中设置变量时。
variables:
solution: '**/*.sln'
foo: $(Date:yyyyMMdd)
- script: |
echo my variable is $(foo)
该变量未插值,并输出为。
'我的变量是$(Date:yyyyMMdd)'
如何基于环境变量(例如$(rev)和$(Date))创建变量?
答案 0 :(得分:2)
我不认为有内置的date
变量,但是对于powershell情况,您只需要在变量前删除#
即可,并且必须将其用"
括起来,否则powershell不会扩展您的变量
echo "##vso[task.setvariable variable=myVariable]$dateStr"
答案 1 :(得分:2)
感谢您的帮助。
这就是我最终解决问题的方式。对于非发行版分支,我使用build#+ beta +分支名称为正在创建的nuget包生成唯一的名称。对于发布分支,我只使用构建号。
# Create version number for non release package(s) - 1.0.xxx-beta-develop for example
- powershell: |
[String]$buildNumber = $Env:BUILD_BUILDNUMBER.Substring($Env:BUILD_BUILDNUMBER.LastIndexOf('.') + 1)
[String]$branchName = $Env:BUILD_BUILDNUMBER.Substring(0, $Env:BUILD_BUILDNUMBER.LastIndexOf('.'))
Write-Host "##vso[task.setvariable variable=nugetVersion]1.0.$($buildNumber)-beta-$($branchName)"
displayName: 'Create beta version number for production nuget packages - run when in non release branch'
condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'release/'))
# Create version number for release package(s) - 1.0.xxx for example
- powershell: |
[String]$buildNumber = $Env:BUILD_BUILDNUMBER.Substring($Env:BUILD_BUILDNUMBER.LastIndexOf('.') + 1)
Write-Host "##vso[task.setvariable variable=nugetVersion]1.0.' + $($buildNumber)
displayName: 'Create version number for production nuget packages - run when in release branch'
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'release/'))
- task: NuGetCommand@2
inputs:
command: 'pack' # Options: restore, pack, push, custom
versioningScheme: byEnvVar
versionEnvVar: nugetVersion
packDestination: '$(Build.ArtifactStagingDirectory)\nuget'
packagesToPack: '**/Floww.*.nuspec'
答案 2 :(得分:0)
使用<div class="contact">
<form action="" class="form">
<p class="full">
<label for="">Contact to</label>
<select class="contact-to" name="request-type">
<option value="candidates">Looking for candidates</option>
<option value="job">Looking for a job</option>
<option value="collaboration">Working with Asia-HR</option>
<option value="other">Other</option>
</select>
</p>
<p>
<label for="">Company</label>
<input type="text" name="company" placeholder="enter the name of your company">
</p>
<p>
<label for="">Name*</label>
<input type="text" name="name" placeholder="enter your name">
</p>
<p>
<label for="">Email*</label>
<input type="email" name="name" placeholder="enter your email">
</p>
<p>
<Label>Phone</Label>
<input type="phone" name="name" placeholder="enter your phone number">
</p>
<p class="full">
<label for="Your message">Your message*</label>
<textarea name="message" id="" cols="30" rows="10"></textarea>
</p>
<p class="full">
<input type="file" name="document">
</p>
<p class="full">
<button>Submit</button>
</p>
</form>
</div>
非常适合运行可以跨平台执行的命令,例如-script
由于日期不是全局变量,因此需要创建日期。问题是,根据您正在运行的构建代理(npm i
| window
| mac
),您将有不同的方法来设置该变量,请参见documentation。 ..
以下内容将使您可以像其他变量一样使用linx
变量
$d