Scu*_*der 3 yaml azure-devops azure-pipelines
我已经尝试了 Stackoverflow 上的几篇文章和线程,但似乎没有任何进展。我试图从 YAML 步骤中调用的 .py 文件中获取一个变量,并将该变量设置为全局使用。
在我的 。我有py 文件
print(f'##vso[task.setvariable variable=AMLPipelineId;isOutput=true]{pipelineId}')
Run Code Online (Sandbox Code Playgroud)
然后在我的 YAML 管道步骤中我有
- task: AzurePowerShell@5
displayName: 'Run AML Pipeline'
inputs:
azureSubscription: '$(azureSubscription)'
ScriptType: 'InlineScript'
name: AmlPipeline
azurePowerShellVersion: 'LatestVersion'
pwsh: true
Inline: |
$username = "$(ARM_CLIENT_ID)"
$password = "$(ARM_CLIENT_SECRET)"
$tenantId = "$(ARM_TENANT_ID)"
python $(Pipeline.Workspace)/AML_Pipeline/build_aml_pipeline.py --wsName $(wsName) --resourceGroup $(ResourceGroupName) --subscriptionId $(subId)
$MLPipelineId = $AmlPipeline.AMLPipelineId
Run Code Online (Sandbox Code Playgroud)
但这个变量似乎是空的。我知道还有其他方法可以使用“设置变量”,但这是我最新的尝试,例如print('##vso[task.setvariable variable=version;]%s' % (version))
小智 5
对于每个为此苦苦挣扎的人来说,这是一个非常简单的例子。就我的口味而言,该文档有点缺乏。正如@qbik所说,不要在同一步骤中设置和使用变量,而是将其设置为单独的步骤。
if __name__ == '__main__':
# set name of the variable
name = 'COLOR'
# set value of the variable
value = 'red'
# set variable
print(f'##vso[task.setvariable variable={name};]{value}')
Run Code Online (Sandbox Code Playgroud)
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.9'
displayName: 'Use Python 3.9'
# run the script to set the variable
- task: PythonScript@0
inputs:
scriptSource: filePath
scriptPath: set_variable.py
# now you can use the variable in the next step
- bash: echo my favorite color is: $(COLOR)
Run Code Online (Sandbox Code Playgroud)
现在,从技术上讲,您可以在 python 中完成各种很酷的事情,然后按照以下步骤设置和引用变量。就我而言,我必须根据管道中之前设置的 id 从 JSON/YAML 文件中提取特定的包版本号,并将该信息解析为 docker 构建的参数。希望能帮助其他人偶然发现这个答案,寻找一个最小的工作示例:)
| 归档时间: |
|
| 查看次数: |
10322 次 |
| 最近记录: |