|
38 | 38 | should_build: ${{ steps.resolve.outputs.should_build }} |
39 | 39 | build_mode: ${{ steps.resolve.outputs.build_mode }} |
40 | 40 | publish_release: ${{ steps.resolve.outputs.publish_release }} |
| 41 | + release_tag: ${{ steps.resolve.outputs.release_tag }} |
| 42 | + release_name: ${{ steps.resolve.outputs.release_name }} |
| 43 | + release_prerelease: ${{ steps.resolve.outputs.release_prerelease }} |
41 | 44 | steps: |
42 | 45 | - name: Checkout |
43 | 46 | uses: actions/checkout@v6.0.2 |
|
70 | 73 | should_build="true" |
71 | 74 | build_mode="manual" |
72 | 75 | publish_release="false" |
| 76 | + release_tag="" |
| 77 | + release_name="" |
| 78 | + release_prerelease="false" |
73 | 79 |
|
74 | 80 | if [ "${GITHUB_EVENT_NAME}" = "workflow_dispatch" ]; then |
75 | 81 | if [ -n "${WORKFLOW_SOURCE_GIT_URL:-}" ]; then |
|
86 | 92 | if [ "${GITHUB_EVENT_NAME}" = "schedule" ]; then |
87 | 93 | if [ "${GITHUB_EVENT_SCHEDULE:-}" = "${NIGHTLY_CRON}" ]; then |
88 | 94 | build_mode="nightly" |
89 | | - publish_release="false" |
90 | | - echo "Scheduled nightly run: building from ${source_git_ref}" |
| 95 | + publish_release="true" |
| 96 | + source_git_ref="$( |
| 97 | + git ls-remote "${source_git_url}" refs/heads/master \ |
| 98 | + | awk 'NR==1{print $1}' |
| 99 | + )" |
| 100 | + if [ -z "${source_git_ref}" ]; then |
| 101 | + echo "Unable to resolve latest commit from ${source_git_url} refs/heads/master" >&2 |
| 102 | + exit 1 |
| 103 | + fi |
| 104 | + echo "Scheduled nightly run: building from master@${source_git_ref}" |
91 | 105 | else |
92 | 106 | build_mode="tag-poll" |
93 | 107 | publish_release="true" |
@@ -141,19 +155,37 @@ jobs: |
141 | 155 | fi |
142 | 156 | fi |
143 | 157 |
|
| 158 | + if [ "${build_mode}" = "nightly" ] && [ "${should_build}" = "true" ]; then |
| 159 | + nightly_date="$(date -u +%Y%m%d)" |
| 160 | + short_sha="$(printf '%s' "${source_git_ref}" | cut -c1-8)" |
| 161 | + version="${version}-nightly.${nightly_date}.${short_sha}" |
| 162 | + release_tag="v${version}" |
| 163 | + release_name="AstrBot Desktop ${version}" |
| 164 | + release_prerelease="true" |
| 165 | + elif [ "${publish_release}" = "true" ] && [ "${should_build}" = "true" ]; then |
| 166 | + release_tag="v${version}" |
| 167 | + release_name="AstrBot Desktop v${version}" |
| 168 | + release_prerelease="false" |
| 169 | + fi |
| 170 | +
|
144 | 171 | { |
145 | 172 | echo "source_git_url=${source_git_url}" |
146 | 173 | echo "source_git_ref=${source_git_ref}" |
147 | 174 | echo "astrbot_version=${version}" |
148 | 175 | echo "should_build=${should_build}" |
149 | 176 | echo "build_mode=${build_mode}" |
150 | 177 | echo "publish_release=${publish_release}" |
| 178 | + echo "release_tag=${release_tag}" |
| 179 | + echo "release_name=${release_name}" |
| 180 | + echo "release_prerelease=${release_prerelease}" |
151 | 181 | } >> "${GITHUB_OUTPUT}" |
152 | 182 | echo "Resolved source: ${source_git_url}@${source_git_ref}" |
153 | 183 | echo "Resolved AstrBot version: ${version}" |
154 | 184 | echo "Build enabled: ${should_build}" |
155 | 185 | echo "Build mode: ${build_mode}" |
156 | 186 | echo "Publish release: ${publish_release}" |
| 187 | + echo "Release tag: ${release_tag:-<none>}" |
| 188 | + echo "Release prerelease: ${release_prerelease}" |
157 | 189 |
|
158 | 190 | sync_repo_version: |
159 | 191 | name: Sync Repository Version |
@@ -516,13 +548,16 @@ jobs: |
516 | 548 | - name: Create or update release |
517 | 549 | uses: softprops/action-gh-release@v2.5.0 |
518 | 550 | with: |
519 | | - tag_name: v${{ needs.resolve_build_context.outputs.astrbot_version }} |
520 | | - name: AstrBot Desktop v${{ needs.resolve_build_context.outputs.astrbot_version }} |
| 551 | + tag_name: ${{ needs.resolve_build_context.outputs.release_tag }} |
| 552 | + name: ${{ needs.resolve_build_context.outputs.release_name }} |
521 | 553 | body: | |
522 | 554 | Automated desktop package release. |
523 | 555 | - Source: `${{ needs.resolve_build_context.outputs.source_git_url }}` |
524 | 556 | - Ref: `${{ needs.resolve_build_context.outputs.source_git_ref }}` |
| 557 | + - Mode: `${{ needs.resolve_build_context.outputs.build_mode }}` |
525 | 558 | - Windows tip: prefer `nsis-web` installer for smaller downloads and faster install startup. |
526 | 559 | generate_release_notes: true |
| 560 | + prerelease: ${{ needs.resolve_build_context.outputs.release_prerelease == 'true' }} |
| 561 | + make_latest: ${{ needs.resolve_build_context.outputs.release_prerelease != 'true' }} |
527 | 562 | files: release-artifacts/**/* |
528 | 563 | fail_on_unmatched_files: true |
0 commit comments