Skip to content

Commit 793947e

Browse files
wip
1 parent ceaf676 commit 793947e

File tree

2 files changed

+35
-69
lines changed

2 files changed

+35
-69
lines changed

.github/workflows/split.yml

Lines changed: 33 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,6 @@ on:
99
packages:
1010
description: "Packages to deploy (JSON object with package info)"
1111
required: true
12-
user_name:
13-
description: "User name for commits and releases"
14-
required: false
15-
default: ""
16-
user_email:
17-
description: "User email for commits and releases"
18-
required: false
19-
default: ""
2012
user_token:
2113
description: "User's GitHub token (for release authorship)"
2214
required: false
@@ -31,6 +23,7 @@ jobs:
3123
outputs:
3224
package-list: ${{ steps.parse.outputs.package-list }}
3325
core-version: ${{ steps.parse.outputs.core-version }}
26+
is-prerelease: ${{ steps.parse.outputs.is-prerelease }}
3427
steps:
3528
- name: Parse packages
3629
id: parse
@@ -43,7 +36,12 @@ jobs:
4336
echo "Raw packages file:"
4437
cat packages.json
4538
46-
# Check if this is a prerelease version
39+
# Validate JSON
40+
if ! jq empty packages.json 2>/dev/null; then
41+
echo "❌ Invalid JSON in 'packages' input"
42+
exit 1
43+
fi
44+
4745
VERSION="${{ github.event.inputs.version }}"
4846
if [[ $VERSION =~ -(alpha|beta|rc) ]]; then
4947
echo "🚧 Detected prerelease version: $VERSION"
@@ -56,11 +54,8 @@ jobs:
5654
echo "Parsed packages:"
5755
jq -r 'to_entries[] | "\(.key): Messages=[\(.value["release-message"] | join(", "))] Stability=\(.value["minimum-stability"] // "unknown")"' packages.json
5856
59-
# Create package list for matrix
6057
package_list=$(jq -r 'keys | @json' packages.json)
6158
echo "package-list=$package_list" >> $GITHUB_OUTPUT
62-
63-
# Set core version from input (exact version)
6459
echo "core-version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
6560
echo "is-prerelease=$IS_PRERELEASE" >> $GITHUB_OUTPUT
6661
@@ -85,11 +80,9 @@ jobs:
8580
run: |
8681
if [ -f composer.json ]; then
8782
echo "Updating moox/core version in ${{ matrix.package }} to ${{ needs.prepare.outputs.core-version }}"
88-
# Replace any existing moox/core version with the current version
8983
sed -i 's/"moox\/core": "[^"]*"/"moox\/core": "${{ needs.prepare.outputs.core-version }}"/g' composer.json
90-
9184
echo "Updated composer.json:"
92-
cat composer.json | grep "moox/core" || echo "No moox/core dependency found"
85+
grep "moox/core" composer.json || echo "No moox/core dependency found"
9386
else
9487
echo "No composer.json found in ${{ matrix.package }}"
9588
fi
@@ -98,50 +91,46 @@ jobs:
9891
working-directory: packages/${{ matrix.package }}
9992
run: |
10093
if [ -f composer.json ]; then
101-
USER_NAME="${{ github.event.inputs.user_name || github.actor }}"
102-
USER_EMAIL="${{ github.event.inputs.user_email || format('{0}@users.noreply.github.com', github.actor) }}"
103-
git config --global user.name "$USER_NAME"
104-
git config --global user.email "$USER_EMAIL"
94+
git config user.name "github-actions"
95+
git config user.email "[email protected]"
10596
git add composer.json
10697
git commit -m "Update moox/core dependency to ${{ needs.prepare.outputs.core-version }}" || echo "No changes to commit"
10798
fi
10899
109100
- name: Split package to separate repository
110-
uses: "symplify/[email protected]"
101+
uses: symplify/[email protected]
102+
env:
103+
GITHUB_TOKEN: ${{ github.event.inputs.user_token != '' && github.event.inputs.user_token || secrets.BOT }}
111104
with:
112105
tag: "${{ github.event.inputs.version }}"
113106
package_directory: "packages/${{ matrix.package }}"
114107
repository_organization: "mooxphp"
115108
repository_name: "${{ matrix.package }}"
116-
user_name: "${{ github.event.inputs.user_name || github.actor }}"
117-
user_email: "${{ github.event.inputs.user_email || format('{0}@users.noreply.github.com', github.actor) }}"
118109

