1name: Windows
2
3on:
4  pull_request:
5  push:
6  release:
7    types: published
8
9jobs:
10  build:
11    runs-on: windows-latest
12
13    strategy:
14      fail-fast: false
15      matrix:
16        include:
17        - arch: 'x64'
18          suffix: ''
19        - arch: 'arm64'
20          suffix: 'arm64'
21
22    steps:
23    - uses: actions/checkout@v2
24
25    - name: Install dependencies
26      run: choco install re2c
27
28    - name: Build ninja
29      shell: bash
30      run: |
31        cmake -Bbuild -A ${{ matrix.arch }}
32        cmake --build build --parallel --config Debug
33        cmake --build build --parallel --config Release
34
35    - name: Test ninja (Debug)
36      if: matrix.arch != 'arm64'
37      run: .\ninja_test.exe
38      working-directory: build/Debug
39
40    - name: Test ninja (Release)
41      if: matrix.arch != 'arm64'
42      run: .\ninja_test.exe
43      working-directory: build/Release
44
45    - name: Create ninja archive
46      shell: bash
47      run: |
48        mkdir artifact
49        7z a artifact/ninja-win${{ matrix.suffix }}.zip ./build/Release/ninja.exe
50
51    # Upload ninja binary archive as an artifact
52    - name: Upload artifact
53      uses: actions/upload-artifact@v3
54      with:
55        name: ninja-binary-archives
56        path: artifact
57
58    - name: Upload release asset
59      if: github.event.action == 'published'
60      uses: actions/upload-release-asset@v1
61      env:
62        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
63      with:
64        upload_url: ${{ github.event.release.upload_url }}
65        asset_path: ./artifact/ninja-win${{ matrix.suffix }}.zip
66        asset_name: ninja-win${{ matrix.suffix }}.zip
67        asset_content_type: application/zip
68