You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps流水线中如何将生成的policy.json提交至代码仓库?

解决Azure DevOps流水线生成policy.json未提交到代码仓库的问题

先修复Python代码的基础问题

你的代码存在两处会导致运行失败的问题,先修正才能确保生成policy.json:

  • 未定义request_data变量,直接删除该行;
  • with open代码块缩进错误,需与上方代码对齐;
  • 补充必要的模块导入,否则无法调用GCP API和JSON处理方法。

修正后的代码示例:

import json
from googleapiclient import discovery

def get_policy():
    project_id = "my-project"
    service = discovery.build('cloudresourcemanager', 'v1')
    
    policy = service.projects().getIamPolicy(
        resource=project_id,
        body={"options": {"requestedPolicyVersion": 3}}
    ).execute()

    return policy

if __name__ == "__main__":
    policy = get_policy()
    with open("policy.json", "w") as file:
        json.dump(policy, file, indent=4)

在Azure DevOps流水线中添加提交推送步骤

流水线运行时会克隆代码仓库到代理机器,但生成的文件仅存在于本地工作目录,需要手动添加Git提交推送步骤才能同步到远程仓库:

1. 配置流水线权限

确保流水线使用的服务账号(或运行身份)拥有代码仓库的推送权限,如果是受保护分支,需将该身份加入允许推送的列表。

2. 修改流水线YAML配置

在Python执行任务后,添加Git操作的脚本步骤,示例YAML片段:

steps:
# 开启凭证持久化,让流水线能直接推送代码
- checkout: self
  persistCredentials: true

# 运行Python脚本生成policy.json
- script: python your_script_name.py
  displayName: 'Fetch GCP IAM policy'

# 提交并推送文件到远程仓库
- script: |
    git config --global user.name "Azure DevOps Pipeline"
    git config --global user.email "pipeline@devops.azure.com"
    # 检查文件是否生成
    ls -l policy.json
    git add policy.json
    # 无变更时跳过提交
    git commit -m "Automatically update GCP IAM policy" || echo "No changes to commit"
    # 拉取最新代码避免冲突,再推送
    git pull origin main --rebase
    git push origin main
  displayName: 'Commit and push policy.json'

3. Windows代理适配

如果流水线使用Windows代理,将上述Bash脚本替换为PowerShell命令:

git config --global user.name "Azure DevOps Pipeline"
git config --global user.email "pipeline@devops.azure.com"
Get-ChildItem policy.json
git add policy.json
git commit -m "Automatically update GCP IAM policy" 2>$null
git pull origin main --rebase
git push origin main

内容的提问来源于stack exchange,提问作者strigi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 17:50:19