使用 GitHub 的 Azure Function CI/CD 部署丢失了 .gitignore 中的重要文件
Azure Function CI/CD deployment using GitHub loses important file in the .gitignore
奇怪的问题,但我找不到答案的问题。解决消费者问题的经典“中间人”(Git)。
我有一个 Azure 函数(python,计时器触发器),我可以直接从 VS Code 成功部署它。这是通常的文件 structure, etc. BUT, when I assign a deployment slot in the Portal (Deployment Center), connecting to GitHub (using this example),我丢失了一个重要的 .py
文件,我在 .gitignore
文件中列出了该文件。 .gitignore
文件位于项目文件夹的根目录中。
此文件有一些 API 键、Slack 挂钩等 - 所以它对我的功能至关重要。显然,我不希望这些密钥暴露在我的 Git 中心页面上,但我在 Azure 函数中需要它们。
如果我想做一个 CI/CD 管道,我是 SOL 吗?
例如,我并不总是在使用 VS Code 的个人笔记本电脑周围,我可能想 fiddle 直接从 GitHub 即时使用计时器计划 - 而这个 CI/CD 连接是确保我的函数保持 运行 的最佳方式(它是 linux 消费计划中的 python 函数,所以我不能只从门户编辑 CRON) .
当使用 VSCode 进行开发时,您通常会将秘密存储在 local.settings.json
中以进行本地调试和测试。
Code and test Azure Functions locally - Local Settings File
当您从 Visual Studio 代码部署时,它会将 local.settings.json
文件发布为应用程序设置,但由于该文件在您的 .gitignore
中,因此您的 github 遥控器不会知道关于要发布的文件。
FunctionApp的应用设置可以在FunctionApop的配置面板下找到。然后,任何应用程序设置都可以在您的 FunctionApp 中作为代码中的环境变量进行引用。
Azure Functions Python developer guide - Environment Variables
由于 local.settings.json
文件通常添加到 .gitignore
文件中,因此您需要找到另一种方法来将应用程序设置作为 github 操作的一部分 CI/CD 过程。
你有几个选择。您可以在 github 中创建 repo 机密,在部署时引用这些机密并编写一个脚本,将机密与您的功能代码同时部署到您的应用程序设置中。
Github Actions - Encrypted Secrets
或者,您可以从密钥保管库中提取您的应用程序设置,这样您根本不需要管理机密,只要它们是静态的而不是动态的,您就可以 pre-populate 密钥保管库并使用Azure 函数的应用程序设置中的密钥保管库引用。
Use Key Vault references for App Service and Azure Functions
有一个 github 操作可以让您将您的应用程序设置指定为 JSON,我没有使用过它,但看起来它可能正是您正在寻找的。
https://github.com/marketplace/actions/azure-app-service-settings
奇怪的问题,但我找不到答案的问题。解决消费者问题的经典“中间人”(Git)。
我有一个 Azure 函数(python,计时器触发器),我可以直接从 VS Code 成功部署它。这是通常的文件 structure, etc. BUT, when I assign a deployment slot in the Portal (Deployment Center), connecting to GitHub (using this example),我丢失了一个重要的 .py
文件,我在 .gitignore
文件中列出了该文件。 .gitignore
文件位于项目文件夹的根目录中。
此文件有一些 API 键、Slack 挂钩等 - 所以它对我的功能至关重要。显然,我不希望这些密钥暴露在我的 Git 中心页面上,但我在 Azure 函数中需要它们。
如果我想做一个 CI/CD 管道,我是 SOL 吗?
例如,我并不总是在使用 VS Code 的个人笔记本电脑周围,我可能想 fiddle 直接从 GitHub 即时使用计时器计划 - 而这个 CI/CD 连接是确保我的函数保持 运行 的最佳方式(它是 linux 消费计划中的 python 函数,所以我不能只从门户编辑 CRON) .
当使用 VSCode 进行开发时,您通常会将秘密存储在 local.settings.json
中以进行本地调试和测试。
Code and test Azure Functions locally - Local Settings File
当您从 Visual Studio 代码部署时,它会将 local.settings.json
文件发布为应用程序设置,但由于该文件在您的 .gitignore
中,因此您的 github 遥控器不会知道关于要发布的文件。
FunctionApp的应用设置可以在FunctionApop的配置面板下找到。然后,任何应用程序设置都可以在您的 FunctionApp 中作为代码中的环境变量进行引用。
Azure Functions Python developer guide - Environment Variables
由于 local.settings.json
文件通常添加到 .gitignore
文件中,因此您需要找到另一种方法来将应用程序设置作为 github 操作的一部分 CI/CD 过程。
你有几个选择。您可以在 github 中创建 repo 机密,在部署时引用这些机密并编写一个脚本,将机密与您的功能代码同时部署到您的应用程序设置中。
Github Actions - Encrypted Secrets
或者,您可以从密钥保管库中提取您的应用程序设置,这样您根本不需要管理机密,只要它们是静态的而不是动态的,您就可以 pre-populate 密钥保管库并使用Azure 函数的应用程序设置中的密钥保管库引用。
Use Key Vault references for App Service and Azure Functions
有一个 github 操作可以让您将您的应用程序设置指定为 JSON,我没有使用过它,但看起来它可能正是您正在寻找的。
https://github.com/marketplace/actions/azure-app-service-settings