From 3ea95bab44cb714a5de9a880675f61cbed7db152 Mon Sep 17 00:00:00 2001 From: Syping Date: Sun, 9 Nov 2025 22:20:48 +0100 Subject: [PATCH] GitHub Actions: simplify .NET workflow artifact management --- .github/workflows/dotnet.yml | 110 +++++++++++++++++------------------ 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 2202f2f..f73bac1 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -8,31 +8,41 @@ jobs: Linux: runs-on: ${{matrix.runner}} container: - image: almalinux:8 + image: ${{matrix.image}} strategy: matrix: arch: [arm64, x64] + libc: [glibc] include: - arch: arm64 runner: ubuntu-24.04-arm - arch: x64 runner: ubuntu-24.04 + - libc: glibc + image: almalinux:8 + install: dnf install -y cmake gcc gcc-c++ + libdir: lib64 steps: - name: Cloning uses: actions/checkout@v5 - name: Install packages - run: dnf install -y cmake gcc gcc-c++ + run: ${{matrix.install}} - name: Configure CMake - run: cmake -B "build" -DRAGEPHOTO_C_LIBRARY=ON -DRAGEPHOTO_EXTRACT=OFF -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + run: cmake -B "build/shared" -DRAGEPHOTO_C_LIBRARY=ON -DRAGEPHOTO_EXTRACT=OFF -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} - name: Build - run: cmake --build "build" --config ${{env.BUILD_TYPE}} + run: cmake --build "build/shared" --config ${{env.BUILD_TYPE}} - name: Install - run: cmake --install "build" --config ${{env.BUILD_TYPE}} --prefix "install/" + run: cmake --install "build/shared" --config ${{env.BUILD_TYPE}} --prefix "install/shared/" + - name: Preparing for Upload + run: | + mkdir "artifacts" + cp "install/shared/${{matrix.libdir}}/libragephoto.so" \ + "artifacts/" - name: Upload uses: actions/upload-artifact@v5 with: - name: Linux ${{matrix.arch}} - path: ${{github.workspace}}/install/lib64/libragephoto.so + name: Linux ${{matrix.arch}} ${{matrix.libc}} + path: ${{github.workspace}}/artifacts/ macOS: runs-on: ${{matrix.runner}} env: @@ -49,16 +59,21 @@ jobs: - name: Cloning uses: actions/checkout@v5 - name: Configure CMake - run: cmake -B "${{github.workspace}}/build" -DRAGEPHOTO_C_LIBRARY=ON -DRAGEPHOTO_EXTRACT=OFF -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_OSX_DEPLOYMENT_TARGET=${{env.OSX_DEPLOYMENT_TARGET}} -GNinja + run: cmake -B "${{github.workspace}}/build/shared" -DRAGEPHOTO_C_LIBRARY=ON -DRAGEPHOTO_EXTRACT=OFF -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_OSX_DEPLOYMENT_TARGET=${{env.OSX_DEPLOYMENT_TARGET}} - name: Build - run: cmake --build "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} + run: cmake --build "${{github.workspace}}/build/shared" --config ${{env.BUILD_TYPE}} - name: Install - run: cmake --install "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} --prefix "${{github.workspace}}/install/" + run: cmake --install "${{github.workspace}}/build/shared" --config ${{env.BUILD_TYPE}} --prefix "${{github.workspace}}/install/shared/" + - name: Preparing for Upload + run: | + mkdir "artifacts" + cp "install/shared/lib/libragephoto.dylib" \ + "artifacts/" - name: Upload uses: actions/upload-artifact@v5 with: name: macOS ${{matrix.arch}} - path: ${{github.workspace}}/install/lib/libragephoto.dylib + path: ${{github.workspace}}/artifacts/ Windows: runs-on: windows-latest strategy: @@ -79,76 +94,61 @@ jobs: with: arch: ${{matrix.msvc}} - name: Configure CMake - run: cmake -B "${{github.workspace}}/build" -DRAGEPHOTO_C_LIBRARY=ON -DRAGEPHOTO_EXTRACT=OFF -DRAGEPHOTO_UNICODE=wincvt -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -GNinja + run: cmake -B "${{github.workspace}}/build/shared" -DRAGEPHOTO_C_LIBRARY=ON -DRAGEPHOTO_EXTRACT=OFF -DRAGEPHOTO_UNICODE=wincvt -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -GNinja - name: Build - run: cmake --build "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} + run: cmake --build "${{github.workspace}}/build/shared" --config ${{env.BUILD_TYPE}} - name: Install - run: cmake --install "${{github.workspace}}/build" --config ${{env.BUILD_TYPE}} --prefix "${{github.workspace}}/install" + run: cmake --install "${{github.workspace}}/build/shared" --config ${{env.BUILD_TYPE}} --prefix "${{github.workspace}}/install/shared/" + - name: Preparing for Upload + run: | + mkdir "artifacts" + Copy-Item "install\shared\bin\libragephoto.dll" "artifacts\" - name: Upload uses: actions/upload-artifact@v5 with: - name: Windows MSVC ${{matrix.arch}} - path: ${{github.workspace}}/install/bin/libragephoto.dll + name: Windows ${{matrix.arch}} + path: ${{github.workspace}}/artifacts/ Release: needs: [Linux, macOS, Windows] runs-on: windows-latest - defaults: - run: - shell: pwsh steps: - name: Cloning uses: actions/checkout@v5 - - name: Download Linux arm64 Assets + - name: Download Linux arm64 glibc Artifacts uses: actions/download-artifact@v6 with: - name: Linux arm64 - path: assets/linux-arm64 - - name: Download Linux x64 Assets + name: Linux arm64 glibc + path: ${{github.workspace}}/src/dotnet/runtimes/linux-arm64/native + - name: Download Linux x64 glibc Artifacts uses: actions/download-artifact@v6 with: - name: Linux x64 - path: assets/linux-x64 - - name: Download macOS arm64 Assets + name: Linux x64 glibc + path: ${{github.workspace}}/src/dotnet/runtimes/linux-x64/native + - name: Download macOS arm64 Artifacts uses: actions/download-artifact@v6 with: name: macOS arm64 - path: assets/osx-arm64 - - name: Download macOS x64 Assets + path: ${{github.workspace}}/src/dotnet/runtimes/osx-arm64/native + - name: Download macOS x64 Artifacts uses: actions/download-artifact@v6 with: name: macOS x64 - path: assets/osx-x64 - - name: Download Windows arm64 Assets + path: ${{github.workspace}}/src/dotnet/runtimes/osx-x64/native + - name: Download Windows arm64 Artifacts uses: actions/download-artifact@v6 with: - name: Windows MSVC arm64 - path: assets/win-arm64 - - name: Download Windows x64 Assets + name: Windows arm64 + path: ${{github.workspace}}/src/dotnet/runtimes/win-arm64/native + - name: Download Windows x64 Artifacts uses: actions/download-artifact@v6 with: - name: Windows MSVC x64 - path: assets/win-x64 - - name: Download Windows x86 Assets + name: Windows x64 + path: ${{github.workspace}}/src/dotnet/runtimes/win-x64/native + - name: Download Windows x86 Artifacts uses: actions/download-artifact@v6 with: - name: Windows MSVC x86 - path: assets/win-x86 - - name: Copy Assets - run: | - mkdir -p "${{github.workspace}}\src\dotnet\runtimes\linux-arm64\native" - mkdir -p "${{github.workspace}}\src\dotnet\runtimes\linux-x64\native" - mkdir -p "${{github.workspace}}\src\dotnet\runtimes\osx-arm64\native" - mkdir -p "${{github.workspace}}\src\dotnet\runtimes\osx-x64\native" - mkdir -p "${{github.workspace}}\src\dotnet\runtimes\win-arm64\native" - mkdir -p "${{github.workspace}}\src\dotnet\runtimes\win-x64\native" - mkdir -p "${{github.workspace}}\src\dotnet\runtimes\win-x86\native" - cp "${{github.workspace}}\assets\linux-arm64\libragephoto.so" "${{github.workspace}}\src\dotnet\runtimes\linux-arm64\native\libragephoto.so" - cp "${{github.workspace}}\assets\linux-x64\libragephoto.so" "${{github.workspace}}\src\dotnet\runtimes\linux-x64\native\libragephoto.so" - cp "${{github.workspace}}\assets\osx-arm64\libragephoto.dylib" "${{github.workspace}}\src\dotnet\runtimes\osx-arm64\native\libragephoto.dylib" - cp "${{github.workspace}}\assets\osx-x64\libragephoto.dylib" "${{github.workspace}}\src\dotnet\runtimes\osx-x64\native\libragephoto.dylib" - cp "${{github.workspace}}\assets\win-arm64\libragephoto.dll" "${{github.workspace}}\src\dotnet\runtimes\win-arm64\native\libragephoto.dll" - cp "${{github.workspace}}\assets\win-x64\libragephoto.dll" "${{github.workspace}}\src\dotnet\runtimes\win-x64\native\libragephoto.dll" - cp "${{github.workspace}}\assets\win-x86\libragephoto.dll" "${{github.workspace}}\src\dotnet\runtimes\win-x86\native\libragephoto.dll" + name: Windows x86 + path: ${{github.workspace}}/src/dotnet/runtimes/win-x86/native - name: Setup MSBuild uses: microsoft/setup-msbuild@v2 - name: Setup .NET @@ -161,4 +161,4 @@ jobs: uses: actions/upload-artifact@v5 with: name: NuGet Package - path: ${{github.workspace}}\src\dotnet\bin\${{env.BUILD_TYPE}}\RagePhoto.Core.*.nupkg + path: ${{github.workspace}}/src/dotnet/bin/${{env.BUILD_TYPE}}/RagePhoto.Core.*.nupkg