summaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
blob: 7db575b21e5229e15c1246e0f3f3013de2e9c704 (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
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
name: Abaddon CI

on: [push, pull_request]

jobs:
  windows:
    name: windows-${{ matrix.buildtype }}
    runs-on: windows-latest
    strategy:
      matrix:
        buildtype: [Debug, RelWithDebInfo, MinSizeRel]
    steps:
      - uses: actions/checkout@v1
        with:
          submodules: true

      - name: Fetch CMake
        uses: lukka/get-cmake@v3.21.2

      - name: Fetch dependencies
        uses: lukka/run-vcpkg@v7
        with:
          vcpkgArguments: gtkmm nlohmann-json zlib sqlite3 glibmm openssl ixwebsocket curl
          vcpkgDirectory: ${{ github.workspace }}/ci/vcpkg/
          vcpkgTriplet: x64-windows

      - name: Build
        uses: lukka/run-cmake@v3
        with:
          useVcpkgToolchainFile: true
          vcpkgTriplet: x64-windows
          buildDirectory: ${{ runner.workspace }}/build
          cmakeBuildType: ${{ matrix.buildtype }}

      - name: Setup artifact files
        shell: cmd
        run: |
          del /f /s /q "${{ runner.workspace }}\build\CMakeFiles"
          rmdir /s /q "${{ runner.workspace }}\build\CMakeFiles"
          del /f /s /q "${{ runner.workspace }}\build\.ninja_deps"
          del /f /s /q "${{ runner.workspace }}\build\.ninja_log"
          del /f /s /q "${{ runner.workspace }}\build\abaddon.ilk"
          del /f /s /q "${{ runner.workspace }}\build\CMakeCache.txt"
          xcopy /E /I "${{ github.workspace }}\css" "${{ runner.workspace }}\build\css"
          xcopy /E /I "${{ github.workspace }}\res" "${{ runner.workspace }}\build\res"
          xcopy /E /I "${{ github.workspace }}\fonts" "${{ runner.workspace }}\build\fonts"
          mkdir "${{ runner.workspace }}\build\share"
          xcopy /E /I "${{ github.workspace }}\ci\gtk-for-windows\gtk-nsis-pack\share\glib-2.0" "${{ runner.workspace }}\build\share\glib-2.0"
          copy "${{ github.workspace }}\ci\vcpkg\installed\x64-windows\tools\glib\gspawn-win64-helper.exe" "${{ runner.workspace }}\build\gspawn-win64-helper.exe"
          copy "${{ github.workspace }}\ci\vcpkg\installed\x64-windows\tools\glib\gspawn-win64-helper-console.exe" "${{ runner.workspace }}\build\gspawn-win64-helper-console.exe"

      - name: Upload build
        uses: actions/upload-artifact@v2
        with:
          name: build-windows-${{ matrix.buildtype }}
          path: ${{ runner.workspace }}/build
  mac:
    name: macos-${{ matrix.buildtype }}
    runs-on: macos-latest
    strategy:
      matrix:
        buildtype: [Debug, RelWithDebInfo]
    steps:
      - uses: actions/checkout@v1
        with:
          submodules: true

      - name: Fetch CMake
        uses: lukka/get-cmake@v3.21.2

      - name: Fetch dependencies
        run: |
          brew install gtkmm3
          brew install nlohmann-json

      - name: Build
        uses: lukka/run-cmake@v3
        with:
          buildDirectory: ${{ runner.workspace }}/build
          cmakeBuildType: ${{ matrix.buildtype }}

      - name: Setup artifact files
        run: |
          mkdir "${{ runner.workspace }}/artifactdir"
          cp "${{runner.workspace}}/build/abaddon" "${{ runner.workspace }}/artifactdir/abaddon"
          cp -r "${{ github.workspace }}/css" "${{ runner.workspace }}/artifactdir/css"
          cp -r "${{ github.workspace }}/res" "${{ runner.workspace }}/artifactdir/res"

      - name: Upload build
        uses: actions/upload-artifact@v2
        with:
          name: build-macos-${{ matrix.buildtype }}
          path: ${{ runner.workspace }}/artifactdir

  linux:
    name: linux-${{ matrix.buildtype }}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        buildtype: [Debug, RelWithDebInfo, MinSizeRel]
    steps:
      - uses: actions/checkout@v1
        with:
          submodules: true

      - name: Fetch CMake
        uses: lukka/get-cmake@v3.21.2

      - name: Fetch dependencies
        run: |
          sudo apt-get update
          mkdir deps
          cd deps
          git clone https://github.com/nlohmann/json
          cd json
          git checkout db78ac1d7716f56fc9f1b030b715f872f93964e4
          mkdir build
          cd build
          cmake ..
          make
          sudo make install
          sudo apt-get install libgtkmm-3.0-dev
          sudo apt-get install libcurl4-gnutls-dev

      - name: Build
        uses: lukka/run-cmake@v3
        env:
          CC: gcc-9
          CXX: g++-9
        with:
          cmakeAppendedArgs: -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9
          buildDirectory: ${{ runner.workspace }}/build
          cmakeBuildType: ${{ matrix.buildtype }}

      - name: Setup artifact files
        run: |
          mkdir "${{ runner.workspace }}/artifactdir"
          cp "${{runner.workspace}}/build/abaddon" "${{ runner.workspace }}/artifactdir/abaddon"
          cp -r "${{ github.workspace }}/css" "${{ runner.workspace }}/artifactdir/css"
          cp -r "${{ github.workspace }}/res" "${{ runner.workspace }}/artifactdir/res"

      - name: Upload build
        uses: actions/upload-artifact@v2
        with:
          name: build-linux-${{ matrix.buildtype }}
          path: ${{ runner.workspace }}/artifactdir