Azure Functions "AzureWebJobsStorage is missing" in CI
The Functions host needs a storage account connection (AzureWebJobsStorage) for triggers, leases, and singleton locks. When it is missing or empty in CI, non-HTTP triggers fail to start and the host may refuse to run.
What this error means
The host fails at startup with "Value cannot be null. (Parameter 'AzureWebJobsStorage')" or "The 'AzureWebJobsStorage' connection string is missing", especially with timer or queue triggers.
Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.TimerTrigger'.
Microsoft.WindowsAzure.Storage: The 'AzureWebJobsStorage' connection string is missing.Common causes
No AzureWebJobsStorage set in the CI environment
local.settings.json is gitignored and not present in CI, and no app setting or env var supplies the storage connection.
Non-HTTP triggers require storage
Timer, queue, and blob triggers need a storage backend for leases; without it the host cannot index them.
How to fix it
Provide a storage connection in CI
Set AzureWebJobsStorage from a secret, or point it at the Azurite emulator for local/integration runs.
env:
AzureWebJobsStorage: ${{ secrets.AZURE_WEBJOBS_STORAGE }}Use the Azurite emulator for integration tests
Run Azurite and use the well-known development connection string so triggers can bind without a real account.
AzureWebJobsStorage=UseDevelopmentStorage=trueHow to prevent it
- Inject AzureWebJobsStorage from a secret in CI.
- Run Azurite for integration tests that use non-HTTP triggers.
- Do not rely on gitignored local.settings.json in CI.