forked from dingocoin/dingocoin
-
Notifications
You must be signed in to change notification settings - Fork 0
195 lines (194 loc) · 7.09 KB
/
Copy pathdevelop.yml
File metadata and controls
195 lines (194 loc) · 7.09 KB
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
name: Continuous Integration on develop branch
on:
push:
branches:
- develop
pull_request:
branches:
- develop
env:
SOURCE_ARTIFACT: ${{ github.workspace }}/source
jobs:
create-source-distribution:
name: Create Source Distribution
runs-on: ubuntu-20.04
env:
ARTIFACT_DIR: ${{ github.workspace }}/artifacts/source
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install Required Packages
run: |
sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3
sudo apt-get install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libdb5.3-dev libdb5.3++-dev
sudo apt-get update
sudo apt-get install libminiupnpc-dev
sudo apt-get install libzmq3-dev
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler
sudo apt-get install libqrencode-dev
- name: Create Distribution Tarball
run: |
./autogen.sh
./configure --with-incompatible-bdb --with-miniupnpc
make dist
- name: Download Dependencies
run: make -C depends download
- name: Create Dependencies Tarball
run: tar -czf depends.tar.gz depends
- name: Prepare Files for Artifact
run: |
mkdir -p $ARTIFACT_DIR
mv depends.tar.gz dingocoin-*.tar.gz $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: source
path: ${{ env.ARTIFACT_DIR }}
build-linux:
name: Build for Linux
needs: create-source-distribution
runs-on: ubuntu-20.04
env:
ARTIFACT_DIR: ${{ github.workspace }}/artifacts/linux
TEST_LOG_ARTIFACT_DIR: test-logs
steps:
- name: Getting Source
uses: actions/download-artifact@v4
with:
name: source
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
tar -xzf dingocoin-*.tar.gz --strip-components=1
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Install Required Packages
run: |
sudo apt-get update
sudo apt-get install -y python3-zmq
- name: Build Dependencies
run: make -C depends -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Build Dingocoin
run: |
./configure --prefix=$(realpath depends/x86_64-pc-linux-gnu)
make -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Prepare Files for Artifact
run: |
mkdir -p $ARTIFACT_DIR
mv $SOURCE_ARTIFACT/src/{dingocoin-cli,dingocoin-tx,dingocoind,qt/dingocoin-qt} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: linux-binaries
path: ${{ env.ARTIFACT_DIR }}
build-windows:
name: Build for Windows
needs: create-source-distribution
runs-on: ubuntu-20.04
env:
ARTIFACT_DIR: ${{ github.workspace }}/artifacts/windows
steps:
- name: Getting Source
uses: actions/download-artifact@v4
with:
name: source
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
tar -xzf dingocoin-*.tar.gz --strip-components=1
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Install Required Packages
run: |
sudo apt-get update
sudo apt-get install -y g++-mingw-w64-x86-64 gcc-mingw-w64-x86-64
- name: Switch MinGW GCC and G++ to POSIX Threading
run: |
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
- name: Build Dependencies
run: make -C depends -j$(nproc) HOST=x86_64-w64-mingw32
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Build Dingocoin
run: |
./configure --prefix=$(realpath depends/x86_64-w64-mingw32)
make -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Prepare Files for Artifact
run: |
mkdir -p $ARTIFACT_DIR
mv $SOURCE_ARTIFACT/src/{dingocoin-cli.exe,dingocoin-tx.exe,dingocoind.exe,qt/dingocoin-qt.exe} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: windows-binaries
path: ${{ env.ARTIFACT_DIR }}
# MacOS build script adapted from https://github.com/dingocoin/dingocoin/blob/master/.github/workflows/ci.yml
build-macos:
name: Build for MacOS
needs: create-source-distribution
runs-on: ubuntu-20.04
env:
name: x86_64-macos
host: x86_64-apple-darwin11
os: ubuntu-20.04
packages: cmake imagemagick libcap-dev librsvg2-bin libz-dev libtiff-tools libtinfo5 python3-setuptools xorriso libtinfo5
config-opts: "--enable-gui=qt5 --enable-reduce-exports"
goal: deploy
sdk: 10.11
sdk-url: "https://bitcoincore.org/depends-sources/sdks"
steps:
- 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 ${{ env.packages }}
- name: Checkout
uses: actions/checkout@v2
- name: SDK cache
if: ${{ env.sdk }}
uses: actions/cache@v2
env:
cache-name: sdk
with:
path: ./depends/sdk-sources
key: ${{ env.name }}-${{ env.cache-name }}
- name: Install SDK
if: ${{ env.sdk }}
run: |
mkdir -p ./depends/sdk-sources
mkdir -p ./depends/SDKs
curl --location --fail ${{ env.sdk-url }}/MacOSX${{ env.sdk }}.sdk.tar.gz -o depends/sdk-sources/MacOSX${{ env.sdk }}.sdk.tar.gz
tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${{ env.sdk }}.sdk.tar.gz
- name: Dependency cache
uses: actions/cache@v2
env:
cache-name: depends
with:
path: ./depends/built
key: ${{ env.name }}-${{ env.cache-name }}-${{ hashFiles('depends/packages/*') }}
- name: Build depends
run: |
make -C depends HOST=${{ env.host }}
- name: CCache
uses: actions/cache@v2
env:
cache-name: ccache
with:
path: ~/.ccache
key: ${{ env.name }}-${{ env.cache-name }}-${{ hashFiles('**/configure.ac') }}
- name: Build Dingocoin
run: |
depends/${{ env.host }}/native/bin/ccache --max-size=100M
./autogen.sh
./configure --prefix=`pwd`/depends/${{ env.host }} ${{ env.config-opts }} || ( cat config.log && false)
make ${{ env.goal }} || ( echo "Build failure. Verbose build follows." && make ${{ env.goal }} V=1 ; false )
mv Dingocoin-Core.dmg Dingocoin.dmg
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: macos-binaries
path: |
Dingocoin.dmg