forked from input-output-hk/cardano-sl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
appveyor.yml
171 lines (154 loc) · 7.68 KB
/
appveyor.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
version: 1.0.{build}
image: Visual Studio 2015
build: off
environment:
global:
# Avoid long paths on Windows
STACK_ROOT: "c:\\s"
STACK_WORK: ".w"
WORK_DIR: "c:\\w"
CACHE_S3_VERSION: v0.1.4
CACHE_S3_MAX_SIZE: 1600MB # AppVeyor limits the amount uploaded to approx 2GB
AWS_REGION: us-west-1
S3_BUCKET: appveyor-ci-cache
AWS_ACCESS_KEY_ID:
secure: sQWt5CpaN0H+jwUVoTsrET46pADUDEcrJ5D9MHmKX0M=
AWS_SECRET_ACCESS_KEY:
secure: m5sQYd16K8HA0zoZaD0gOl4EEWUso1D51L5rp+kT3hLaIE3tt4iT+b+iW8F4F0FU
init:
- ps: $env:CACHE_S3_READY = (("$env:CACHE_S3_VERSION" -ne "") -and ("$env:S3_BUCKET" -ne "") -and ("$env:AWS_ACCESS_KEY_ID" -ne "") -and ("$env:AWS_SECRET_ACCESS_KEY" -ne ""))
before_test:
# Avoid long paths not to each MAX_PATH of 260 chars
- xcopy /q /s /e /r /k /i /v /h /y "%APPVEYOR_BUILD_FOLDER%" "%WORK_DIR%"
- cd "%WORK_DIR%"
# Restore cache
- Echo %APPVEYOR_BUILD_VERSION% > build-id
- ps: >-
Write-Host "in pagefile script" ;
$c = Get-WmiObject Win32_computersystem -EnableAllPrivileges ;
if($c.AutomaticManagedPagefile){
Write-Host "disabling managed page file settings"
$c.AutomaticManagedPagefile = $false
$c.Put() | Out-Null
} ;
$new_page_size=25000 ;
$CurrentPageFile = Get-WmiObject -Class Win32_PageFileSetting ;
if ($CurrentPageFile.InitialSize -ne $new_page_size) {
Write-Host "setting new page file size to $new_page_size"
$CurrentPageFile.InitialSize=$new_page_size
$CurrentPageFile.MaximumSize=$new_page_size
$CurrentPageFile.Put() | Out-Null
} ;
if ( $env:CACHE_S3_READY -eq $true ) {
Start-FileDownload https://github.com/fpco/cache-s3/releases/download/$env:CACHE_S3_VERSION/cache-s3-$env:CACHE_S3_VERSION-windows-x86_64.zip -FileName cache-s3.zip
7z x cache-s3.zip cache-s3.exe
.\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -v info -c restore stack --base-branch=develop
.\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -v info -c restore stack work --base-branch=develop
}
# Get custom GHC
- ps: >-
mkdir C:\ghc
Invoke-WebRequest "https://s3.eu-central-1.amazonaws.com/ci-static/ghc-8.2.2-x86_64-unknown-mingw32.tar.xz" -OutFile "C:\ghc\ghc.tar.xz" -UserAgent "Curl"
7z x C:\ghc\ghc.tar.xz -oC:\ghc
7z x C:\ghc\ghc.tar -oC:\ghc
$env:PATH="$env:PATH;C:\ghc\ghc-8.2.2\bin"
# Install OpenSSL 1.0.2 (see https://github.com/appveyor/ci/issues/1665)
- ps: (New-Object Net.WebClient).DownloadFile('https://slproweb.com/download/Win64OpenSSL-1_0_2p.exe', "$($env:USERPROFILE)\Win64OpenSSL.exe")
- ps: cmd /c start /wait "$($env:USERPROFILE)\Win64OpenSSL.exe" /silent /verysilent /sp- /suppressmsgboxes /DIR=C:\OpenSSL-Win64-v102
- ps: Install-Product node 6
# Install stack
- ps: Start-FileDownload http://www.stackage.org/stack/windows-x86_64 -FileName stack.zip
- 7z x stack.zip stack.exe
# Install rocksdb
- git clone https://github.com/facebook/rocksdb.git --branch v4.13.5
- ps: Start-FileDownload 'https://s3.eu-central-1.amazonaws.com/ci-static/serokell-rocksdb-haskell-325427fc709183c8fdf777ad5ea09f8d92bf8585.zip' -FileName rocksdb.zip
- 7z x rocksdb.zip
# CSL-1509: After moving the 'cardano-sl' project itself into a separate folder ('lib/'), the 'cardano-text.exe' executable fails on AppVeyor CI.
# After some investigation, it was discovered that this was because 'rocksdb.dll' has to be located in this folder as well, or else the test executable doesn't work.
- copy rocksdb.dll node
- copy rocksdb.dll lib
- copy rocksdb.dll wallet
- copy rocksdb.dll wallet-new
# Install liblzma/xz
- ps: Start-FileDownload https://tukaani.org/xz/xz-5.2.3-windows.zip -Filename xz-5.2.3-windows.zip
- 7z -oC:\xz_extracted x xz-5.2.3-windows.zip
test_script:
- cd "%WORK_DIR%"
- stack config --system-ghc set system-ghc --global true
- stack exec -- ghc-pkg recache
- stack --verbosity warn setup --no-reinstall > nul
# Install happy separately: https://github.com/commercialhaskell/stack/issues/3151#issuecomment-310642487. Also install cpphs because it's a build-tool and Stack can't figure out by itself that it should be installed
- scripts\ci\appveyor-retry call stack --verbosity warn install happy cpphs
-j 2
--no-terminal
--local-bin-path %SYSTEMROOT%\system32
--extra-include-dirs="C:\OpenSSL-Win64-v102\include"
--extra-lib-dirs="C:\OpenSSL-Win64-v102"
--extra-include-dirs="C:\xz_extracted\include"
--extra-lib-dirs="C:\xz_extracted\bin_x86-64"
--extra-include-dirs="%WORK_DIR%\rocksdb\include"
--extra-lib-dirs="%WORK_DIR%"
# TODO: CSL-1133. To be reenabled.
# - stack test --coverage
# - stack hpc report cardano-sl cardano-sl-txp cardano-sl-core cardano-sl-db cardano-sl-update cardano-sl-infra cardano-sl-lrc cardano-sl-ssc
# Retry transient failures due to https://github.com/haskell/cabal/issues/4005
# We intentionally don't build auxx here, because this build is for installer.
- scripts\ci\appveyor-retry call stack --dump-logs install cardano-sl cardano-sl-tools cardano-sl-wallet cardano-sl-wallet-new
-j 3
--no-terminal
--local-bin-path %WORK_DIR%
--no-haddock-deps
--flag cardano-sl-core:-asserts
--flag cardano-sl-tools:for-installer
--flag cardano-sl-wallet:for-installer
--extra-include-dirs="C:\OpenSSL-Win64-v102\include"
--extra-lib-dirs="C:\OpenSSL-Win64-v102"
--extra-include-dirs="C:\xz_extracted\include"
--extra-lib-dirs="C:\xz_extracted\bin_x86-64"
--extra-include-dirs="%WORK_DIR%\rocksdb\include"
--extra-lib-dirs="%WORK_DIR%"
# Cardano pieces, modulo the frontend
- mkdir daedalus
# log config is called `log-config-prod.yaml` just in case, it's the old name
- copy log-configs\daedalus.yaml daedalus\log-config-prod.yaml
- copy lib\configuration.yaml daedalus\
- copy lib\*genesis*.json daedalus\
- copy cardano-launcher.exe daedalus\
- copy cardano-node.exe daedalus\
- copy cardano-x509-certificates.exe daedalus\
- cd daedalus
- Echo %APPVEYOR_BUILD_VERSION% > build-id
- Echo %APPVEYOR_REPO_COMMIT% > commit-id
- Echo https://ci.appveyor.com/project/%APPVEYOR_ACCOUNT_NAME%/%APPVEYOR_PROJECT_SLUG%/build/%APPVEYOR_BUILD_VERSION% > ci-url
after_test:
- xcopy /q /s /e /r /k /i /v /h /y "%WORK_DIR%\daedalus" "%APPVEYOR_BUILD_FOLDER%\daedalus"
- cd "%WORK_DIR%/daedalus"
- 7z a "%APPVEYOR_REPO_COMMIT%.zip" *
- appveyor PushArtifact "%APPVEYOR_REPO_COMMIT%.zip"
- cd "%WORK_DIR%" # Get back to where cache-s3.exe is located
- ps: >-
if ( ($env:CACHE_S3_READY -eq $true) -and (-not $env:APPVEYOR_PULL_REQUEST_NUMBER) ) {
if ($env:APPVEYOR_REPO_BRANCH -eq "master" -Or $env:APPVEYOR_REPO_BRANCH -eq "develop" -Or $env:APPVEYOR_REPO_BRANCH -like "release*") {
Write-Host "saving stack"
.\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -c -v info save stack
Write-Host "done stack"
}
Write-Host "saving stack work"
.\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -c -v info save stack work
Write-Host "done stack work"
}
artifacts:
- path: daedalus/
name: CardanoSL
type: zip
deploy:
provider: S3
access_key_id:
secure: IEky6PsMzHaKHNBMxR8tQaQI8X7qWRB9+HuEroTVRBk=
secret_access_key:
secure: cqjzG96hWB1x3JDbVSbF9E+aJ5jKvIGacJRUDWATHaTOYfSt6Rvive/NrF4lKBIm
bucket: appveyor-ci-deploy
region: ap-northeast-1
set_public: true
folder: cardano-sl
artifact: $(APPVEYOR_REPO_COMMIT).zip