This repository has been archived by the owner on Nov 4, 2024. It is now read-only.
forked from drivechain-project/mainchain-old
-
Notifications
You must be signed in to change notification settings - Fork 8
189 lines (151 loc) · 6.1 KB
/
build.yml
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
name: Build
on:
pull_request:
push:
branches:
- "master"
workflow_dispatch:
jobs:
build-linux:
name: Build Linux binaries
runs-on: ubuntu-20.04
steps:
- name: install Linux deps
run: sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3
- uses: actions/checkout@v3
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ./depends
key: linux-${{ hashFiles('depends/packages/**') }}
- name: download dependencies
run: make -C ./depends download-linux
- name: build dependencies
run: make -C ./depends -j4
- run: ./autogen.sh
- run: echo "CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site" >> $GITHUB_ENV
- run: ./configure
- run: make -j4
- name: 'Set environment variables: version number'
run: |
MAINCHAIN_VERSION=$(grep -oP "(?<=^PACKAGE_VERSION=').+(?='$)" configure)
echo "MAINCHAIN_VERSION=$MAINCHAIN_VERSION" >> "$GITHUB_ENV"
- name: move qt binary before uploading artifacts
run: mv src/qt/drivechain-qt src/drivechain-qt
- uses: actions/upload-artifact@v4
with:
name: mainchain-${{ env.MAINCHAIN_VERSION }}-x86_64-unknown-linux-gnu
if-no-files-found: error
path: |
src/drivechaind
src/drivechain-cli
src/drivechain-qt
build-windows:
name: Build Windows binaries
runs-on: ubuntu-20.04
steps:
# g++-mingw-w64-x86-64 is the cross-compiling toolchain needed for
# producing Windows binaries
#
# python3 line is needed to make `python` resolve to `python3`
- name: install deps
run: |
sudo apt install g++-mingw-w64-x86-64 \
build-essential libtool autotools-dev automake \
libssl-dev libevent-dev \
pkg-config bsdmainutils curl git \
python3-setuptools python-is-python3 \
- name: configure the Windows toolchain
run: sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
- uses: actions/checkout@v3
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ./depends
key: windows-${{ hashFiles('depends/packages/**') }}
- name: download dependencies
run: make -C ./depends download-win
- name: build dependencies
run: make -C ./depends HOST=x86_64-w64-mingw32 -j4
- run: ./autogen.sh
- run: echo "CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site" >> $GITHUB_ENV
- run: ./configure
- run: make -j4
- name: 'Set environment variables: version number'
run: |
MAINCHAIN_VERSION=$(grep -oP "(?<=^PACKAGE_VERSION=').+(?='$)" configure)
echo "MAINCHAIN_VERSION=$MAINCHAIN_VERSION" >> "$GITHUB_ENV"
- name: move qt binary before uploading artifacts
run: mv src/qt/drivechain-qt.exe src/drivechain-qt.exe
- uses: actions/upload-artifact@v4
with:
name: mainchain-${{ env.MAINCHAIN_VERSION }}-x86_64-w64-mingw32
if-no-files-found: error
path: |
src/drivechaind.exe
src/drivechain-cli.exe
src/drivechain-qt.exe
build-macos:
name: Build macOS binaries
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ./depends
key: macos-${{ hashFiles('depends/packages/**') }}
- name: download dependencies
run: make -C ./depends download-osx
- name: Run build in Docker
uses: addnab/docker-run-action@v3
with:
image: barebitcoin/testchain-macos-builder
options: -v ${{ github.workspace }}:/testchain --workdir=/testchain
shell: bash
run: |
set -e
make -C depends -j4
export CONFIG_SITE=$PWD/depends/x86_64-apple-darwin11/share/config.site
./autogen.sh
./configure
make -j4 # Limit the concurrency to prevent OOM
- name: 'Set environment variables: version number'
run: |
MAINCHAIN_VERSION=$(grep -oP "(?<=^PACKAGE_VERSION=').+(?='$)" configure)
echo "MAINCHAIN_VERSION=$MAINCHAIN_VERSION" >> "$GITHUB_ENV"
- name: move qt binary before uploading artifacts
run: mv src/qt/drivechain-qt src/drivechain-qt
- uses: actions/upload-artifact@v4
with:
name: mainchain-${{ env.MAINCHAIN_VERSION }}-x86_64-apple-darwin11
if-no-files-found: error
path: |
src/drivechaind
src/drivechain-cli
src/drivechain-qt
upload-artifacts-to-releases-drivechain-info:
name: Upload artifacts to releases.drivechain.info
runs-on: ubuntu-latest
needs: [build-linux, build-macos, build-windows]
if: github.repository_owner == 'LayerTwo-Labs'
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Zip artifacts
run: |
mv mainchain-*-x86_64-apple-darwin11 L1-Mainchain-latest-x86_64-apple-darwin
zip -r L1-Mainchain-latest-x86_64-apple-darwin.zip L1-Mainchain-latest-x86_64-apple-darwin
mv mainchain-*-x86_64-w64-mingw32 L1-Mainchain-latest-x86_64-w64-mingw32
zip -r L1-Mainchain-latest-x86_64-w64-mingw32.zip L1-Mainchain-latest-x86_64-w64-mingw32
mv mainchain-*-x86_64-unknown-linux-gnu L1-Mainchain-latest-x86_64-unknown-linux-gnu
zip -r L1-Mainchain-latest-x86_64-unknown-linux-gnu.zip L1-Mainchain-latest-x86_64-unknown-linux-gnu
- name: Upload artifacts to releases.drivechain.info
uses: cross-the-world/ssh-scp-ssh-pipelines@latest
with:
host: 45.33.96.47
user: root
pass: ${{ secrets.RELEASES_SERVER_PW }}
port: 22
scp: |
'L1-Mainchain-latest-*.zip' => '/var/www/html/'