summaryrefslogblamecommitdiff
path: root/.github/workflows/windows_python.yml
blob: d33c624376c8ff13d2a5f300ef7aab2c6f8ace08 (plain) (tree)
1
2
3
4
5
6
7
8
9




                   

                   

               
               
                   




                                                                                            







                                                                                         
                                                                     
                                                                         






                                              
                                                                                                                                      
                                 
                                                                                                    



                                                        
                                                                     

                      
                                                                         



                                   
                                                                                                                              









                                               
                              

                           
                                                                     

                      
                                                                         










                                                                                                                         
                                                                   
               
                              

                           
                                                                     

                      
                                                                         










                                                                                                                         
                                                          
            
                              

                           
                                                                     

                      
                                                                         












                                                                                                                         
                              






                                               
                                                                     

                      
                                                                         














                                                                                                       
                                                                            


                                                     
                                                                            









                                                    
                                                                         








                                                                                                                        
                                        










                                                                                               
                                        








                                                                                      
name: windows tests

on:
  push:
    branches:
      - develop
      - releases/**
  pull_request:
    branches:
      - develop
      - releases/**

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_number }}
  cancel-in-progress: true

defaults:
  run:
    shell:
     powershell Invoke-Expression -Command ".\share\spack\qa\windows_test_setup.ps1"; {0}
jobs:
  validate:
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
    - uses: actions/setup-python@c4e89fac7e8767b327bbad6cb4d859eda999cf08
      with:
        python-version: 3.9
    - name: Install Python Packages
      run: |
        python -m pip install --upgrade pip
        python -m pip install --upgrade vermin
    - name: vermin (Spack's Core)
      run: vermin --backport argparse --backport typing -t='2.7-' -t='3.5-' -v spack/lib/spack/spack/ spack/lib/spack/llnl/ spack/bin/
    - name: vermin (Repositories)
      run: vermin --backport argparse --backport typing -t='2.7-' -t='3.5-' -v spack/var/spack/repos
  # Run style checks on the files that have been changed
  style:
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
      with:
        fetch-depth: 0
    - uses: actions/setup-python@c4e89fac7e8767b327bbad6cb4d859eda999cf08
      with:
        python-version: 3.9
    - name: Install Python packages
      run: |
        python -m pip install --upgrade pip six setuptools flake8 isort>=4.3.5 mypy>=0.800 black pywin32 types-python-dateutil
    - name: Create local develop
      run: |
        .\spack\.github\workflows\setup_git.ps1
    - name: Run style tests
      run: |
        spack style
    - name: Verify license headers
      run: |
        python spack\bin\spack license verify
  unittest:
    needs: [ validate, style ]
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
      with:
        fetch-depth: 0
    - uses: actions/setup-python@c4e89fac7e8767b327bbad6cb4d859eda999cf08
      with:
        python-version: 3.9
    - name: Install Python packages
      run: |
          python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
    - name: Create local develop
      run: |
        .\spack\.github\workflows\setup_git.ps1
    - name: Unit Test
      run: |
        echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
        spack unit-test --verbose --ignore=lib/spack/spack/test/cmd
  unittest-cmd:
    needs: [ validate, style ]
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
      with:
        fetch-depth: 0
    - uses: actions/setup-python@c4e89fac7e8767b327bbad6cb4d859eda999cf08
      with:
        python-version: 3.9
    - name: Install Python packages
      run: |
          python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
    - name: Create local develop
      run: |
        .\spack\.github\workflows\setup_git.ps1
    - name: Command Unit Test
      run: |
        echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
        spack unit-test lib/spack/spack/test/cmd --verbose
  buildtest:
    needs: [ validate, style ]
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
      with:
        fetch-depth: 0
    - uses: actions/setup-python@c4e89fac7e8767b327bbad6cb4d859eda999cf08
      with:
        python-version: 3.9
    - name: Install Python packages
      run: |
          python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
    - name: Build Test
      run: |
        spack compiler find
        echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
        spack external find cmake
        spack external find ninja
        spack install abseil-cpp
  generate-installer-test:
    needs: [ validate, style ]
    runs-on: windows-latest
    steps:
    - name: Disable Windows Symlinks
      run: |
        git config --global core.symlinks false
      shell:
        powershell
    - uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
      with:
        fetch-depth: 0
    - uses: actions/setup-python@c4e89fac7e8767b327bbad6cb4d859eda999cf08
      with:
        python-version: 3.9
    - name: Install Python packages
      run: |
          python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
    - name: Add Light and Candle to Path
      run: |
        $env:WIX >> $GITHUB_PATH
    - name: Run Installer
      run: |
        .\spack\share\spack\qa\setup_spack.ps1
        spack make-installer -s spack -g SILENT pkg
        echo "installer_root=$((pwd).Path)" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
      env:
        ProgressPreference: SilentlyContinue
    - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8
      with:
        name: Windows Spack Installer Bundle
        path: ${{ env.installer_root }}\pkg\Spack.exe
    - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8
      with:
        name: Windows Spack Installer
        path: ${{ env.installer_root}}\pkg\Spack.msi
  execute-installer:
    needs: generate-installer-test
    runs-on: windows-latest
    defaults:
      run:
        shell: pwsh
    steps:
    - uses: actions/setup-python@c4e89fac7e8767b327bbad6cb4d859eda999cf08
      with:
        python-version: 3.9
    - name: Install Python packages
      run: |
          python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
    - name: Setup installer directory
      run: |
        mkdir -p spack_installer
        echo "spack_installer=$((pwd).Path)\spack_installer" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
    - uses: actions/download-artifact@v3
      with:
        name: Windows Spack Installer Bundle
        path: ${{ env.spack_installer }}
    - name: Execute Bundled Installer
      run: |
        $proc = Start-Process  ${{ env.spack_installer }}\spack.exe "/install /quiet" -Passthru
        $handle = $proc.Handle # cache proc.Handle
        $proc.WaitForExit();
        $LASTEXITCODE
      env:
        ProgressPreference: SilentlyContinue
    - uses: actions/download-artifact@v3
      with:
        name: Windows Spack Installer
        path: ${{ env.spack_installer }}
    - name: Execute MSI
      run: |
        $proc = Start-Process  ${{ env.spack_installer }}\spack.msi "/quiet" -Passthru
        $handle = $proc.Handle # cache proc.Handle
        $proc.WaitForExit();
        $LASTEXITCODE