The linux full tests no longer test GHC 8.0, and all full tests now always compile all modules and generate optimised binaries.
		
			
				
	
	
		
			158 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # Fairly thorough tests on windows.
 | |
| # Runs on notable pushes to ci-windows, and weekly on master.
 | |
| # Builds all modules optimised, runs unit, doc tests,
 | |
| # and uploads binaries artifact.
 | |
| 
 | |
| # Light Windows CI tests: build and run functional tests with one GHC version.
 | |
| # GHC 8.8.2 for now to avoid https://gitlab.haskell.org/ghc/ghc/issues/17926.
 | |
| #
 | |
| # Runs: periodically on master, and on notable push to ci-windows.
 | |
| 
 | |
| name: windows CI
 | |
| 
 | |
| on:
 | |
|   schedule:
 | |
|   - cron: "0 07 * * 0"  # sunday midnight pacific
 | |
| 
 | |
|   push:
 | |
|     branches: [ ci-windows ]
 | |
|     paths:
 | |
|       - '.github/workflows/windows.yml'
 | |
|       - 'stack*.yaml'
 | |
|       - 'hledger-lib/**'
 | |
|       - 'hledger/**'
 | |
|       - 'hledger-ui/**'
 | |
|       - 'hledger-web/**'
 | |
|       # - 'tests/**'
 | |
|       - '!**.md'
 | |
|       - '!**.1'
 | |
|       - '!**.5'
 | |
|       - '!**.info'
 | |
|       - '!**.txt'
 | |
| 
 | |
| jobs:
 | |
|   build:
 | |
|     runs-on: windows-latest
 | |
|     steps:
 | |
| 
 | |
|     - name: Check out
 | |
|       uses: actions/checkout@v2
 | |
| 
 | |
|     # things to be cached/restored:
 | |
| 
 | |
|     - name: Cache stack global package db
 | |
|       id:   stack-global-package-db
 | |
|       uses: actions/cache@v2
 | |
|       with:
 | |
|         path: C:\Users\runneradmin\AppData\Roaming\stack\
 | |
|         key:          ${{ runner.os }}-appdata-roaming-stack-${{ hashFiles('**.yaml') }}
 | |
|         restore-keys: ${{ runner.os }}-appdata-roaming-stack
 | |
| 
 | |
|     - name: Cache stack programs dir   # ghc, ghc-included packages and their haddocks, mingw, msys2
 | |
|       id:   stack-programs-dir
 | |
|       uses: actions/cache@v2
 | |
|       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 }}-appdata-local-programs-stack-${{ hashFiles('**.yaml') }}
 | |
|         restore-keys: ${{ runner.os }}-appdata-local-programs-stack
 | |
| 
 | |
|     - name: Cache .stack-work
 | |
|       uses: actions/cache@v2
 | |
|       with:
 | |
|         path: .stack-work
 | |
|         key:          ${{ runner.os }}-stack-work-${{ hashFiles('**.yaml') }}
 | |
|         restore-keys: ${{ runner.os }}-stack-work
 | |
| 
 | |
|     - name: Cache hledger-lib/.stack-work
 | |
|       uses: actions/cache@v2
 | |
|       with:
 | |
|         path: hledger-lib/.stack-work
 | |
|         key:          ${{ runner.os }}-hledger-lib-stack-work-${{ hashFiles('hledger-lib/package.yaml') }}
 | |
|         restore-keys: ${{ runner.os }}-hledger-lib-stack-work
 | |
| 
 | |
|     - name: Cache hledger/.stack-work
 | |
|       uses: actions/cache@v2
 | |
|       with:
 | |
|         path: hledger/.stack-work
 | |
|         key:          ${{ runner.os }}-hledger-stack-work-${{ hashFiles('hledger/package.yaml') }}
 | |
|         restore-keys: ${{ runner.os }}-hledger-stack-work
 | |
| 
 | |
|     - name: Cache hledger-ui/.stack-work
 | |
|       uses: actions/cache@v2
 | |
|       with:
 | |
