File: build.yml

package info (click to toggle)
colobot 0.2.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 415,536 kB
  • sloc: cpp: 129,246; ansic: 8,872; python: 2,158; sh: 672; awk: 91; xml: 35; makefile: 31
file content (212 lines) | stat: -rw-r--r-- 9,654 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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
name: Build

on: [push, pull_request]

jobs:
  build-linux:
    runs-on: ${{ matrix.host_os }}
    container: ${{ matrix.container }}
    strategy:
      matrix:
        target_os: [linux]
        host_os: [ubuntu-20.04]
        container: ['']
      fail-fast: false
    steps:
    - name: Install Colobot dependencies
      run: sudo apt-get update && sudo apt-get install -y --no-install-recommends build-essential cmake libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsndfile1-dev libvorbis-dev libogg-dev libpng-dev libglew-dev libopenal-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-regex-dev libphysfs-dev gettext git po4a vorbis-tools librsvg2-bin xmlstarlet libmpg123-dev
      if: matrix.container == ''
    - uses: actions/checkout@v3
    - name: Checkout the Google Test submodule
      run: git submodule update --init -- lib/googletest
    - name: Create build directory
      run: cmake -E make_directory build
    - name: Run CMake (for Linux)
      working-directory: build
      run: cmake -DCMAKE_INSTALL_PREFIX=/install -DCMAKE_SKIP_INSTALL_RPATH=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DDEV_BUILD=1 -DPORTABLE=1 -DTOOLS=1 -DTESTS=1 -DDESKTOP=1 ..
      if: matrix.target_os == 'linux'
    - name: Build
      working-directory: build
      run: make -j `nproc`
    - name: Install
      working-directory: build
      run: DESTDIR=. make install
    - name: Patch library path
      working-directory: build
      run: patchelf --set-rpath '.' install/colobot
      if: matrix.target_os == 'linux'
    - name: Upload build
      uses: actions/upload-artifact@v3
      with:
        name: ${{matrix.target_os}}-debug
        path: build/install
      if: matrix.host_os == 'ubuntu-20.04'
    - name: Create AppImage
      working-directory: build
      run: |
        # Download app image tool
        wget -N https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
        chmod +x linuxdeploy-x86_64.AppImage
        ./linuxdeploy-x86_64.AppImage --appimage-extract
        
        # Create AppImage
        NO_STRIP=1 ./squashfs-root/AppRun -e colobot --output appimage --appdir colobot.AppDir -d desktop/colobot.desktop -i ../desktop/colobot.svg
        chmod +x Colobot-x86_64.AppImage
        
        # Prepare folder for zip
        mkdir -p appimage
        cp -rp install/data appimage/data
        cp -rp install/lang appimage/lang
        cp -p Colobot-x86_64.AppImage appimage/colobot
      if: matrix.target_os == 'linux'
    - name: Upload AppImage
      uses: actions/upload-artifact@v3
      with:
        name: ${{matrix.target_os}}-debug-AppImage
        path: build/appimage
      if: matrix.target_os == 'linux' && matrix.host_os == 'ubuntu-20.04'
    - name: Run tests
      # TODO: Maybe run Windows tests using wine as well?
      working-directory: build
      run: ./colobot_ut --gtest_output=xml:gtestresults.xml
      if: matrix.target_os == 'linux'
    - name: Upload test results
      uses: actions/upload-artifact@v3
      with:
        name: Test results (${{ matrix.target_os }}, ${{ matrix.host_os }})
        path: build/gtestresults.xml
      if: matrix.target_os == 'linux'
  build-macos:
    runs-on: ${{ matrix.host_os }}
    container: ${{ matrix.container }}
    strategy:
      matrix:
        target_os: [macos]
        host_os: [macos-12]
        container: ['']
      fail-fast: false
    steps:
    - name: Install Colobot dependencies
      run: brew install cmake sdl2 sdl2_image sdl2_ttf boost glew physfs flac libsndfile libvorbis vorbis-tools gettext libicns librsvg wget xmlstarlet
      if: matrix.container == ''
    - uses: actions/checkout@v3
    - name: Checkout the Google Test submodule
      run: git submodule update --init -- lib/googletest
    - name: Create build directory
      run: cmake -E make_directory build
    - name: Run CMake (for Mac)
      working-directory: build
      run: cmake -DCMAKE_INSTALL_PREFIX=./install -DCMAKE_SKIP_INSTALL_RPATH=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DDEV_BUILD=1 -DPORTABLE=1 -DTESTS=1 -DDESKTOP=1 -DOPENAL_LIBRARY=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenAL.framework/OpenAL.tbd ..
      if: matrix.target_os == 'macos'
    - name: Build
      working-directory: build
      run: make -j `nproc`
    - name: Run tests
      # TODO: Maybe run Windows tests using wine as well?
      working-directory: build
      run: ./colobot_ut --gtest_output=xml:gtestresults.xml
      if: matrix.target_os == 'macos'
    - name: Upload test results
      uses: actions/upload-artifact@v3
      with:
        name: Test results (${{ matrix.target_os }}, ${{ matrix.host_os }})
        path: build/gtestresults.xml
      if: matrix.target_os == 'macos'
  build-windows:
    runs-on: windows-2019
    strategy:
      matrix:
        include:
          - arch: amd64
            vcpkg_triplet: 'x64-windows-static'
          - arch: x86
            vcpkg_triplet: 'x86-windows-static'
    steps:
    - uses: actions/checkout@v3
    - name: Checkout the Google Test submodule
      run: git submodule update --init -- lib/googletest
    - name: Install Ninja
      uses: seanmiddleditch/gha-setup-ninja@master
    - name: Setup VS Environment
      uses: seanmiddleditch/gha-setup-vsdevenv@master
      with:
        arch: ${{ matrix.arch }}
    - name: Install Colobot dependencies
      uses: lukka/run-vcpkg@v7
      with:
        setupOnly: true
        vcpkgGitCommitId: 'f6a5d4e8eb7476b8d7fc12a56dff300c1c986131'
        vcpkgTriplet: ${{ matrix.vcpkg_triplet }}
        # SHA-256 hash of the vcpkg.json file, recalculated automatically when it changes
        appendedCacheKey: ${{ hashFiles( '**/vcpkg.json' ) }}
        additionalCachedPaths: ${{ github.workspace }}/build/vcpkg_installed
    - name: Install external tools
      working-directory: ${{ github.workspace }}
      run: |
        echo "Downloading gettext..."
        (New-Object System.Net.WebClient).DownloadFile("https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.20.2-v1.16/gettext0.20.2-iconv1.16-static-64.zip", "gettext.zip");
        echo "Unpacking gettext..."
        7z x -ogettext gettext.zip;
        echo "Adding gettext to PATH..."
        echo "${{ github.workspace }}\gettext\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
        echo "Downloading xmlstarlet..."
        (New-Object System.Net.WebClient).DownloadFile("https://downloads.sourceforge.net/project/xmlstar/xmlstarlet/1.6.1/xmlstarlet-1.6.1-win32.zip", "xmlstarlet.zip");
        echo "Unpacking xmlstarlet..."
        7z x -oxmlstarlet xmlstarlet.zip;
        echo "Renaming xml.exe to xmlstarlet.exe"
        Rename-Item -Path "${{ github.workspace }}\xmlstarlet\xmlstarlet-1.6.1\xml.exe" -NewName "xmlstarlet.exe"
        echo "Adding xmlstarlet to PATH..."
        echo "${{ github.workspace }}\xmlstarlet\xmlstarlet-1.6.1" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
        echo "Downloading rsvg-convert..."
        (New-Object System.Net.WebClient).DownloadFile("https://downloads.sourceforge.net/project/tumagcc/rsvg-convert-2.40.20.7z", "rsvg-convert.zip");
        echo "Unpacking xmlstarlet..."
        7z x -orsvg-convert rsvg-convert.zip;
        echo "Adding rsvg-convert to PATH..."
        echo "${{ github.workspace }}\rsvg-convert" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
      shell: pwsh
    - name: Create build directory
      run: cmake -E make_directory build
    - name: Run CMake (for Windows)
      working-directory: build
      run: cmake -G "Ninja" -DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.exe -DVCPKG_TARGET_TRIPLET=${{ matrix.vcpkg_triplet }} -DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}\scripts\buildsystems\vcpkg.cmake -DUSE_STATIC_RUNTIME=1 -DCBOT_STATIC=1 -DBOOST_STATIC=1 -DGLEW_STATIC=1 -DSNDFILE_STATIC=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}\build\install -DDEV_BUILD=1 -DPORTABLE=1 -DTOOLS=1 -DTESTS=1 -DDESKTOP=1 ..
    - name: Build
      working-directory: build
      run: |
        $nproc = (Get-CIMInstance -Class 'CIM_Processor').NumberOfLogicalProcessors
        cmake --build . -j $nproc
      shell: pwsh
    - name: Install
      working-directory: build
      run: cmake --install .
    - name: Upload build
      uses: actions/upload-artifact@v3
      with:
        name: windows-msvc-debug-${{ matrix.arch }}
        path: build/install
    - name: Run tests
      working-directory: build
      run: ./colobot_ut --gtest_output=xml:gtestresults.xml
    - name: Upload test results
      uses: actions/upload-artifact@v3
      with:
        name: 'Test results (windows, MSVC, ${{ matrix.arch }})'
        path: build/gtestresults.xml
  doc:
    runs-on: ubuntu-latest
    steps:
    - name: Install Colobot dependencies
      run: sudo apt-get update && sudo apt-get install -y --no-install-recommends build-essential cmake libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsndfile1-dev libvorbis-dev libogg-dev libpng-dev libglew-dev libopenal-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-regex-dev libphysfs-dev gettext git po4a vorbis-tools librsvg2-bin xmlstarlet doxygen graphviz libmpg123-dev
    - uses: actions/checkout@v3
    - name: Create build directory
      run: cmake -E make_directory build
    - name: Run CMake
      working-directory: build
      run: cmake ..
    - name: Build docs
      working-directory: build
      run: make doc
    - name: Upload docs
      uses: actions/upload-artifact@v3
      with:
        name: doc
        path: build/doc