119110
- name: Create GitHub Release for split package
120111
run: |
121112
PACKAGE="${{ matrix.package }}"
122113
VERSION="${{ github.event.inputs.version }}"
123-
RELEASE_BODY=$(echo '${{ github.event.inputs.packages }}' | jq -r ".\"$PACKAGE\".\"release-message\"[]" | head -10 | tr '\n' ' ')
124-
IS_PRERELEASE=${{ contains(github.event.inputs.version, 'alpha') || contains(github.event.inputs.version, 'beta') || contains(github.event.inputs.version, 'rc') }}
125-
USER_NAME="${{ github.event.inputs.user_name || github.actor }}"
126-
127-
# Use user token if provided, otherwise use bot token
128-
if [ -n "${{ github.event.inputs.user_token }}" ]; then
129-
RELEASE_TOKEN="${{ github.event.inputs.user_token }}"
130-
echo "Creating release as user: $USER_NAME"
114+
RELEASE_BODY=$(echo '${{ github.event.inputs.packages }}' | jq -r ".\"$PACKAGE\".\"release-message\" // [] | .[:10] | join(\"\\n\")")
115+
116+
echo "Creating release for $PACKAGE $VERSION"
117+
echo "Release notes:"
118+
echo "$RELEASE_BODY"
119+
120+
# Wait for tag propagation
121+
sleep 10
122+
123+
if [ "${{ needs.prepare.outputs.is-prerelease }}" = "true" ]; then
124+
gh release create "$VERSION" \
125+
--repo "mooxphp/$PACKAGE" \
126+
--title "Release $VERSION" \
127+
--notes "$RELEASE_BODY" \
128+
--prerelease
131129
else
132-
RELEASE_TOKEN="${{ secrets.TOKEN }}"
133-
echo "Creating release as bot (no user token provided)"
134-
RELEASE_BODY="$RELEASE_BODY - Released by: $USER_NAME"
130+
gh release create "$VERSION" \
131+
--repo "mooxphp/$PACKAGE" \
132+
--title "Release $VERSION" \
133+
--notes "$RELEASE_BODY"
135134
fi
136-
137-
# Wait a moment for tag to be available
138-
sleep 10
139-
140-
# Create release from existing tag using GitHub CLI
141-
gh release create "$VERSION" \
142-
--repo "mooxphp/$PACKAGE" \
143-
--title "Release $VERSION" \
144-
--notes "$RELEASE_BODY" \
145-
$([ "$IS_PRERELEASE" = "true" ] && echo "--prerelease" || echo "")
146135
env:
147-
GH_TOKEN: ${{ github.event.inputs.user_token || secrets.TOKEN }}
136+
GH_TOKEN: ${{ github.event.inputs.user_token != '' && github.event.inputs.user_token || secrets.TOKEN }}

packages/monorepo/src/Commands/CreateRelease.php

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,6 @@ public function handle(): int
119119
$newVersion = $this->askForNewVersion($currentVersion);
120120
$this->info("New version: {$newVersion}\n");
121121

122-
// Ask for user token for release authorship
123-
$userToken = $this->askForUserToken();
124-
125122
$missingPackagesResult = $this->packageComparisonService->isNewOrgPackage(array_keys($packages['public']), array_keys($packages['private']), $orgPackages);
126123

127124
// Flatten the missing packages result into a single array
@@ -190,7 +187,7 @@ public function handle(): int
190187
[
191188
'version' => $newVersion,
192189
'packages' => $publicPackagesJson,
193-
'user_token' => $userToken,
190+
'user_token' => $this->getGitHubToken(),
194191
]
195192
);
196193
}
@@ -207,7 +204,7 @@ public function handle(): int
207204
[
208205
'version' => $newVersion,
209206
'packages' => $privatePackagesJson,
210-
'user_token' => $userToken,
207+
'user_token' => $this->getGitHubToken(),
211208
]
212209
);
213210
}
@@ -398,26 +395,6 @@ public function askForNewVersion(string $currentVersion): string
398395
return $version;
399396
}
400397

401-
public function askForUserToken(): string
402-
{
403-
$this->line("\n🔑 GitHub Release Authorship");
404-
$this->line('To appear as the author of GitHub releases, provide your personal access token.');
405-
$this->line('Leave empty to use bot token (releases will show as created by mooxbot).');
406-
$this->line("Token needs 'public_repo' or 'repo' scope for the target repositories.");
407-
408-
$token = $this->secret('Enter your GitHub personal access token (optional):');
409-
410-
if (empty($token)) {
411-
$this->line('ℹ️ Using bot token - releases will be created by mooxbot');
412-
413-
return '';
414-
} else {
415-
$this->line('✅ Using your token - releases will show you as author');
416-
417-
return $token;
418-
}
419-
}
420-
421398
// Helper methods
422399
private function validateVersionFormat(string $version): bool
423400
{

0 commit comments

Comments
 (0)