@@ -27,8 +27,7 @@ variables:
2727
2828jobs :
2929
30- # ###################### Linux #######################
31- - job : Linux
30+ - job : WaitForDaemonsBuild
3231 pool :
3332 vmImage : ubuntu-16.04
3433 steps :
@@ -41,13 +40,44 @@ jobs:
4140 displayName: Echo predefined vars
4241
4342 - script : |
44- mkdir bytecoin && cd bytecoin
45- git init
43+ set -o xtrace
4644 desktopRepo="$(desktopRepo)"
47- git remote add origin https://user:$(GithubPAT)@github.com/${desktopRepo%-*}
48- git fetch --depth 1 origin $(Build.SourceBranch)
49- git checkout FETCH_HEAD
50- displayName: Clone daemons code
45+ daemonsRepo=${desktopRepo%-*}
46+ contains () { [[ "$1" =~ (^|[[:space:]])"$2" ]]; }
47+ while [ : ]
48+ do
49+ branches=`curl -H "Authorization: token $(GithubPAT)" https://api.github.com/repos/$daemonsRepo/branches | jq -r '.[] | .name' | tr '\n' ' '`
50+ echo branches=$branches
51+ contains "$branches" releases ; result=$?
52+ [[ $result -eq 0 ]] && sleep 30s || break
53+ done
54+ displayName: Sleep while daemons repo has 'releases/*' branch
55+
56+ # ###################### Linux #######################
57+ - job : Linux
58+ pool :
59+ vmImage : ubuntu-16.04
60+ dependsOn : WaitForDaemonsBuild
61+ steps :
62+ - checkout : none
63+
64+ - task : DownloadBuildArtifacts@0
65+ displayName : Download daemons build artifacts
66+ inputs :
67+ buildType : specific
68+ project : bytecoin
69+ pipeline : bytecoin-daemons
70+ buildVersionToDownload : ' latest'
71+ downloadType : single
72+ artifactName : linux64
73+ downloadPath : ' $(Build.ArtifactStagingDirectory)'
74+
75+ - script : |
76+ unzip $(Build.ArtifactStagingDirectory)/linux64/\*.zip
77+ mkdir bytecoin/bin
78+ mv -v *d bytecoin/bin/
79+ ./bytecoin/bin/bytecoind --version
80+ displayName: Unzip daemons build artifact
5181
5282 - script : |
5383 mkdir bytecoin-gui && cd bytecoin-gui
@@ -57,36 +87,10 @@ jobs:
5787 git checkout FETCH_HEAD
5888 displayName: Clone desktop code
5989
60- - script : |
61- sudo apt-get install -y libusb-1.0-0-dev
62- displayName: Install libusb-1.0
63-
6490 - script : |
6591 sudo apt-get install -y qt5-qmake qtbase5-dev qtbase5-dev-tools qt5-default
6692 displayName: Install qt
6793
68- - script : |
69- wget -c 'https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.tar.gz'
70- mkdir boost && tar -xzf ./boost_1_69_0.tar.gz --directory boost --strip-components=1
71- displayName: Fetch boost
72-
73- - script : |
74- git clone --single-branch --depth 1 https://github.com/bcndev/lmdb.git
75- displayName: Clone LMDB
76-
77- - script : |
78- git clone --single-branch --branch OpenSSL_1_1_1b --depth 1 https://github.com/openssl/openssl.git
79- displayName: Clone OpenSSL
80-
81- - script : |
82- cd openssl && ./Configure linux-x86_64 no-shared && make -j$(nproc)
83- displayName: Build OpenSSL
84-
85- - script : |
86- mkdir bytecoin/build && cd bytecoin/build
87- cmake -DWITH_LEDGER=1 .. && make -j$(nproc)
88- displayName: Build daemons
89-
9094 - script : |
9195 mkdir bytecoin-gui/build && cd bytecoin-gui/build
9296 qmake ../src/bytecoin-gui.pro && make -j$(nproc)
@@ -111,6 +115,7 @@ jobs:
111115- job : Mac
112116 pool :
113117 vmImage : macOS-10.13
118+ dependsOn : WaitForDaemonsBuild
114119 variables :
115120 MACOSX_DEPLOYMENT_TARGET : 10.11
116121 condition : |
@@ -123,14 +128,23 @@ jobs:
123128 steps :
124129 - checkout : none
125130
131+ - task : DownloadBuildArtifacts@0
132+ displayName : Download daemons build artifacts
133+ inputs :
134+ buildType : specific
135+ project : bytecoin
136+ pipeline : bytecoin-daemons
137+ buildVersionToDownload : ' latest'
138+ downloadType : single
139+ artifactName : macos
140+ downloadPath : ' $(Build.ArtifactStagingDirectory)'
141+
126142 - script : |
127- mkdir bytecoin && cd bytecoin
128- git init
129- desktopRepo="$(desktopRepo)"
130- git remote add origin https://user:$(GithubPAT)@github.com/${desktopRepo%-*}
131- git fetch --depth 1 origin $(Build.SourceBranch)
132- git checkout FETCH_HEAD
133- displayName: Clone daemons code
143+ unzip $(Build.ArtifactStagingDirectory)/macos/\*.zip
144+ mkdir bytecoin/bin
145+ mv -v *d bytecoin/bin/
146+ ./bytecoin/bin/bytecoind --version
147+ displayName: Unzip daemons build artifact
134148
135149 - script : |
136150 mkdir bytecoin-gui && cd bytecoin-gui
@@ -140,39 +154,10 @@ jobs:
140154 git checkout FETCH_HEAD
141155 displayName: Clone desktop code
142156
143- - script : |
144- brew install boost
145- displayName: Install boost from Homebrew
146-
147157 - script : |
148158 brew install qt
149159 displayName: Install qt
150160
151- - script : |
152- curl -L -O https://github.com/libusb/libusb/releases/download/v1.0.22/libusb-1.0.22.tar.bz2
153- mkdir libusb && tar -xvf libusb-1.0.22.tar.bz2 --directory libusb --strip-components=1
154- cd libusb
155- ./configure --prefix=`pwd`
156- make install
157- displayName: Build libusb
158-
159- - script : |
160- git clone --single-branch --depth 1 https://github.com/bcndev/lmdb.git
161- displayName: Clone LMDB
162-
163- - script : |
164- git clone --single-branch --branch OpenSSL_1_1_1b --depth 1 https://github.com/openssl/openssl.git
165- displayName: Clone OpenSSL
166-
167- - script : |
168- cd openssl && ./Configure darwin64-x86_64-cc no-shared && make -j
169- displayName: Build OpenSSL
170-
171- - script : |
172- mkdir bytecoin/build && cd bytecoin/build
173- cmake -DWITH_LEDGER=1 .. && make -j
174- displayName: Build daemons
175-
176161 - script : |
177162 mkdir bytecoin-gui/build && cd bytecoin-gui/build
178163 /usr/local/opt/qt/bin/qmake ../src/bytecoin-gui.pro && make -j
@@ -198,6 +183,7 @@ jobs:
198183- job : Windows
199184 pool :
200185 vmImage : vs2017-win2016
186+ dependsOn : WaitForDaemonsBuild
201187 condition : |
202188 and(
203189 succeeded(),
@@ -236,10 +222,26 @@ jobs:
236222 steps :
237223 - checkout : none
238224
225+ - task : DownloadBuildArtifacts@0
226+ displayName : Download daemons build artifacts
227+ inputs :
228+ buildType : specific
229+ project : bytecoin
230+ pipeline : bytecoin-daemons
231+ buildVersionToDownload : ' latest'
232+ downloadType : single
233+ artifactName : win$(arch)
234+ downloadPath : ' $(Build.ArtifactStagingDirectory)'
235+
239236 - bash : |
240- curl -O http://strawberryperl.com/download/5.28.1.1/strawberry-perl-5.28.1.1-64bit-portable.zip
241- 7z x strawberry-perl-5.28.1.1-64bit-portable.zip -ostrawberry-perl
242- displayName: Install ActivePerl (required to build OpenSSL)
237+ set -o xtrace
238+ 7z x "$(Build.ArtifactStagingDirectory)"/win$(arch)/\*.zip
239+ mkdir bytecoin/bin
240+ mv -v *d.exe bytecoin/bin
241+ mv -v *d.pdb bytecoin/bin
242+ mv -v *.dll bytecoin/bin/
243+ ./bytecoin/bin/bytecoind --version
244+ displayName: Unzip daemons build artifact
243245
244246 - bash : |
245247 curl -L -O $(qtRepoUrlPrefix)$(arch)_$(qtMSVC)$(qtBinArch)/$(qtFullVer)qtbase-$(qtBuildName)$(qtBinArch).7z
@@ -265,15 +267,6 @@ jobs:
265267 7z x jom.zip -ojom
266268 displayName: Install Jom
267269
268- - bash : |
269- mkdir bytecoin && cd bytecoin
270- git init
271- desktopRepo="$(desktopRepo)"
272- git remote add origin https://user:$(GithubPAT)@github.com/${desktopRepo%-*}
273- git fetch --depth 1 origin $(Build.SourceBranch)
274- git checkout FETCH_HEAD
275- displayName: Clone daemons code
276-
277270 - bash : |
278271 mkdir bytecoin-gui && cd bytecoin-gui
279272 git init
@@ -282,59 +275,6 @@ jobs:
282275 git checkout FETCH_HEAD
283276 displayName: Clone desktop code
284277
285- - bash : |
286- curl -L -O https://dl.bintray.com/boostorg/release/1.69.0/source/boost_1_69_0.zip
287- 7z x boost_1_69_0.zip
288- mv boost_1_69_0 boost
289- displayName: Fetch boost
290-
291- - bash : |
292- curl -L -O https://github.com/libusb/libusb/releases/download/v1.0.22/libusb-1.0.22.7z
293- 7z x libusb-1.0.22.7z -olibusb
294- displayName: Fetch libusb
295-
296- - bash : |
297- git clone --single-branch --depth 1 https://github.com/bcndev/lmdb.git
298- displayName: Clone LMDB
299-
300- - bash : |
301- git clone --single-branch --branch OpenSSL_1_1_1b --depth 1 https://github.com/openssl/openssl.git $(opensslDir)
302- displayName: Clone OpenSSL
303-
304- - bash : |
305- sed -i 's/ lib_cflags => add("\/Zi \/Fdossl_static.pdb"),/# lib_cflags => add("\/Zi \/Fdossl_static.pdb"),/g' $(opensslDir)/Configurations/10-main.conf
306- sed -i 's/ dso_cflags => "\/Zi \/Fddso.pdb",/# dso_cflags => "\/Zi \/Fddso.pdb",/g' $(opensslDir)/Configurations/10-main.conf
307- sed -i 's/ bin_cflags => "\/Zi \/Fdapp.pdb",/# bin_cflags => "\/Zi \/Fdapp.pdb",/g' $(opensslDir)/Configurations/10-main.conf
308- displayName: Patch OpenSSL config files to build OpenSSL using many threads
309- # we have to do it because of:
310- # fatal error C1041: cannot open program database openssl\ossl_static.pdb;
311- # if multiple CL.EXE write to the same .PDB file, please use /FS
312- # But we do not need the debug files and there is no option to disable them.
313-
314- - bash : |
315- cd $(opensslDir)
316- ../strawberry-perl/perl/bin/perl.exe Configure $(opensslConfig) no-shared no-asm no-stdio no-tests
317- echo "call \"$VCINSTALLDIR\Auxiliary\Build\vcvars$(arch).bat\"" > compile.bat
318- echo "..\jom\jom -j %NUMBER_OF_PROCESSORS%" >> compile.bat
319- ./compile.bat
320- displayName: Build OpenSSL
321-
322- - bash : |
323- mkdir bytecoin/build && cd bytecoin/build
324- "$(vsCMakeDir)"/cmake.exe -DWITH_LEDGER=1 -G "$(generatorName)" --config RelWithDebInfo ..
325- CL=/MP
326- "$(vsMSBuildDir)"/msbuild.exe ALL_BUILD.vcxproj -maxcpucount -p:Configuration=RelWithDebInfo
327- displayName: Build daemons
328-
329- - bash : |
330- mv -v bytecoin/bin/RelWithDebInfo/* bytecoin/bin
331- mv -v bytecoin/libs/RelWithDebInfo/* bytecoin/libs
332- displayName: Move daemons from RelWithDebInfo to bin/ or libs/
333-
334- - bash : |
335- cp -v libusb/MS$(arch)/dll/libusb-1.0.dll bytecoin/bin
336- displayName: Copy libusb to bytecoin/bin
337-
338278 - bash : |
339279 mkdir bytecoin-gui/build && cd bytecoin-gui/build
340280 echo "call \"$VCINSTALLDIR\Auxiliary\Build\vcvars$(arch).bat\"" > compile.bat
@@ -385,10 +325,8 @@ jobs:
385325 condition : |
386326 and(
387327 succeeded(),
388- or(
389- startsWith(variables['build.sourceBranch'], 'refs/heads/releases/'),
390- startsWith(variables['build.sourceBranch'], 'refs/tags/')
391- ))
328+ startsWith(variables['build.sourceBranch'], 'refs/heads/releases/')
329+ )
392330 steps :
393331 - checkout : none
394332
@@ -446,3 +384,6 @@ jobs:
446384 https://uploads.github.com/repos/$(desktopRepo)/releases/$release_id/assets?name="bytecoin-desktop-$(Build.SourceBranchName)-win32-portable.zip"
447385 displayName: Create github release in desktop repo
448386
387+ - script : |
388+ curl -H "Authorization: token $(GithubPAT)" -X DELETE https://api.github.com/repos/$(daemonsRepo)/git/$(Build.SourceBranch)
389+ displayName: Remove branch created for the build
0 commit comments