summaryrefslogtreecommitdiff
path: root/.github/workflows/release.yml
blob: b64933cc7c04fa894b0c2822539d39cafcbc66c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
name: Release
on:
  push:
    tags:
    - '*'
jobs:
  release:
    name: ${{ matrix.name }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: Windows MSVC Win32
            os: windows-latest
            compiler: cl
            cmake-args: -A Win32
            deploy-name: win-x86

          - name: Windows MSVC Win32 Compat
            os: windows-latest
            compiler: cl
            cmake-args: -A Win32 -DZLIB_COMPAT=ON
            deploy-name: win-x86-compat

          - name: Windows MSVC Win64
            os: windows-latest
            compiler: cl
            cmake-args: -A x64
            deploy-name: win-x86-64

          - name: Windows MSVC Win64 Compat
            os: windows-latest
            compiler: cl
            cmake-args: -A x64 -DZLIB_COMPAT=ON
            deploy-name: win-x86-64-compat

          - name: Windows MSVC ARM
            os: windows-latest
            compiler: cl
            cmake-args: -A ARM
            deploy-name: win-arm

          - name: Windows MSVC ARM Compat
            os: windows-latest
            compiler: cl
            cmake-args: -A ARM -DZLIB_COMPAT=ON
            deploy-name: win-arm-compat

          - name: Windows MSVC ARM64
            os: windows-latest
            compiler: cl
            cmake-args: -A ARM64
            deploy-name: win-arm64

          - name: Windows MSVC ARM64 Compat
            os: windows-latest
            compiler: cl
            cmake-args: -A ARM64 -DZLIB_COMPAT=ON
            deploy-name: win-arm64-compat

    steps:
    - name: Checkout repository
      uses: actions/checkout@v3

    - name: Set environment variables
      shell: bash
      run:  echo "tag=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV

    - name: Generate project files
      shell: bash
      run: |
        cmake . ${{ matrix.cmake-args }} \
          -DCMAKE_BUILD_TYPE=Release \
          -DZLIB_ENABLE_TESTS=ON \
          -DCMAKE_INSTALL_PREFIX=out \
          -DINSTALL_UTILS=ON
      env:
        CC: ${{ matrix.compiler }}
        CI: true

    - name: Compile source code
      run: cmake --build . -j2 --config Release --target install

    - name: Package release (Windows)
      if: runner.os == 'Windows'
      run: 7z a -tzip ../zlib-ng-${{ matrix.deploy-name }}.zip bin include lib ../LICENSE.md ../PORTING.md ../README.md
      working-directory: out

    - name: Upload release (Windows)
      uses: svenstaro/upload-release-action@v2
      if: runner.os == 'Windows'
      with:
        asset_name: zlib-ng-${{ matrix.deploy-name }}.zip
        file: zlib-ng-${{ matrix.deploy-name }}.zip
        tag: ${{env.tag}}
        repo_token: ${{ secrets.GITHUB_TOKEN }}
        overwrite: true
      env:
        GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"