我目前可以访问发布 Azure 函数的 bash shell 中的环境变量,并且我希望能够访问我的函数应用程序内的相同环境变量。
我的管道目前看起来像这样:
az login --service-principal -u $USRN -p $PASSW --tenant $TENANT
func azure functionapp publish $FUNCTION_APP_NAME --python
在函数发布期间可以指定一些环境变量(即
CONNECTION_URL=example.com
)吗?
我见过诸如
--publish-local-settings
、--publish-settings-only
和 --overwrite-settings
之类的操作,但我不认为它们可以帮助解决某个特定的环境变量。谢谢您的帮助!
如果您的需求是配置Azure Function App的应用程序设置,您可以测试使用Azure DevOps管道任务AzureFunctionApp@2,它使我们能够在应用程序部署期间设置环境变量。
此任务不像
az login
命令那样根据用户主体及其密码进行身份验证,而是使用 Azure 资源管理器 服务连接进行身份验证,其底层主体是通常分配有订阅/资源组贡献者角色的应用程序注册。因此,也有助于避免密码泄露或用户MFA阻碍的风险。
这是一个示例 YAML 管道供您参考。
variables:
ARMSvcCnn: TheARMSvcCnnName
AzureFunctionApp: TheFunctionAppName
pool:
vmImage: ubuntu-latest
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- task: UsePythonVersion@0
displayName: "Set Python version to 3.9"
inputs:
versionSpec: '3.9'
architecture: 'x64'
- bash: |
if [ -f extensions.csproj ]
then
dotnet build extensions.csproj --output ./bin
fi
pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt
- task: ArchiveFiles@2
displayName: "Archive files"
inputs:
rootFolderOrFile: "$(System.DefaultWorkingDirectory)"
includeRootFolder: false
archiveFile: "$(Build.ArtifactStagingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/build$(Build.BuildId).zip'
artifactName: 'drop'
- stage: Deploy
jobs:
- deployment: DeploymentJob
environment: AzureFunctionAppPython
strategy:
runOnce:
deploy:
steps:
- task: AzureFunctionApp@2
inputs:
connectedServiceNameARM: '$(ARMSvcCnn)'
appType: 'functionAppLinux'
appName: '$(AzureFunctionApp)'
package: '$(Pipeline.Workspace)/drop/build$(Build.BuildId).zip'
appSettings: '-TestEnvVar $(Build.BuildId) -CONNECTION_URL example$(Build.BuildId).com'
deploymentMethod: 'auto'