|         path: hledger-ui/.stack-work
 | |
|         key:          ${{ runner.os }}-hledger-ui-stack-work-${{ hashFiles('hledger-ui/package.yaml') }}
 | |
|         restore-keys: ${{ runner.os }}-hledger-ui-stack-work
 | |
| 
 | |
|     - name: Cache hledger-web/.stack-work
 | |
|       uses: actions/cache@v2
 | |
|       with:
 | |
|         path: hledger-web/.stack-work
 | |
|         key:          ${{ runner.os }}-hledger-web-stack-work-${{ hashFiles('hledger-web/package.yaml') }}
 | |
|         restore-keys: ${{ runner.os }}-hledger-web-stack-work
 | |
| 
 | |
|     # - name: showStuff
 | |
|     #   shell: bash
 | |
|     #   run: |
 | |
|     #     ls -lFRa /c/users/runneradmin/appdata/roaming/stack
 | |
|     #     ls -lFRa /c/users/runneradmin/appdata/local/programs/stack
 | |
| 
 | |
|     # actions:
 | |
| 
 | |
|     # - name: Add stack local bin to PATH
 | |
|     #   run: echo "::add-path::C:\Users\runneradmin\AppData\Roaming\stack\local\bin"
 | |
| 
 | |
|     - name: Install stack
 | |
|       #if: steps.stack-programs-dir.outputs.cache-hit != 'true'
 | |
|       # this step is needed to get stack.exe into PATH, for now
 | |
|       run: |
 | |
|         curl -skL -o stack.zip http://www.stackage.org/stack/windows-x86_64
 | |
|         7z x stack.zip -oC:\Windows stack.exe
 | |
|         stack --version        
 | |
| 
 | |
|     # resolver lts-15.3 to avoid GHC 8.8.3 access violation, https://gitlab.haskell.org/ghc/ghc/issues/17926:
 | |
| 
 | |
|     - name: Install GHC
 | |
|       # if: steps.stack-programs-dir.outputs.cache-hit != 'true'
 | |
|       # set PATH=C:\Users\runneradmin\AppData\Local\Programs\stack\local\bin;%PATH%
 | |
|       run: |
 | |
|         stack --resolver=lts-15.3 --no-terminal setup --install-ghc        
 | |
| 
 | |
|     # - name: Install shelltestrunner
 | |
|     ## - export PATH=~/.local/bin:$PATH
 | |
|     # - if [[ ! -x ~/.local/bin/shelltest ]]; then stack install shelltestrunner-1.9; fi
 | |
|     # - shelltest --version
 | |
| 
 | |
|     - name: Install haskell deps
 | |
|       run: |
 | |
|         stack --resolver=lts-15.3 --no-terminal build --only-dependencies        
 | |
| 
 | |
|     - name: Build hledger executables
 | |
|       run: |
 | |
|         stack --resolver=lts-15.3 --no-terminal install --force-dirty --ghc-options=-fforce-recomp --ghc-options=-Werror        
 | |
|       # --pedantic
 | |
| 
 | |
|     # run hledger-lib/hledger functional tests, skipping the ones for addons
 | |
|     ## - export PATH=~/.local/bin:$PATH
 | |
|     #- COLUMNS=80 stack exec -- shelltest --execdir -j16 tests -x /bin -x /addons
 | |
| 
 | |
|     # artifacts:
 | |
| 
 | |
|     - name: Gather executables
 | |
|       run: |
 | |
|         mkdir tmp
 | |
|         cd tmp
 | |
|         mkdir hledger
 | |
|         cd hledger
 | |
|         copy C:\Users\runneradmin\AppData\Roaming\local\bin\hledger.exe .
 | |
|         copy C:\Users\runneradmin\AppData\Roaming\local\bin\hledger-web.exe .
 | |
|                      
 | |
|     - name: Create executables artifact
 | |
|       uses: actions/upload-artifact@v2
 | |
|       with:
 | |
|         name: hledger-windows
 | |
|         path: tmp/hledger
 | |
| 
 |