仅在 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
选项可用于排除定义位置的更改。您也可以组合使用此选项。
我在 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
选项可用于排除定义位置的更改。您也可以组合使用此选项。