使用 GitHub Actions 在 .net 应用程序中填充特定于环境的变量
Posted
技术标签:
【中文标题】使用 GitHub Actions 在 .net 应用程序中填充特定于环境的变量【英文标题】:Populating environment-specific variables in .net app using GitHub Actions 【发布时间】:2021-12-13 20:25:33 【问题描述】:我已经接管了对当前使用 Azure DevOps 部署为 Azure Web 服务的 .net 应用程序的支持。我的当务之急是将管道移动到我已经完成的 GitHub Actions。我想不通的一件事是如何复制 ADO 当前所做的事情:在部署期间填充 Web 配置设置:
<appSettings>
<add key="APP_CONFIG_URL" value="%APP_CONFIG_URL%" />
有没有办法使用 GitHub 操作来做到这一点?我已经看到一些关于标记化的提及,但这些文章已经有好几年了。如果没有一个好的方法来做到这一点,我最好尝试为每个环境设置不同的配置并处理那里的差异?
【问题讨论】:
不知道 azure web services 的细节,我猜他们有办法为 dev/stage/prod 设置不同的环境变量?然后,您只需将环境名称从 gh-actions 传递到 azure。基本上,我是说设置这个是你的应用部署服务的责任,而不是 gh-actions' 我最终使用了这个:***.com/questions/69798688/… 【参考方案1】: 要在操作中使用任何敏感数据/机密(如 Azure 服务主体、应用设置或连接字符串),请将它们作为 secrets 添加到 GitHub 存储库中,然后在工作流中使用它们。 如果您在 app-settings -json 和 connection-strings-json 中没有敏感信息并且不想将其设置为机密,请在工作流中将mask-inputs
设置为 false。
默认情况下,mask-inputs
为 true。
配置密钥的步骤:
在您的存储库设置 > 秘密 > 添加新秘密菜单下定义一个新秘密 将az cli 命令的内容粘贴为秘密变量的值。更新答案
当应用程序在暂存或生产中运行时,环境指示器被省略。
解决方案网页读取 Web.config 文件中 appSettings
中设置的值,以确定应用程序运行的环境:
[!code-xmlMain]
在测试环境中的值应该是“Test”,在登台和生产中应该是“Prod”。
有关A setting that you'll handle in publish profile transformation files 的更多信息,请参阅此文档。
【讨论】:
感谢您的回复,但我认为您需要返回并重新阅读我的原始帖子。我知道如何获得秘密,这很容易。我的问题是 - 根据我的代码在哪个环境中运行 - 我的应用程序配置的 URL 会有所不同。一旦我有了应用程序配置,我就可以处理我需要的其他秘密/变量。 @AdamCodes716 - 更新了答案,如果有需要请检查并告诉我。 再次感谢您的评论。我最终没有尝试这个,因为似乎有更简单的方法可以做到。以上是关于使用 GitHub Actions 在 .net 应用程序中填充特定于环境的变量的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 Github Actions 工作流将 React App 部署到 Azure,但在 TypeScript 中出现错误
是否可以在 GitHub Actions 中的 Actions 之间保留 WORKDIR?