;doc:announcements #232
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # TRIGGER: Runs on any push to binaries-windows-x64 or binaries branches. | |
| # ACTION: Builds, unit-tests and saves windows x64 binaries with stack and the default ghc. | |
| name: binaries-windows-x64 | |
| on: | |
| push: | |
| branches: [ binaries-windows-x64, binaries ] | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| runs-on: windows-latest | |
| # arch: x64 | |
| # image: | |
| defaults: | |
| run: | |
| shell: bash | |
| env: | |
| # use preinstalled ghc 9.12.2 | |
| stack: stack --system-ghc --no-install-ghc --stack-yaml stack.yaml | |
| ghcid: 9.12.2 | |
| steps: | |
| - name: Check out | |
| uses: actions/checkout@v4 | |
| # have to fetch everything for git describe for --version | |
| with: | |
| fetch-depth: 0 | |
| # CACHES | |
| # Warning: Path Validation Error: Path(s) specified in the action for caching do(es) not exist, hence no cache is being saved. | |
| # - name: Cache - stack programs dir # ghc, ghc-included packages and their haddocks, mingw, msys2 | |
| # id: stack-programs-dir | |
| # uses: actions/cache@v4 | |
| # with: | |
| # path: C:\Users\runneradmin\AppData\Local\Programs\stack\ | |
| # # which files signal a change in stack's global db ? | |
| # # **.yaml includes */package.yaml and stack.yaml* (too many), and hopefully no other changing yamls | |
| # key: ${{ runner.os }}-x64-appdata-local-programs-stack-${{ hashFiles('**.yaml') }} | |
| # restore-keys: | | |
| # ${{ runner.os }}-x64-appdata-local-programs-stack | |
| - name: Cache - stack global dir | |
| id: stack-global-package-db | |
| uses: actions/cache@v4 | |
| with: | |
| path: C:\Users\runneradmin\AppData\Roaming\stack\ | |
| key: ${{ runner.os }}-x64-appdata-roaming-stack-${{ env.ghcid }}-${{ hashFiles('**.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-x64-appdata-roaming-stack-${{ env.ghcid }} | |
| - name: Cache - ./.stack-work | |
| uses: actions/cache@v4 | |
| with: | |
| path: .stack-work | |
| key: ${{ runner.os }}-x64-stack-work-${{ env.ghcid }}-${{ hashFiles('**.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-x64-stack-work-${{ env.ghcid }} | |
| - name: Cache - hledger-lib/.stack-work | |
| uses: actions/cache@v4 | |
| with: | |
| path: hledger-lib/.stack-work | |
| key: ${{ runner.os }}-x64-hledger-lib-stack-work-${{ env.ghcid }}-${{ hashFiles('hledger-lib/package.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-x64-hledger-lib-stack-work-${{ env.ghcid }} | |
| - name: Cache - hledger/.stack-work | |
| uses: actions/cache@v4 | |
| with: | |
| path: hledger/.stack-work | |
| key: ${{ runner.os }}-x64-hledger-stack-work-${{ env.ghcid }}-${{ hashFiles('hledger/package.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-x64-hledger-stack-work-${{ env.ghcid }} | |
| - name: Cache - hledger-ui/.stack-work | |
| uses: actions/cache@v4 | |
| with: | |
| path: hledger-ui/.stack-work | |
| key: ${{ runner.os }}-x64-hledger-ui-stack-work-${{ env.ghcid }}-${{ hashFiles('hledger-ui/package.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-x64-hledger-ui-stack-work-${{ env.ghcid }} | |
| - name: Cache - hledger-web/.stack-work | |
| uses: actions/cache@v4 | |
| with: | |
| path: hledger-web/.stack-work | |
| key: ${{ runner.os }}-x64-hledger-web-stack-work-${{ env.ghcid }}-${{ hashFiles('hledger-web/package.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-x64-hledger-web-stack-work-${{ env.ghcid }} | |
| # actions | |
| - name: Install haskell deps | |
| run: | | |
| $stack build --test --only-dependencies | |
| - name: List dep versions | |
| run: | | |
| $stack exec -- ghc-pkg list | |
| - name: Build all hledger modules warning free, optimised and minimised | |
| run: | | |
| $stack install --test --force-dirty --ghc-options=-fforce-recomp --ghc-options=-Werror | |
| # --ghc-options=-split-sections doesn't work on windows, "too many sections" | |
| # artifacts: | |
| - name: Gather binaries | |
| run: | | |
| mkdir tmp | |
| cp /C/Users/runneradmin/AppData/Roaming/local/bin/hledger.exe tmp | |
| cp /C/Users/runneradmin/AppData/Roaming/local/bin/hledger-ui.exe tmp | |
| cp /C/Users/runneradmin/AppData/Roaming/local/bin/hledger-web.exe tmp | |
| strip tmp/hledger.exe | |
| strip tmp/hledger-ui.exe | |
| strip tmp/hledger-web.exe | |
| tmp/hledger --version | |
| tmp/hledger-ui --version | |
| tmp/hledger-web --version | |
| # Guessing these are not likely to be used on windows. | |
| # cp hledger/embeddedfiles/*.1 tmp | |
| # cp hledger/embeddedfiles/*.info tmp | |
| # cp hledger/shell-completion/hledger-completion.bash tmp | |
| - name: Create binaries artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: hledger-windows-x64 | |
| path: | | |
| tmp/hledger.exe | |
| tmp/hledger-ui.exe | |
| tmp/hledger-web.exe |