如何将 GitHub Actions 与多个存储库一起使用并部署到 GitHub Pages?
Posted
技术标签:
【中文标题】如何将 GitHub Actions 与多个存储库一起使用并部署到 GitHub Pages?【英文标题】:How to use GitHub Actions with multiple repositories and deploy to GitHub Pages? 【发布时间】:2020-06-02 00:40:57 【问题描述】:有没有办法设置 Github Actions 来运行多个 npm run build
s?我想使用多个存储库并将它们设置为主站点上的不同网页。
假设我有 3 个 repos:Main、Angular App 和 React App。
主存储库将包含我的登陆站点。 Angular App 和 React App 将是两个不同的站点。
从foobar.github.io
(主仓库),我会去foobar.github.io/angular
导航到我的Angular 应用程序。 foobar.github.io/react
将是一个反应应用程序。
每个应用程序将位于 3 个不同的存储库中。有没有办法让我推送到我的 Angular 应用程序,GitHub Actions 会自动执行ng build --prod --base-href='angular'
,并更新该页面或甚至为所有存储库运行构建并部署它?
要在本地执行此操作,我必须在每个存储库上执行构建命令,然后将每个 prod
文件夹拖到我的存储库中,然后将其向上推,在我看来,这会变得非常低效。
【问题讨论】:
【参考方案1】:执行此操作的最简单方法是向每个存储库添加一个工作流,以更新 Pages 中的相应区域。 IE。在“主要”回购中,它看起来像:
on: push
jobs:
main:
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Build
run: TODO
- name: Publish
run: TODO
在其他存储库中,您会有类似的东西。例如在 Angular 存储库中:
on: push
jobs:
angular:
steps:
- name: Checkout App
uses: actions/checkout@v2
- name: Build Angular
run: |
npm ci
npm run build
ng build --prod --base-href='angular'
- name: Publish
run: TODO
如果您只想在更新 Main 时发布,您可以在 Main 存储库中有一个工作流来构建和发布所有三个,例如:
on: push
jobs:
main:
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
repository: my-org/main
path: main
- name: Build
run: TODO
working-directory: ./main
- name: Publish
run: TODO
working-directory: ./main
react:
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
repository: my-org/react
path: react
- name: Build React
run: TODO
working-directory: ./react
- name: Publish
run: TODO
working-directory: ./react
angular:
steps:
- name: Checkout App
uses: actions/checkout@v2
with:
repository: my-org/angular
path: angular
- name: Build Angular
run: |
npm ci
npm run build
ng build --prod --base-href='angular',
working-directory: ./angular
- name: Publish
run: TODO
working-directory: ./angular
【讨论】:
不要认为这适用于具有单独的 API 存储库和单独的 UI 存储库的项目。我该怎么做?以上是关于如何将 GitHub Actions 与多个存储库一起使用并部署到 GitHub Pages?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GitHub Actions 中构建的 Dockerfile 中使用 github 令牌并尝试克隆私有存储库?
在 GitHub Actions 工作流程中未使用语义发布-monorepo 找到存储库
如何配置 GitHub Actions 以构建依赖于私有存储库的 Azure 静态 Web 应用程序?
GitHub Actions - 将公共回购克隆到我的私人回购?