From 0c840829b87725a59371150fa41a84fc275e11ec Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Fri, 22 Nov 2024 21:51:58 +0100 Subject: [PATCH] Preserve file permissions in GitHub Actions The upload-artifact action does not preserve file permissions: Even if it is not critical for Windows releases, it will be for other platforms. Wrap everything in a tarball to keep original permissions. --- .github/workflows/release.yml | 36 +++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f7ac87cb..703bb777 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -87,11 +87,19 @@ jobs: - name: Build win32 run: release/build_windows.sh 32 + # upload-artifact does not preserve permissions + - name: Tar + run: | + cd release/work/build-win32 + mkdir dist-tar + cd dist-tar + tar -C .. -cvf dist.tar.gz dist/ + - name: Upload build-win32 artifact uses: actions/upload-artifact@v4 with: name: build-win32-intermediate - path: release/work/build-win32/dist/ + path: release/work/build-win32/dist-tar/ build-win64: runs-on: ubuntu-latest @@ -113,11 +121,19 @@ jobs: - name: Build win64 run: release/build_windows.sh 64 + # upload-artifact does not preserve permissions + - name: Tar + run: | + cd release/work/build-win64 + mkdir dist-tar + cd dist-tar + tar -C .. -cvf dist.tar.gz dist/ + - name: Upload build-win64 artifact uses: actions/upload-artifact@v4 with: name: build-win64-intermediate - path: release/work/build-win64/dist/ + path: release/work/build-win64/dist-tar/ package-win32: needs: @@ -138,7 +154,13 @@ jobs: uses: actions/download-artifact@v4 with: name: build-win32-intermediate - path: release/work/build-win32/dist/ + path: release/work/build-win32/dist-tar/ + + # upload-artifact does not preserve permissions + - name: Detar + run: | + cd release/work/build-win32 + tar xf dist-tar/dist.tar.gz - name: Package win32 run: release/package_client.sh win32 @@ -168,7 +190,13 @@ jobs: uses: actions/download-artifact@v4 with: name: build-win64-intermediate - path: release/work/build-win64/dist/ + path: release/work/build-win64/dist-tar/ + + # upload-artifact does not preserve permissions + - name: Detar + run: | + cd release/work/build-win64 + tar xf dist-tar/dist.tar.gz - name: Package win64 run: release/package_client.sh win64