我想要一个运行管道的人的用户ID,该管道将文件上传到gcp存储桶中,从而触发CF

问题描述 投票:0回答:1

我想将该人的用户 ID 驱动到运行将文件上传到 gcp 存储桶的管道的团队频道。将文件上传到存储桶中会自动触发 gcp 中的 CF。我可以在日志中看到 CF 状态,但我想查看在团队频道中触发 CF 的人的 ID。我将文件上传到存储桶的管道只有 yml 文件,没有底层 .ps 或 python 文件。

我尝试在构建和发布管道中使用 id_user = $(Build.RequestedForId) ,该管道在 gcp 中部署存储桶和 CF,但无法实现,因为它抛出错误,因为 Build.RequestedForId 不存在于我的日志中。

任何人都可以提出任何解决方案吗?

google-cloud-platform azure-devops google-cloud-functions google-cloud-storage microsoft-teams
1个回答
0
投票

Azure Pipelines 提供了预定义变量来获取触发管道的用户 ID。当运行管道作业时,这些变量将自动映射为代理机器上的环境变量。

  • Build.RequestedForId
    :触发当前构建/运行的身份ID(经典构建管道/YAML管道)。对应的环境变量是“
    BUILD_REQUESTEDFORID
    ”。

  • Release.RequestedForId
    :触发当前发布的身份ID(经典发布管道)。对应的环境变量是“
    RELEASE_REQUESTEDFORID
    ”。


如果你想将ID传递到Python脚本文件中(例如,

main.py
)并直接在管道中执行脚本文件,你可以这样做:

  1. 在脚本文件中添加以下行。

    • 如果在经典构建管道/YAML 管道中运行。

      # main.py
      
      import os
      . . .
      
      user_id = os.environ['BUILD_REQUESTEDFORID']
      print(f'user_id = {user_id}')
      . . .
      
    • 如果在经典发布管道中运行。

      # main.py
      
      import os
      . . .
      
      user_id = os.environ['RELEASE_REQUESTEDFORID']
      print(f'user_id = {user_id}')
      . . .
      
  2. 然后直接执行管道中的Python脚本文件。

    - bash: 'python main.py'
      displayName: 'Run Python script'
    


如果您想将 ID 传递到 Python 脚本文件(例如 main.py)中,然后在管道之外执行更新后的脚本文件,您可以执行以下操作:

  1. 在脚本文件中添加以下行。

    • 如果在经典构建管道/YAML 管道中运行。

      # main.py
      
      import os
      . . .
      
      user_id = '{{Build.RequestedForId}}'
      print(f'user_id = {user_id}')
      . . .
      
    • 如果在经典发布管道中运行。

      # main.py
      
      import os
      . . .
      
      user_id = '{{Release.RequestedForId}}'
      print(f'user_id = {user_id}')
      . . .
      
  2. 然后在管道中,您可以使用扩展“Replace Tokens”提供的管道任务将Python脚本文件中的占位符标记(

    {{Build.RequestedForId}}
    {{Release.RequestedForId}}
    )替换为相应管道变量的实际值。

    - task: qetza.replacetokens.replacetokens-task.replacetokens@5
      displayName: 'Replace tokens in main.py'
      inputs:
        targetFiles: main.py
        tokenPattern: doublebraces
        keepToken: true
    

  3. 成功运行

    Replace Tokens
    任务后,Python脚本文件中出现以下行,

    user_id = '{{Build.RequestedForId}}'
    

    user_id = '{{Release.RequestedForId}}'
    

    将更新为,

    user_id = 'xxxxxx'
    

    xxxxxx
    ”是触发管道的用户ID的实际值。然后您可以在管道之外发布/传递更新的脚本文件以执行。


© www.soinside.com 2019 - 2024. All rights reserved.