|
21 | 21 | description: 'New Util version (e.g., 1.0.1)' |
22 | 22 | required: false |
23 | 23 | type: string |
| 24 | + release_ui: |
| 25 | + description: 'Release JEngine.UI?' |
| 26 | + required: true |
| 27 | + type: boolean |
| 28 | + default: false |
| 29 | + ui_version: |
| 30 | + description: 'New UI version (e.g., 1.0.0)' |
| 31 | + required: false |
| 32 | + type: string |
24 | 33 | manual_changelog: |
25 | 34 | description: 'Manual changelog entries (optional)' |
26 | 35 | required: false |
|
37 | 46 | outputs: |
38 | 47 | core_version: ${{ steps.validate.outputs.core_version }} |
39 | 48 | util_version: ${{ steps.validate.outputs.util_version }} |
| 49 | + ui_version: ${{ steps.validate.outputs.ui_version }} |
40 | 50 | release_tag: ${{ steps.validate.outputs.release_tag }} |
41 | 51 | create_github_release: ${{ steps.validate.outputs.create_github_release }} |
42 | 52 |
|
|
48 | 58 | id: validate |
49 | 59 | run: | |
50 | 60 | # Check at least one package is selected |
51 | | - if [ "${{ inputs.release_core }}" != "true" ] && [ "${{ inputs.release_util }}" != "true" ]; then |
| 61 | + if [ "${{ inputs.release_core }}" != "true" ] && [ "${{ inputs.release_util }}" != "true" ] && [ "${{ inputs.release_ui }}" != "true" ]; then |
52 | 62 | echo "Error: At least one package must be selected for release" |
53 | 63 | exit 1 |
54 | 64 | fi |
|
65 | 75 | # Get current versions from package.json |
66 | 76 | CURRENT_CORE_VERSION=$(jq -r '.version' UnityProject/Packages/com.jasonxudeveloper.jengine.core/package.json) |
67 | 77 | CURRENT_UTIL_VERSION=$(jq -r '.version' UnityProject/Packages/com.jasonxudeveloper.jengine.util/package.json) |
| 78 | + CURRENT_UI_VERSION=$(jq -r '.version' UnityProject/Packages/com.jasonxudeveloper.jengine.ui/package.json) |
68 | 79 |
|
69 | 80 | echo "Current Core version: $CURRENT_CORE_VERSION" |
70 | 81 | echo "Current Util version: $CURRENT_UTIL_VERSION" |
| 82 | + echo "Current UI version: $CURRENT_UI_VERSION" |
71 | 83 |
|
72 | 84 | # Validate Core version if releasing |
73 | 85 | if [ "${{ inputs.release_core }}" == "true" ]; then |
@@ -106,6 +118,24 @@ jobs: |
106 | 118 | echo "util_version=$CURRENT_UTIL_VERSION" >> $GITHUB_OUTPUT |
107 | 119 | fi |
108 | 120 |
|
| 121 | + # Validate UI version if releasing |
| 122 | + if [ "${{ inputs.release_ui }}" == "true" ]; then |
| 123 | + if [ -z "${{ inputs.ui_version }}" ]; then |
| 124 | + echo "Error: UI version is required when releasing UI package" |
| 125 | + exit 1 |
| 126 | + fi |
| 127 | + validate_version "${{ inputs.ui_version }}" |
| 128 | +
|
| 129 | + if [ "${{ inputs.ui_version }}" == "$CURRENT_UI_VERSION" ]; then |
| 130 | + echo "Error: New UI version must be different from current version" |
| 131 | + exit 1 |
| 132 | + fi |
| 133 | +
|
| 134 | + echo "ui_version=${{ inputs.ui_version }}" >> $GITHUB_OUTPUT |
| 135 | + else |
| 136 | + echo "ui_version=$CURRENT_UI_VERSION" >> $GITHUB_OUTPUT |
| 137 | + fi |
| 138 | +
|
109 | 139 | # Release tag always follows Core version |
110 | 140 | # GitHub releases are only created when Core is released |
111 | 141 | if [ "${{ inputs.release_core }}" == "true" ]; then |
@@ -276,13 +306,36 @@ jobs: |
276 | 306 | # Build changelog |
277 | 307 | CHANGELOG="" |
278 | 308 |
|
279 | | - # Add package release info (always show both versions for clarity) |
280 | | - if [ "${{ inputs.release_core }}" == "true" ] && [ "${{ inputs.release_util }}" == "true" ]; then |
281 | | - CHANGELOG="${CHANGELOG}**Released**: JEngine.Core v${{ needs.validate.outputs.core_version }}, JEngine.Util v${{ needs.validate.outputs.util_version }}\n\n" |
282 | | - elif [ "${{ inputs.release_core }}" == "true" ]; then |
283 | | - CHANGELOG="${CHANGELOG}**Released**: JEngine.Core v${{ needs.validate.outputs.core_version }} (Util remains v${{ needs.validate.outputs.util_version }})\n\n" |
| 309 | + # Add package release info |
| 310 | + RELEASED_PACKAGES="" |
| 311 | + UNCHANGED_PACKAGES="" |
| 312 | +
|
| 313 | + if [ "${{ inputs.release_core }}" == "true" ]; then |
| 314 | + RELEASED_PACKAGES="${RELEASED_PACKAGES}JEngine.Core v${{ needs.validate.outputs.core_version }}, " |
284 | 315 | else |
285 | | - CHANGELOG="${CHANGELOG}**Released**: JEngine.Util v${{ needs.validate.outputs.util_version }} (Core remains v${{ needs.validate.outputs.core_version }})\n\n" |
| 316 | + UNCHANGED_PACKAGES="${UNCHANGED_PACKAGES}Core v${{ needs.validate.outputs.core_version }}, " |
| 317 | + fi |
| 318 | +
|
| 319 | + if [ "${{ inputs.release_util }}" == "true" ]; then |
| 320 | + RELEASED_PACKAGES="${RELEASED_PACKAGES}JEngine.Util v${{ needs.validate.outputs.util_version }}, " |
| 321 | + else |
| 322 | + UNCHANGED_PACKAGES="${UNCHANGED_PACKAGES}Util v${{ needs.validate.outputs.util_version }}, " |
| 323 | + fi |
| 324 | +
|
| 325 | + if [ "${{ inputs.release_ui }}" == "true" ]; then |
| 326 | + RELEASED_PACKAGES="${RELEASED_PACKAGES}JEngine.UI v${{ needs.validate.outputs.ui_version }}, " |
| 327 | + else |
| 328 | + UNCHANGED_PACKAGES="${UNCHANGED_PACKAGES}UI v${{ needs.validate.outputs.ui_version }}, " |
| 329 | + fi |
| 330 | +
|
| 331 | + # Remove trailing comma and space |
| 332 | + RELEASED_PACKAGES=$(echo "$RELEASED_PACKAGES" | sed 's/, $//') |
| 333 | + UNCHANGED_PACKAGES=$(echo "$UNCHANGED_PACKAGES" | sed 's/, $//') |
| 334 | +
|
| 335 | + if [ -n "$UNCHANGED_PACKAGES" ]; then |
| 336 | + CHANGELOG="${CHANGELOG}**Released**: ${RELEASED_PACKAGES} (${UNCHANGED_PACKAGES} unchanged)\n\n" |
| 337 | + else |
| 338 | + CHANGELOG="${CHANGELOG}**Released**: ${RELEASED_PACKAGES}\n\n" |
286 | 339 | fi |
287 | 340 |
|
288 | 341 | if [ -n "$BREAKING" ]; then |
@@ -341,6 +394,14 @@ jobs: |
341 | 394 | mv /tmp/package.json UnityProject/Packages/com.jasonxudeveloper.jengine.util/package.json |
342 | 395 | echo "✅ Updated Util package.json to v${{ needs.validate.outputs.util_version }}" |
343 | 396 |
|
| 397 | + - name: Update UI package.json |
| 398 | + if: inputs.release_ui == true |
| 399 | + run: | |
| 400 | + jq '.version = "${{ needs.validate.outputs.ui_version }}"' \ |
| 401 | + UnityProject/Packages/com.jasonxudeveloper.jengine.ui/package.json > /tmp/package.json |
| 402 | + mv /tmp/package.json UnityProject/Packages/com.jasonxudeveloper.jengine.ui/package.json |
| 403 | + echo "✅ Updated UI package.json to v${{ needs.validate.outputs.ui_version }}" |
| 404 | +
|
344 | 405 | # Update README files (only when releasing Core) |
345 | 406 | - name: Update README.md |
346 | 407 | if: inputs.release_core == true |
@@ -554,13 +615,17 @@ jobs: |
554 | 615 | echo "✅ **JEngine.Util**: v${{ needs.validate.outputs.util_version }}" >> $GITHUB_STEP_SUMMARY |
555 | 616 | fi |
556 | 617 |
|
| 618 | + if [ "${{ inputs.release_ui }}" == "true" ]; then |
| 619 | + echo "✅ **JEngine.UI**: v${{ needs.validate.outputs.ui_version }}" >> $GITHUB_STEP_SUMMARY |
| 620 | + fi |
| 621 | +
|
557 | 622 | echo "" >> $GITHUB_STEP_SUMMARY |
558 | 623 | echo "🏷️ **Git Tag**: ${{ needs.validate.outputs.release_tag }}" >> $GITHUB_STEP_SUMMARY |
559 | 624 |
|
560 | 625 | if [ "${{ needs.validate.outputs.create_github_release }}" == "true" ]; then |
561 | 626 | echo "📋 **GitHub Release**: Will be created" >> $GITHUB_STEP_SUMMARY |
562 | 627 | else |
563 | | - echo "ℹ️ **GitHub Release**: Not created (Util-only update)" >> $GITHUB_STEP_SUMMARY |
| 628 | + echo "ℹ️ **GitHub Release**: Not created (non-Core update)" >> $GITHUB_STEP_SUMMARY |
564 | 629 | fi |
565 | 630 |
|
566 | 631 | echo "" >> $GITHUB_STEP_SUMMARY |
@@ -605,6 +670,7 @@ jobs: |
605 | 670 | ```bash |
606 | 671 | openupm add com.jasonxudeveloper.jengine.core |
607 | 672 | openupm add com.jasonxudeveloper.jengine.util |
| 673 | + openupm add com.jasonxudeveloper.jengine.ui # Optional: UI utilities |
608 | 674 | ``` |
609 | 675 |
|
610 | 676 | ## 📖 Documentation |
@@ -637,6 +703,10 @@ jobs: |
637 | 703 | echo "✅ **JEngine.Util**: v${{ needs.validate.outputs.util_version }}" >> $GITHUB_STEP_SUMMARY |
638 | 704 | fi |
639 | 705 |
|
| 706 | + if [ "${{ inputs.release_ui }}" == "true" ]; then |
| 707 | + echo "✅ **JEngine.UI**: v${{ needs.validate.outputs.ui_version }}" >> $GITHUB_STEP_SUMMARY |
| 708 | + fi |
| 709 | +
|
640 | 710 | echo "" >> $GITHUB_STEP_SUMMARY |
641 | 711 | echo "**OpenUPM will automatically detect and build the packages within 10-15 minutes.**" >> $GITHUB_STEP_SUMMARY |
642 | 712 | echo "" >> $GITHUB_STEP_SUMMARY |
|
0 commit comments