一个存储库中的两个项目具有 GitHub 个操作 (monorepo)

Two projects in one repository with GitHub Actions (monorepo)

我目前正在开发我正在开发的个人电子商务项目,后端使用 Java/spring 启动,前端使用 angular。两个项目(前端和后端)都在 GitHub.

上的单个存储库中

如何为两个项目设置一个 GitHub 工作流程?

Screenshot of my project's repo

由于大多数操作都假设您的代码位于项目的根目录中并且 working-directory 选项 doesn't work on job level 您可以做一些小技巧。

假设您的目录结构如下:

backend/
 - gradlew.sh
 - src/
frontend/
 - package.json
 - src

您可以:

  • 为后端创建一个作业,为前端创建一个作业
  • 在作业开始时将子文件夹移动到根目录
  • 运行 commands/actions

这可能是这样的:

jobs:
  be:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: mv -f backend/* .
      - uses: actions/setup-java@v3
        with:
          java-version: 17
          distribution: temurin
      - run: ./gradlew check
  fe:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: mv -f frontend/* .
      - uses: actions/setup-node@v3
        with:
          node-version: 16
      - run: npm build && npm test

不过要小心:此 mv 只是将子文件夹中的所有内容移动到根目录中。如果您在根目录中有一些其他文件可能会干扰,您应该首先通过删除 backend 目录以外的所有文件和目录来清理根目录。