)]}'
{
  "commit": "bc6c7466dc74123650ef3f38e167d3c8824ce3a1",
  "tree": "4972d30e7faafc85a97cab732d9ad9a8318d6dda",
  "parents": [
    "96f9f25f537ab3367959155fcc7465befe1b6cde"
  ],
  "author": {
    "name": "John \"codefu\" McDole",
    "email": "codefu@google.com",
    "time": "Thu Jun 25 20:27:03 2026"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jun 25 20:27:03 2026"
  },
  "message": "ci(flutter_agy_docker): conditionally tag docker images by release channel (#5086)\n\nAdd `orchestrator.yaml` to fetch the latest `stable` Flutter version and automatically trigger the `flutter-agy-docker` build with the correct version substitution.\r\n\r\nUpdate `cloudbuild.yaml` to fetch the official Flutter releases JSON and conditionally apply docker tags:\r\n- Tag and push as `stable` and `latest` if the built version matches the current stable release.\r\n- Tag and push as `beta` if the built version matches the current beta release.\r\n- Remove the unconditional `latest` tagging that applied to every build.\r\n\r\nFlows:\r\n\r\n```mermaid\r\nsequenceDiagram\r\n    autonumber\r\n    actor Scheduler as Cloud Scheduler\r\n    actor User as Manual Trigger\r\n    participant Orchestrator as orchestrator.yaml\r\n    participant CloudBuild as cloudbuild.yaml\r\n    participant Storage as Google Cloud Storage (Releases)\r\n    participant AR as Artifact Registry\r\n\r\n    %% Cloud Scheduler Flow\r\n    rect rgb(240, 248, 255)\r\n        note over Scheduler, AR: Flow 1: Automated Stable Build\r\n        Scheduler-\u003e\u003eOrchestrator: Trigger daily/weekly\r\n        Orchestrator-\u003e\u003eStorage: Fetch releases_linux.json\r\n        Storage--\u003e\u003eOrchestrator: Return JSON\r\n        Orchestrator-\u003e\u003eOrchestrator: Parse latest stable version (e.g. 3.44.4)\r\n        Orchestrator-\u003e\u003eCloudBuild: gcloud builds triggers run \u003cbr/\u003e(_FLUTTER_VERSION\u003d3.44.4)\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Build images (flutter_base, flutter_docker)\r\n        CloudBuild-\u003e\u003eStorage: Fetch releases_linux.json (Step 3)\r\n        Storage--\u003e\u003eCloudBuild: Return JSON\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Compare _FLUTTER_VERSION to stable/beta\r\n        note right of CloudBuild: Matches Stable\r\n\r\n        CloudBuild-\u003e\u003eAR: Push tag: :3.44.4\r\n        CloudBuild-\u003e\u003eAR: Push tag: :stable\r\n        CloudBuild-\u003e\u003eAR: Push tag: :latest\r\n    end\r\n\r\n    %% Manual Trigger Flow\r\n    rect rgb(255, 248, 240)\r\n        note over User, AR: Flow 2: Manual Version Build\r\n        User-\u003e\u003eCloudBuild: Trigger manually \u003cbr/\u003e(_FLUTTER_VERSION\u003dX.Y.Z)\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Build images (flutter_base, flutter_docker)\r\n        CloudBuild-\u003e\u003eStorage: Fetch releases_linux.json (Step 3)\r\n        Storage--\u003e\u003eCloudBuild: Return JSON\r\n\r\n        CloudBuild-\u003e\u003eCloudBuild: Compare _FLUTTER_VERSION to stable/beta\r\n\r\n        alt Matches Stable Version\r\n            CloudBuild-\u003e\u003eAR: Push tag: :X.Y.Z\r\n            CloudBuild-\u003e\u003eAR: Push tag: :stable\r\n            CloudBuild-\u003e\u003eAR: Push tag: :latest\r\n        else Matches Beta Version\r\n            CloudBuild-\u003e\u003eAR: Push tag: :X.Y.Z\r\n            CloudBuild-\u003e\u003eAR: Push tag: :beta\r\n        else Neither (Random Version)\r\n            CloudBuild-\u003e\u003eAR: Push tag: :X.Y.Z\r\n            note right of CloudBuild: Skips stable, latest, and beta tags\r\n        end\r\n    end\r\n```",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "91ce76cede82c1f868656404bc6abbba3ea3e211",
      "old_mode": 33188,
      "old_path": "cloud_build/flutter_agy_docker/cloudbuild.yaml",
      "new_id": "ba79450d7a75a36706fc9c75a1e7e05a6ceb5b29",
      "new_mode": 33188,
      "new_path": "cloud_build/flutter_agy_docker/cloudbuild.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "92ee10ed9c0395ecc7a3d6974b209fab5df407ac",
      "new_mode": 33188,
      "new_path": "cloud_build/flutter_agy_docker/orchestrator.yaml"
    }
  ]
}
