aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/build.yml
blob: 77da036ba87b60556c518d6c68b516c1ec7b69e0 (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
147
148
149
name: continuous-integration/gh-actions/gui

on: [push, pull_request]

jobs:
  build-macos:
    runs-on: macOS-latest
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: recursive
    - name: install dependencies
      run: HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi zmq libpgm miniupnpc ldns expat libunwind-headers protobuf qt5 pkg-config
    - name: build
      run: DEV_MODE=ON make release -j3
    - name: test qml
      run: build/release/bin/monero-wallet-gui.app/Contents/MacOS/monero-wallet-gui --test-qml

  build-ubuntu:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: recursive
    - name: remove bundled boost
      run: sudo rm -rf /usr/local/share/boost
    - name: set apt conf
      run: |
        echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
        echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
        echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
    - name: update apt
      run: sudo apt update
    - name: install monero dependencies
      run: sudo apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev libprotobuf-dev protobuf-compiler
    - name: install monero gui dependencies
      run: sudo apt -y install qtbase5-dev qt5-default qtdeclarative5-dev qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-dialogs qml-module-qtquick-xmllistmodel qml-module-qt-labs-settings qml-module-qt-labs-folderlistmodel qttools5-dev-tools qml-module-qtquick-templates2 libqt5svg5-dev libgcrypt20-dev xvfb
    - name: build
      run: DEV_MODE=ON make release -j3
    - name: test qml
      run: xvfb-run -a build/release/bin/monero-wallet-gui --test-qml

  build-windows:
    runs-on: windows-latest
    defaults:
      run:
        shell: msys2 {0}
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: recursive
    - uses: eine/setup-msys2@v2
      with:
        update: true
        install: mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb git mingw-w64-x86_64-qt5 mingw-w64-x86_64-libgcrypt
    - name: build
      run: DEV_MODE=ON make release-win64 -j2
    - name: test qml
      run: build/release/bin/monero-wallet-gui --test-qml

  macos-bundle:
    runs-on: macOS-latest
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: recursive
    - name: install dependencies
      run: HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi zmq libpgm miniupnpc ldns expat libunwind-headers protobuf pkg-config python3 p7zip
    - name: install dependencies
      run: pip3 install requests semantic_version lxml
    - name: download qt
      run: |
          curl -O https://raw.githubusercontent.com/engnr/qt-downloader/master/qt-downloader
          chmod +x qt-downloader
          ./qt-downloader macos desktop 5.15.2 clang_64
      working-directory: ../
    - name: build
      run: CMAKE_PREFIX_PATH=/Users/runner/work/monero-gui/5.15.2/clang_64 make release -j3
    - name: deploy
      run: make deploy
      working-directory: build/release
    - name: create .tar
      run: tar -cf monero-wallet-gui.tar monero-wallet-gui.app
      working-directory: build/release/bin
    - uses: actions/upload-artifact@v2
      with:
        name: ${{ github.job }}
        path: build/release/bin/monero-wallet-gui.tar

  docker-linux-static:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: recursive
    - uses: satackey/action-docker-layer-caching@v0.0.8
      continue-on-error: true
      with:
        key: docker-linux-static-{hash}
        restore-keys: |
          docker-linux-static-
    - name: preprare build enviroment
      run: docker build --tag monero:build-env-linux --build-arg THREADS=3 --file Dockerfile.linux .
    - name: build
      run: docker run --rm -v /home/runner/work/monero-gui/monero-gui:/monero-gui -w /monero-gui monero:build-env-linux sh -c 'make release-static -j3'
    - uses: actions/upload-artifact@v2
      with:
        name: ${{ github.job }}
        path: |
          /home/runner/work/monero-gui/monero-gui/build/release/bin/monero-wallet-gui
          /home/runner/work/monero-gui/monero-gui/build/release/bin/monerod

  docker-windows-static:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: recursive
    - uses: satackey/action-docker-layer-caching@v0.0.8
      continue-on-error: true
      with:
        key: docker-windows-static-{hash}
        restore-keys: |
          docker-windows-static-
    - name: preprare build enviroment
      run: docker build --tag monero:build-env-windows --build-arg THREADS=3 --file Dockerfile.windows .
    - name: build
      run: docker run --rm -v /home/runner/work/monero-gui/monero-gui:/monero-gui -w /monero-gui monero:build-env-windows sh -c 'make depends root=/depends target=x86_64-w64-mingw32 tag=win-x64 -j3'
    - uses: actions/upload-artifact@v2
      with:
        name: ${{ github.job }}
        path: |
          /home/runner/work/monero-gui/monero-gui/build/x86_64-w64-mingw32/release/bin/monero-wallet-gui.exe
          /home/runner/work/monero-gui/monero-gui/build/x86_64-w64-mingw32/release/bin/monerod.exe

  docker-android:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v1
      with:
        submodules: recursive
    - name: preprare build enviroment
      run: docker build --tag monero:build-env-android --build-arg THREADS=3 --file Dockerfile.android .
    - name: build
      run: docker run --rm -v /home/runner/work/monero-gui/monero-gui:/monero-gui -e THREADS=3 monero:build-env-android
    - uses: actions/upload-artifact@v2
      with:
        name: ${{ github.job }}
        path: /home/runner/work/monero-gui/monero-gui/build/Android/release/android-build/monero-gui.apk