File: ci.yml

package info (click to toggle)
fio 3.41-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 13,012 kB
  • sloc: ansic: 82,290; python: 9,862; sh: 6,067; makefile: 813; yacc: 204; lex: 184
file content (170 lines) | stat: -rw-r--r-- 5,433 bytes parent folder | download | duplicates (2)
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
name: CI

on:
  push:
  pull_request:
  workflow_dispatch:
  schedule:
    - cron: "35 5 * * *"  # 5:35 UTC which is 0:35 ET

jobs:
  build-containers:
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        container:
        - {os: 'debian', dh: 'debian', ver: 'bookworm', target_arch: 'x86_64'}
        - {os: 'fedora', dh: 'fedora', ver: '40', target_arch: 'x86_64'}
        - {os: 'alma', dh: 'almalinux', ver: '9', target_arch: 'x86_64'}
        - {os: 'oracle', dh: 'oraclelinux', ver: '9', target_arch: 'x86_64'}
        - {os: 'rocky', dh: 'rockylinux', ver: '9', target_arch: 'x86_64'}
        - {os: 'ubuntu', dh: 'ubuntu', ver: 'noble', target_arch: 'i686'}
        - {os: 'ubuntu', dh: 'ubuntu', ver: 'noble', target_arch: 'x86_64'}

    container:
      image: ${{ matrix.container.dh }}:${{ matrix.container.ver }}
      env:
        CI_TARGET_BUILD: Linux
        CI_TARGET_ARCH: ${{ matrix.container.target_arch }}
        CI_TARGET_OS: ${{ matrix.container.os }}
        CI_TARGET_OS_VER: ${{ matrix.container.ver }}

    steps:
    - name: Checkout repo
      uses: actions/checkout@v4
    - name: Install dependencies
      run:  ./ci/actions-install.sh
    - name: Build
      run:  ./ci/actions-build.sh
    - name: Smoke test
      run:  ./ci/actions-smoke-test.sh
    - name: Full test
      run:  ./ci/actions-full-test.sh

  build:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        build:
        - linux-gcc
        - linux-clang
        - macos
        - linux-i686-gcc
        - android
        - windows-cygwin-64
        - windows-cygwin-32
        - windows-msys2-64
        include:
        - build: linux-gcc
          os: ubuntu-22.04
          cc: gcc
        - build: linux-clang
          os: ubuntu-22.04
          cc: clang
        - build: macos
          os: macos-13
        - build: linux-i686-gcc
          os: ubuntu-22.04
          arch: i686
        - build: android
          os: ubuntu-22.04
          arch: aarch64-linux-android32
        - build: android-recovery
          os: ubuntu-22.04
          arch: aarch64-linux-android32
        - build: windows-cygwin-64
          os: windows-latest
          arch: x86_64
          installer_arch: x64
          shell: bash
        - build: windows-cygwin-32
          os: windows-latest
          arch: i686
          installer_arch: x86
          shell: bash
        - build: windows-msys2-64
          os: windows-latest
          cc: clang
          arch: x86_64
          installer_arch: x64
          shell: msys2

    env:
      CI_TARGET_BUILD: ${{ matrix.build }}
      CI_TARGET_ARCH: ${{ matrix.arch }}
      CC: ${{ matrix.cc }}

    steps:
    - name: git config line endings (Windows)
      if: ${{ contains( matrix.build, 'windows' ) }}
      run: git config --global core.autocrlf input
    - name: Checkout repo
      uses: actions/checkout@v4
    - name: Install Cygwin toolchain (Windows)
      if: ${{ startsWith(matrix.build, 'windows-cygwin') }}
      uses: cygwin/cygwin-install-action@master
      with:
        packages: >
          mingw64-${{matrix.arch}}-binutils
          mingw64-${{matrix.arch}}-CUnit
          mingw64-${{matrix.arch}}-curl
          mingw64-${{matrix.arch}}-dlfcn
          mingw64-${{matrix.arch}}-gcc-core
          mingw64-${{matrix.arch}}-headers
          mingw64-${{matrix.arch}}-runtime
          mingw64-${{matrix.arch}}-zlib

    - name: Install msys2 toolchain (Windows)
      if: ${{ startsWith(matrix.build, 'windows-msys2') }}
      uses: msys2/setup-msys2@v2
      with:
        install: >
          git
          base-devel
          mingw-w64-${{matrix.arch}}-clang
          mingw-w64-${{matrix.arch}}-cunit
          mingw-w64-${{matrix.arch}}-toolchain
          mingw-w64-${{matrix.arch}}-lld
          mingw-w64-${{matrix.arch}}-python-scipy
          mingw-w64-${{matrix.arch}}-python-six
          mingw-w64-${{matrix.arch}}-python-statsmodels
          mingw-w64-${{matrix.arch}}-python-sphinx

    - name: install bash 4 (macOS)
      if: ${{ contains( matrix.build, 'macOS' ) }}
      run:  HOMEBREW_NO_AUTO_UPDATE=1 brew install bash
    - name: Install dependencies
      run: ${{matrix.shell}} ./ci/actions-install.sh
      if: ${{ !contains( matrix.build, 'msys2' ) }}
    - name: Build
      run:  ${{matrix.shell}} ./ci/actions-build.sh
    - name: Build installer (Windows)
      if: ${{ contains( matrix.build, 'windows' ) }}
      shell: cmd
      run: |
        cd os\windows
        dobuild.cmd ${{ matrix.installer_arch }}
        cd ..\..

    - name: Upload installer as artifact (Windows)
      if: ${{ contains( matrix.build, 'windows' ) }}
      uses: actions/upload-artifact@v4
      with:
        name: ${{ matrix.build }}-installer
        path: os\windows\*.msi
    - name: Upload installer as release for tagged builds (Windows)
      uses: softprops/action-gh-release@v1
      if: ${{ startsWith(github.ref, 'refs/tags/') && startsWith(matrix.build, 'windows-cygwin') }}
      with:
        files: os/windows/*.msi
    - name: Remove dependency files to resolve Makefile Cygwin sed issue (Windows)
      if: ${{ startsWith(matrix.build, 'windows-cygwin') }}
      run: rm *.d */*.d */*/*.d
      shell: bash
    - name: Smoke test
      run:  ${{matrix.shell}} ./ci/actions-smoke-test.sh
    - name: Full test
      run:  ${{matrix.shell}} ./ci/actions-full-test.sh