feat(orchestrator): multi-storage support for GCP and Azure providers

Both providers now support four storage backends via gcpStorageType / azureStorageType:

GCP Cloud Run:
  - gcs-fuse: Mount GCS bucket as POSIX filesystem (unlimited, best for large sequential I/O)
  - gcs-copy: Copy artifacts in/out via gsutil (simpler, no FUSE overhead)
  - nfs: Filestore NFS mount (true POSIX, good random I/O, up to 100 TiB)
  - in-memory: tmpfs (fastest, volatile, up to 32 GiB)

Azure ACI:
  - azure-files: SMB file share mount (up to 100 TiB, premium throughput)
  - blob-copy: Copy artifacts in/out via az storage blob (no mount overhead)
  - azure-files-nfs: NFS 4.1 file share mount (true POSIX, no SMB lock overhead)
  - in-memory: emptyDir tmpfs (fastest, volatile, limited by container memory)

New inputs: gcpStorageType, gcpFilestoreIp, gcpFilestoreShare, azureStorageType,
azureBlobContainer. Constructor validates storage config and warns on missing
prerequisites (e.g. NFS requires VPC connector/subnet).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
frostebite
2026-03-05 07:07:20 +00:00
parent d8563369e1
commit f4bc5d20c4
5 changed files with 466 additions and 152 deletions
+41 -6
View File
@@ -291,12 +291,33 @@ inputs:
description:
'[Orchestrator] [Experimental] Google Cloud region for Cloud Run Jobs (e.g. us-central1).
Defaults to the region input if empty.'
gcpStorageType:
required: false
default: 'gcs-fuse'
description:
'[Orchestrator] [Experimental] Storage type for Cloud Run Jobs. Options:
gcs-fuse (mount GCS bucket as filesystem, unlimited size, best for large sequential I/O),
gcs-copy (copy artifacts in/out via gsutil, simpler, no FUSE overhead),
nfs (Filestore NFS mount, true POSIX, good random I/O, up to 100 TiB),
in-memory (tmpfs, fastest but volatile, up to 32 GiB).'
gcpBucket:
required: false
default: ''
description:
'[Orchestrator] [Experimental] GCS bucket name for build artifact storage.
Mounted via GCS FUSE for large filesystem support.'
Used by gcs-fuse and gcs-copy storage types.'
gcpFilestoreIp:
required: false
default: ''
description:
'[Orchestrator] [Experimental] Filestore instance IP address for NFS storage type.
Required when gcpStorageType is nfs.'
gcpFilestoreShare:
required: false
default: '/share1'
description:
'[Orchestrator] [Experimental] Filestore share name for NFS storage type.
Defaults to /share1 (the Filestore default).'
gcpMachineType:
required: false
default: 'e2-standard-4'
@@ -306,8 +327,8 @@ inputs:
required: false
default: '100'
description:
'[Orchestrator] [Experimental] Disk size in GB for Cloud Run Jobs. Supports up to 32GB
in-memory or unlimited via GCS FUSE bucket mount.'
'[Orchestrator] [Experimental] Disk size in GB for Cloud Run Jobs in-memory volumes.
Only applies to in-memory storage type (max 32).'
gcpServiceAccount:
required: false
default: ''
@@ -330,18 +351,32 @@ inputs:
description:
'[Orchestrator] [Experimental] Azure region for Container Instances (e.g. eastus, westeurope).
Defaults to the region input if empty.'
azureStorageType:
required: false
default: 'azure-files'
description:
'[Orchestrator] [Experimental] Storage type for Azure Container Instances. Options:
azure-files (SMB file share mount, up to 100 TiB, premium throughput),
blob-copy (copy artifacts in/out via az storage blob, no mount overhead),
azure-files-nfs (NFS 4.1 file share mount, true POSIX, no SMB lock overhead),
in-memory (emptyDir tmpfs, fastest but volatile, size limited by container memory).'
azureStorageAccount:
required: false
default: ''
description:
'[Orchestrator] [Experimental] Azure Storage Account name for file share mounting.
Uses Premium FileStorage for high-throughput large artifact I/O.'
'[Orchestrator] [Experimental] Azure Storage Account name.
Used by azure-files, azure-files-nfs, and blob-copy storage types.'
azureFileShareName:
required: false
default: 'unity-builds'
description:
'[Orchestrator] [Experimental] Azure File Share name within the storage account.
Supports up to 100 TiB per share.'
Used by azure-files and azure-files-nfs storage types. Supports up to 100 TiB per share.'
azureBlobContainer:
required: false
default: 'unity-builds'
description:
'[Orchestrator] [Experimental] Azure Blob container name for blob-copy storage type.'
azureSubscriptionId:
required: false
default: ''