Skip to content

Commit bb38525

Browse files
committed
Add workflow to split monorepo
1 parent d9b1416 commit bb38525

2 files changed

Lines changed: 67 additions & 0 deletions

File tree

.github/workflows/split.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: Split Monorepo
2+
on:
3+
push:
4+
tags:
5+
- '*'
6+
branches:
7+
- 'master'
8+
release:
9+
types: [ created ]
10+
11+
jobs:
12+
generate-packages:
13+
runs-on: ubuntu-latest
14+
outputs:
15+
packages: ${{ steps.set-packages.outputs.packages }}
16+
steps:
17+
- uses: actions/checkout@v4
18+
- id: set-packages
19+
name: Generate Packages
20+
run: echo "packages=$(php tools/get-packages.php | jq -c)" >> $GITHUB_OUTPUT
21+
22+
split:
23+
needs: generate-packages
24+
strategy:
25+
fail-fast: false
26+
matrix: ${{ fromJSON(needs.generate-packages.outputs.packages) }}
27+
runs-on: 'ubuntu-latest'
28+
steps:
29+
-
30+
run: echo ${{ matrix.name }}
31+
-
32+
name: checkout
33+
uses: actions/checkout@v4
34+
-
35+
name: Split to repository
36+
uses: danharrin/monorepo-split-github-action@v2.3.0
37+
env:
38+
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
39+
with:
40+
branch: 'master'
41+
package_directory: 'packages/${{ matrix.package_directory }}'
42+
repository_name: ${{ matrix.repository_name }}
43+
repository_organization: 'sxbrsky'
44+
user_email: 'dominikszamburski99@gmail.com'
45+
user_name: 'Dominik Szamburski'

tools/get-packages.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php declare(strict_types=1);
2+
3+
$packages = [];
4+
5+
foreach (\glob(\dirname(__DIR__) . '/packages/*/composer.json') as $package) {
6+
$composerData = \json_decode(\file_get_contents($package));
7+
8+
if (!$composerData->name) {
9+
continue;
10+
}
11+
12+
$packages[] = [
13+
'name' => $composerData->name,
14+
'repository_name' => \str_replace('/', '-', $composerData->name),
15+
'package_directory' => \pathinfo(\dirname($package), \PATHINFO_BASENAME),
16+
];
17+
}
18+
19+
$output = [];
20+
$output['include'] = $packages;
21+
22+
echo \json_encode($output);

0 commit comments

Comments
 (0)