From 827d3f79f487b744defedef3de97e97fb69cf275 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Tue, 26 Jul 2022 23:27:53 +0100 Subject: [PATCH] ci: avoid double zip; use tar instead to preserve x on linux/mac --- .../binaries-linux-arm32v7-static.yml | 7 +++-- .../workflows/binaries-linux-x64-static.yml | 7 +++-- .github/workflows/binaries-mac-x64.yml | 8 +++-- .github/workflows/binaries-windows-x64.yml | 6 ++-- .github/workflows/test-linux-x64.yml | 8 +++-- doc/github-release-template.md | 30 +++++++++---------- 6 files changed, 38 insertions(+), 28 deletions(-) diff --git a/.github/workflows/binaries-linux-arm32v7-static.yml b/.github/workflows/binaries-linux-arm32v7-static.yml index 03ae5d139..eaf97ffa7 100644 --- a/.github/workflows/binaries-linux-arm32v7-static.yml +++ b/.github/workflows/binaries-linux-arm32v7-static.yml @@ -41,10 +41,13 @@ jobs: docker cp $container_id:/root/hledger tmp docker rm -v $container_id cd tmp - zip hledger-linux-static-arm32v7.zip hledger hledger-ui hledger-web + tar cvf hledger-linux-static-arm32v7.tar hledger hledger-ui hledger-web + # upload-artifact loses execute permissions, so we tar the binaries to preserve them. + # github UI always zips artifacts when they are downloaded, so we don't bother compressing the tar. + # Unfortunately it means users must both unzip and untar. - name: Upload binaries artifact uses: actions/upload-artifact@v3 with: name: hledger-linux-static-arm32v7 - path: tmp/hledger-linux-static-arm32v7.zip + path: tmp/hledger-linux-static-arm32v7.tar diff --git a/.github/workflows/binaries-linux-x64-static.yml b/.github/workflows/binaries-linux-x64-static.yml index ec6fadae5..93c202f92 100644 --- a/.github/workflows/binaries-linux-x64-static.yml +++ b/.github/workflows/binaries-linux-x64-static.yml @@ -64,10 +64,13 @@ jobs: strip hledger strip hledger-ui strip hledger-web - zip hledger-linux-x64.zip hledger hledger-ui hledger-web + tar cvf hledger-linux-x64.tar hledger hledger-ui hledger-web + # upload-artifact loses execute permissions, so we tar the binaries to preserve them. + # github UI always zips artifacts when they are downloaded, so we don't bother compressing the tar. + # Unfortunately it means users must both unzip and untar. - name: Upload binaries uses: actions/upload-artifact@v3 with: name: hledger-linux-x64 - path: tmp/hledger-linux-x64.zip + path: tmp/hledger-linux-x64.tar diff --git a/.github/workflows/binaries-mac-x64.yml b/.github/workflows/binaries-mac-x64.yml index 078f3528c..f9f11b018 100644 --- a/.github/workflows/binaries-mac-x64.yml +++ b/.github/workflows/binaries-mac-x64.yml @@ -169,14 +169,16 @@ jobs: strip hledger strip hledger-ui strip hledger-web - zip hledger-mac-x64.zip hledger hledger-ui hledger-web + tar cvf hledger-mac-x64.tar hledger hledger-ui hledger-web if: env.CONTINUE - # XXX intermittent upload failures + # upload-artifact loses execute permissions, so we tar the binaries to preserve them. + # github UI always zips artifacts when they are downloaded, so we don't bother compressing the tar. + # Unfortunately it means users must both unzip and untar. - name: Upload binaries artifact uses: actions/upload-artifact@v3 with: name: hledger-mac-x64 - path: tmp/hledger-mac-x64.zip + path: tmp/hledger-mac-x64.tar if: env.CONTINUE diff --git a/.github/workflows/binaries-windows-x64.yml b/.github/workflows/binaries-windows-x64.yml index b7d9df47f..af80e30d9 100644 --- a/.github/workflows/binaries-windows-x64.yml +++ b/.github/workflows/binaries-windows-x64.yml @@ -170,13 +170,13 @@ jobs: cp /C/Users/runneradmin/AppData/Roaming/local/bin/hledger-web.exe . strip hledger.exe strip hledger-web.exe - zip hledger-windows-x64.zip hledger.exe hledger-web.exe if: env.CONTINUE - # XXX intermittent upload failures - name: Create binaries artifact uses: actions/upload-artifact@v3 with: name: hledger-windows-x64 - path: tmp/hledger-windows-x64.zip + path: | + tmp/hledger.exe + tmp/hledger-web.exe if: env.CONTINUE diff --git a/.github/workflows/test-linux-x64.yml b/.github/workflows/test-linux-x64.yml index f6d7b80a1..ba0c42f0c 100644 --- a/.github/workflows/test-linux-x64.yml +++ b/.github/workflows/test-linux-x64.yml @@ -274,18 +274,20 @@ jobs: strip hledger strip hledger-ui strip hledger-web - zip hledger-linux-x64.zip hledger hledger-ui hledger-web + tar cvf hledger-linux-x64.tar hledger hledger-ui hledger-web if: env.CONTINUE # how to set a context variable, and an attempt to make a nice artifact version suffix: # echo "::set-output name=version::$(git branch --show-current | sed 's/-.*//')-$(git rev-parse --short HEAD)" - # XXX intermittent upload failures + # upload-artifact loses execute permissions, so we tar the binaries to preserve them. + # github UI always zips artifacts when they are downloaded, so we don't bother compressing the tar. + # Unfortunately it means users must both unzip and untar. - name: Upload binaries artifact uses: actions/upload-artifact@v3 with: name: hledger-linux-x64 - path: tmp/hledger-linux-x64.zip + path: tmp/hledger-linux-x64.tar if: env.CONTINUE diff --git a/doc/github-release-template.md b/doc/github-release-template.md index b1e3320e6..204aa1f74 100644 --- a/doc/github-release-template.md +++ b/doc/github-release-template.md @@ -29,7 +29,7 @@ Or, if there are release binaries below suitable for your OS and hardware, you c - YYYY-MM-DD: description. [#NNNN](https://github.com/simonmichael/hledger/issues/NNNN) --> -Here are some instructions for the release binaries on various platforms: +Here are some instructions for the release binaries on various platforms. (You can copy & paste each block of commands as a unit, to save time.):
@@ -39,12 +39,12 @@ Here are some instructions for the release binaries on various platforms: At the command line, ``` -$ cd /usr/local/bin -$ curl -LOC- https://github.com/simonmichael/hledger/releases/download/A.BB/hledger-linux-x64.zip # can rerun this if interrupted -$ unzip -X hledger-linux-x64.zip -$ cd - -$ hledger --version # should show the new version -$ touch $HOME/.hledger.journal # ensure a default journal file exists +cd /usr/local/bin +curl -LOC- https://github.com/simonmichael/hledger/releases/download/A.BB/hledger-linux-x64.zip # can rerun this if interrupted +unzip hledger-linux-x64.zip; tar xvf hledger-linux-x64.tar; rm hledger-linux-x64.{zip,tar} # github workaround, preserves permissions +cd - +hledger --version # should show the new version +touch $HOME/.hledger.journal # ensure a default journal file exists ```
@@ -56,14 +56,14 @@ $ touch $HOME/.hledger.journal # ensure a default journal file exists In a terminal window, ``` -$ cd /usr/local/bin -$ curl -LOC- https://github.com/simonmichael/hledger/releases/download/A.BB/hledger-mac-x64.zip -$ unzip -X hledger-mac-x64.zip -$ open . +cd /usr/local/bin +curl -LOC- https://github.com/simonmichael/hledger/releases/download/A.BB/hledger-mac-x64.zip +unzip hledger-mac-x64.zip; tar xvf hledger-mac-x64.tar; rm hledger-mac-x64.{zip,tar} # github workaround, preserves permissions +open . # for the hledger, hledger-ui, hledger-web icons: right-click the executable, Open, confirm it's ok to run -$ cd - -$ hledger --version # should show the new version -$ touch $HOME/.hledger.journal # ensure a default journal file exists +cd - +hledger --version # should show the new version +touch $HOME/.hledger.journal # ensure a default journal file exists ``` @@ -75,7 +75,7 @@ $ touch $HOME/.hledger.journal # ensure a default journal file exists In a powershell window (press Windows-r, type powershell, press enter), -Make a place to keep hledger binaries, and add it to your PATH. You only need to do this once, not for every release. This is optional, but makes running hledger easier. +Make a place to keep hledger binaries, and add it to your PATH; this makes running hledger easier. You only need to do this once, not for every release. ``` mkdir -force $HOME\bin >$null [Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::User)+";"+$HOME+"\bin", [EnvironmentVariableTarget]::User)