summaryrefslogtreecommitdiff
path: root/.github/workflows/build.yml
blob: 236a7838e72562de9c161bcd609671477a623798 (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
name: Build

on: [push, pull_request]

jobs:
  build-linux:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Dependencies
      run: |
        sudo apt-get update
        sudo apt install \
          libglib2.0-dev \
          libgirepository1.0-dev \
          duktape-dev \
          libsoup-3.0-dev \
          meson \
          gcovr \
          gi-docgen \
          libpeas-dev \
          gsettings-desktop-schemas-dev \
          libcurl4-openssl-dev \
          valac
    - name: Build setup
      run: meson setup build -Db_coverage=true -Ddbus=disabled
    - name: Build
      run: ninja -C build
    - name: Tests and Coverage
      run: |
        ninja test -C build
        ninja coverage -C build
    - name: Upload artifact
      uses: actions/upload-pages-artifact@v1
      with:
        path: ./build/docs/libproxy-1.0/
    - name: CodeCov
      uses: codecov/codecov-action@v3

  build-linux-dbus:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Dependencies
      run: |
        sudo apt-get update
        sudo apt install \
          libglib2.0-dev \
          libgirepository1.0-dev \
          duktape-dev \
          libsoup-3.0-dev \
          meson \
          gcovr \
          gi-docgen \
          libpeas-dev \
          gsettings-desktop-schemas-dev \
          libcurl4-openssl-dev \
          valac
    - name: Build setup
      run: meson setup build -Db_coverage=true -Ddbus=enabled
    - name: Build
      run: ninja -C build
    - name: Tests
      run: |
        ninja test -C build

  build-osx:
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-python@v4
      with:
        python-version: |
          3.10
    - name: Setup
      run: |
        pip install meson ninja
        brew install libsoup icu4c gobject-introspection duktape gcovr gi-docgen libpeas curl vala
        echo 'PKG_CONFIG_PATH=/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/gi-docgen/lib/pkgconfig' >> $GITHUB_ENV
    - name: Build and Test
      run: |
        meson setup build
        ninja -C build
        ninja -C build test

  build-windows:
    runs-on: windows-latest
    continue-on-error: true
    defaults:
      run:
        shell: msys2 {0}
    steps:
      - uses: msys2/setup-msys2@v2
        with:
          msystem: MINGW64
          install: >-
            base-devel
            git
            mingw-w64-x86_64-toolchain
            mingw-w64-x86_64-ccache
            mingw-w64-x86_64-pkg-config
            mingw-w64-x86_64-gobject-introspection
            mingw-w64-x86_64-python-gobject
            mingw-w64-x86_64-meson
            mingw-w64-x86_64-glib2
            mingw-w64-x86_64-duktape
            mingw-w64-x86_64-gi-docgen
            mingw-w64-x86_64-libsoup3
            mingw-w64-x86_64-libpeas
            mingw-w64-x86_64-curl
            mingw-w64-x86_64-vala
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.9'
      - name: Build and Test
       # Disable docs for the moment until msys2 gi-docgen update has landed
        run: |
          meson setup build -Ddocs=false
          ninja -C build
          ninja -C build test

  # Deploy job
  deploy:
    # needs: [build-linux, build-osx, build-windows]
    needs: build-linux
    if: github.ref == 'refs/heads/main'

    permissions:
      pages: write      # to deploy to Pages
      id-token: write   # to verify the deployment originates from an appropriate source

    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}

    runs-on: ubuntu-latest
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v1