aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
blob: eea86e40ad84ed88c94d6e62139feb4b4e174724 (plain) (blame)
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
name: Continuous Integration

on:
  - push
  - pull_request

jobs:
  build:
    name: ${{ matrix.name }}

    env:
      MAKEJOBS: "-j3"
      CHECK_DOC: "0"
      CCACHE_SIZE: "100M"
      CCACHE_TEMPDIR: /tmp/.ccache-temp
      CCACHE_COMPRESS: "1"
      PYTHON_DEBUG: "1"
      WINEDEBUG: fixme-all

    strategy:
      fail-fast: false
      matrix:
        name:
          - armhf-linux
          - i686-linux
          - i686-win
          - x86_64-linux-dbg
          - x86_64-linux-nowallet
          - x86_64-win
        include:
          - name: i686-linux
            host: i686-pc-linux-gnu
            os: ubuntu-20.04
            packages: g++-multilib bc python3-zmq
            run-tests: true
            dep-opts: "NO_QT=1"
            config-opts: "--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++"
            goal: install
          - name: armhf-linux
            host: arm-linux-gnueabihf
            os: ubuntu-20.04
            packages: g++-arm-linux-gnueabihf
            run-tests: false
            dep-opts: "NO_QT=1"
            config-opts: "--enable-glibc-back-compat --enable-reduce-exports --disable-tests"
            goal: install
          - name: x86_64-linux-nowallet
            host: x86_64-unknown-linux-gnu
            os: ubuntu-20.04
            packages: python3
            run-tests: true
            dep-opts: "NO_WALLET=1"
            config-opts: "--enable-glibc-back-compat --enable-reduce-exports --disable-wallet"
            goal: install
          - name: x86_64-linux-dbg
            host: x86_64-unknown-linux-gnu
            os: ubuntu-20.04
            packages: bc python3-zmq
            run-tests: true
            dep-opts: "DEBUG=1"
            config-opts: "--enable-zmq --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER"
            goal: install
          - name: i686-win
            host: i686-w64-mingw32
            arch: "i386"
            os: ubuntu-20.04
            packages: python3 nsis g++-mingw-w64-i686 wine bc wine-binfmt
            postinstall: |
              sudo update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix
              sudo update-alternatives --set i686-w64-mingw32-g++  /usr/bin/i686-w64-mingw32-g++-posix
              sudo update-binfmts --import /usr/share/binfmts/wine
            run-tests: true
            dep-opts: ""
            config-opts: "--enable-reduce-exports"
            goal: install
          - name: x86_64-win
            host: x86_64-w64-mingw32
            arch: "i386"
            os: ubuntu-20.04
            packages: python3 nsis g++-mingw-w64-x86-64 wine64 bc wine-binfmt
            postinstall: |
              sudo update-alternatives --set x86_64-w64-mingw32-gcc  /usr/bin/x86_64-w64-mingw32-gcc-posix
              sudo update-alternatives --set x86_64-w64-mingw32-g++  /usr/bin/x86_64-w64-mingw32-g++-posix
              sudo update-binfmts --import /usr/share/binfmts/wine
            run-tests: true
            dep-opts: ""
            config-opts: "--enable-reduce-exports"
            goal: install

    runs-on: ${{ matrix.os }}

    steps:
      - name: Add architecture
        if: ${{ matrix.arch }}
        run: |
          sudo dpkg --add-architecture "${{ matrix.arch }}"

      - name: Install packages
        run: |
          sudo apt-get update
          sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils curl ca-certificates ccache python3 rsync git procps bison
          sudo apt-get install ${{ matrix.packages }}

      - name: Post install
        if: ${{ matrix.postinstall }}
        run: ${{ matrix.postinstall }}

      - name: Checkout
        uses: actions/checkout@v2

      - name: Dependency cache
        uses: actions/cache@v2
        env:
          cache-name: depends
        with:
          path: ./depends/built
          key: ${{ matrix.name }}-${{ env.cache-name }}-${{ hashFiles('depends/packages/*') }}

      - name: Build depends
        run: |
          make $MAKEJOBS -C depends HOST=${{ matrix.host }} ${{ matrix.dep-opts }}

      - name: CCache
        uses: actions/cache@v2
        env:
          cache-name: ccache
        with:
          path: ~/.ccache
          key: ${{ matrix.name }}-${{ env.cache-name }}-${{ hashFiles('**/configure.ac') }}

      - name: Build Dogecoin
        run: |
          depends/${{ matrix.host }}/native/bin/ccache --max-size=$CCACHE_SIZE
          ./autogen.sh
          ./configure --prefix=`pwd`/depends/${{ matrix.host }} ${{ matrix.config-opts }} || ( cat config.log && false)
          make $MAKEJOBS ${{ matrix.goal }} || ( echo "Build failure. Verbose build follows." && make ${{ matrix.goal }} V=1 ; false )

      - name: Run tests
        if: ${{ matrix.run-tests }}
        run: |
          make check $MAKEJOBS VERBOSE=1
          qa/pull-tester/install-deps.sh
          qa/pull-tester/rpc-tests.py --coverage