仅在 GitHub 个操作中发布更改的项目

Only release changed projects in GitHub Actions

我在 1 个解决方案中有 5 个小型功能应用程序。我设置了 GitHub 操作以将它们自动发布到 Azure。

每次我推送新代码时,它都会运行所有操作,因为它们都在同一个存储库中。但大多数时候我只更改了其中一个项目中的代码。

如何确保只发布更改的功能应用程序?

我知道我可以将它们拆分到单独的存储库中并以​​这种方式解决它,但我正在寻找一个我不必这样做的解决方案。

您可以为每个函数创建多个工作流文件并指定 paths 选项来触发您的工作流。如果至少有一个 path 匹配路径过滤器中的模式,则工作流运行。

我假设你的目录结构如下;

|_azure-functions
  |_ function1
  |_ function2

有了上面的子目录,您可以定义每个工作流如下。

# .github/workflows/function1-ci.yml

name: Publish Function1
on:
  push:
    branches: [ main ]
    paths:
      - "function1/**"
# .github/workflows/function2-ci.yml

name: Publish Function2
on:
  push:
    branches: [ main ]
    paths:
      - "function2/**"

此外,还有一个 paths-ignore 选项可用于排除定义位置的更改。您也可以组合使用此选项。