一个存储库中的两个项目具有 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
目录以外的所有文件和目录来清理根目录。
我目前正在开发我正在开发的个人电子商务项目,后端使用 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
目录以外的所有文件和目录来清理根目录。