使用 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?

如何使用 Github-actions 在 Docker 上使用 Mysql 运行 Prisma 迁移

Github Actions生成 secrets

如何在 Github Actions 中获取当前分支?

github Actions 使用方法