[CI] fix zip inside zip

This commit is contained in:
ParantezTech
2026-07-20 10:14:55 +03:00
parent 472fc96a37
commit d151e151c2
+30 -27
View File
@@ -80,7 +80,7 @@ jobs:
uses: fsfe/reuse-action@v6 uses: fsfe/reuse-action@v6
build: build:
name: Build Archive name: Build win-x64
needs: needs:
- init - init
- reuse - reuse
@@ -89,7 +89,6 @@ jobs:
DOTNET_NOLOGO: true DOTNET_NOLOGO: true
NUGET_PACKAGES: ${{ github.workspace }}\.nuget\packages NUGET_PACKAGES: ${{ github.workspace }}\.nuget\packages
PUBLISH_DIR: ${{ github.workspace }}\artifacts\publish\win-x64 PUBLISH_DIR: ${{ github.workspace }}\artifacts\publish\win-x64
RELEASE_DIR: ${{ github.workspace }}\artifacts\release
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v6 uses: actions/checkout@v6
@@ -121,24 +120,13 @@ jobs:
- name: Publish win-x64 CLI - name: Publish win-x64 CLI
run: dotnet publish src/SharpEmu.CLI/SharpEmu.CLI.csproj -c Release -r win-x64 --self-contained true --no-restore -p:PublishDir="${env:PUBLISH_DIR}" run: dotnet publish src/SharpEmu.CLI/SharpEmu.CLI.csproj -c Release -r win-x64 --self-contained true --no-restore -p:PublishDir="${env:PUBLISH_DIR}"
- name: Create release archive
run: |
New-Item -ItemType Directory -Path $env:RELEASE_DIR -Force | Out-Null
$archiveName = "sharpemu-${{ needs.init.outputs.version }}-win-x64.zip"
$archivePath = Join-Path $env:RELEASE_DIR $archiveName
if (Test-Path $archivePath) {
Remove-Item $archivePath -Force
}
Compress-Archive -Path (Join-Path $env:PUBLISH_DIR '*') -DestinationPath $archivePath -CompressionLevel Optimal
- name: Upload build artifact - name: Upload build artifact
uses: actions/upload-artifact@v7 uses: actions/upload-artifact@v7
with: with:
name: sharpemu-win-x64-${{ needs.init.outputs.short-sha }} name: sharpemu-win-x64-${{ needs.init.outputs.short-sha }}
path: ${{ env.RELEASE_DIR }}\sharpemu-${{ needs.init.outputs.version }}-win-x64.zip path: ${{ env.PUBLISH_DIR }}
if-no-files-found: error if-no-files-found: error
include-hidden-files: true
build-posix: build-posix:
name: Build ${{ matrix.rid }} name: Build ${{ matrix.rid }}
@@ -158,7 +146,6 @@ jobs:
DOTNET_NOLOGO: true DOTNET_NOLOGO: true
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages
PUBLISH_DIR: ${{ github.workspace }}/artifacts/publish/${{ matrix.rid }} PUBLISH_DIR: ${{ github.workspace }}/artifacts/publish/${{ matrix.rid }}
RELEASE_DIR: ${{ github.workspace }}/artifacts/release
SPIRV_HEADERS_COMMIT: ad9184e76a66b1001c29db9b0a3e87f646c64de0 SPIRV_HEADERS_COMMIT: ad9184e76a66b1001c29db9b0a3e87f646c64de0
# SpirvModuleBuilder emits SPIR-V 1.5 and VulkanVideoPresenter requests Vulkan 1.2. # SpirvModuleBuilder emits SPIR-V 1.5 and VulkanVideoPresenter requests Vulkan 1.2.
SPIRV_TARGET_ENV: vulkan1.2 SPIRV_TARGET_ENV: vulkan1.2
@@ -223,19 +210,13 @@ jobs:
if: matrix.rid == 'osx-x64' if: matrix.rid == 'osx-x64'
run: scripts/fetch-macos-moltenvk.sh "$PUBLISH_DIR" run: scripts/fetch-macos-moltenvk.sh "$PUBLISH_DIR"
- name: Create release archive
run: |
mkdir -p "$RELEASE_DIR"
# tar keeps the executable bit, which zip would drop.
tar -czf "$RELEASE_DIR/sharpemu-${{ needs.init.outputs.version }}-${{ matrix.rid }}.tar.gz" \
-C "$PUBLISH_DIR" .
- name: Upload build artifact - name: Upload build artifact
uses: actions/upload-artifact@v7 uses: actions/upload-artifact@v7
with: with:
name: sharpemu-${{ matrix.rid }}-${{ needs.init.outputs.short-sha }} name: sharpemu-${{ matrix.rid }}-${{ needs.init.outputs.short-sha }}
path: ${{ env.RELEASE_DIR }}/sharpemu-${{ needs.init.outputs.version }}-${{ matrix.rid }}.tar.gz path: ${{ env.PUBLISH_DIR }}
if-no-files-found: error if-no-files-found: error
include-hidden-files: true
release: release:
name: Publish GitHub Release name: Publish GitHub Release
@@ -255,6 +236,28 @@ jobs:
with: with:
path: release path: release
- name: Package release assets
shell: bash
env:
SHORT_SHA: ${{ needs.init.outputs.short-sha }}
VERSION: ${{ needs.init.outputs.version }}
run: |
set -euo pipefail
win_dir="release/sharpemu-win-x64-${SHORT_SHA}"
linux_dir="release/sharpemu-linux-x64-${SHORT_SHA}"
macos_dir="release/sharpemu-osx-x64-${SHORT_SHA}"
for package_dir in "${win_dir}" "${linux_dir}" "${macos_dir}"; do
test -d "${package_dir}"
done
mkdir -p release-assets
(cd "${win_dir}" && zip -q -r "../../release-assets/sharpemu-${VERSION}-win-x64.zip" .)
chmod +x "${linux_dir}/SharpEmu" "${macos_dir}/SharpEmu"
tar -czf "release-assets/sharpemu-${VERSION}-linux-x64.tar.gz" -C "${linux_dir}" .
tar -czf "release-assets/sharpemu-${VERSION}-osx-x64.tar.gz" -C "${macos_dir}" .
- name: Create release - name: Create release
shell: bash shell: bash
env: env:
@@ -264,9 +267,9 @@ jobs:
RELEASE_TAG: ${{ needs.init.outputs.release-tag }} RELEASE_TAG: ${{ needs.init.outputs.release-tag }}
VERSION: ${{ needs.init.outputs.version }} VERSION: ${{ needs.init.outputs.version }}
run: | run: |
mapfile -t assets < <(find release -type f \( -name '*.zip' -o -name '*.tar.gz' \) | sort) mapfile -t assets < <(find release-assets -maxdepth 1 -type f \( -name '*.zip' -o -name '*.tar.gz' \) | sort)
if [ "${#assets[@]}" -eq 0 ]; then if [ "${#assets[@]}" -ne 3 ]; then
echo "No release assets found." >&2 echo "Expected 3 release assets, found ${#assets[@]}." >&2
exit 1 exit 1
fi fi