forked from ravendb/ravendb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.ps1
executable file
·110 lines (85 loc) · 3.26 KB
/
build.ps1
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
$ErrorActionPreference = "Stop"
$DEV_BUILD_NUMBER = 40
. '.\scripts\checkLastExitCode.ps1'
. '.\scripts\checkPrerequisites.ps1'
. '.\scripts\restore.ps1'
. '.\scripts\clean.ps1'
. '.\scripts\package.ps1'
. '.\scripts\buildProjects.ps1'
. '.\scripts\getScriptDirectory.ps1'
. '.\scripts\copyDocs.ps1'
. '.\scripts\env.ps1'
. '.\scripts\updateSourceWithBuildInfo.ps1'
. '.\scripts\nuget.ps1'
. '.\scripts\dotnetForRpi.ps1'
CheckPrerequisites
$buildNumber = GetBuildNumber
$buildType = GetBuildType
# TODO @gregolsky create a function for this - stable does not have label
$versionSuffix = "$buildType-$buildNumber"
$version = "4.0.0-$versionSuffix"
$PROJECT_DIR = Get-ScriptDirectory
$RELEASE_DIR = [io.path]::combine($PROJECT_DIR, "artifacts")
$OUT_DIR = [io.path]::combine($PROJECT_DIR, "artifacts")
$CLIENT_SRC_DIR = [io.path]::combine($PROJECT_DIR, "src", "Raven.Client")
$CLIENT_OUT_DIR = [io.path]::combine($PROJECT_DIR, "src", "Raven.Client", "bin", "Release")
$NEW_CLIENT_SRC_DIR = [io.path]::combine($PROJECT_DIR, "src", "Raven.NewClient")
$NEW_CLIENT_OUT_DIR = [io.path]::combine($PROJECT_DIR, "src", "Raven.NewClient", "bin", "Release")
$SERVER_SRC_DIR = [io.path]::combine($PROJECT_DIR, "src", "Raven.Server")
$SPARROW_SRC_DIR = [io.path]::combine($PROJECT_DIR, "src", "Sparrow")
$SPARROW_OUT_DIR = [io.path]::combine($PROJECT_DIR, "src", "Sparrow", "bin", "Release")
$TYPINGS_GENERATOR_SRC_DIR = [io.path]::combine($PROJECT_DIR, "tools", "TypingsGenerator")
$STUDIO_SRC_DIR = [io.path]::combine($PROJECT_DIR, "src", "Raven.Studio")
$STUDIO_OUT_DIR = [io.path]::combine($PROJECT_DIR, "src", "Raven.Studio", "build")
$SPECS = @(
@{
"Name" = "windows-x64";
"Runtime" = "win10-x64";
"PkgType" = "zip";
"IsUnix" = $False;
},
@{
"Name" = "ubuntu.14.04-x64";
"Runtime" = "ubuntu.14.04-x64";
"PkgType" = "tar.bz2";
"IsUnix" = $True;
},
@{
"Name" = "ubuntu.16.04-x64";
"Runtime" = "ubuntu.16.04-x64";
"PkgType" = "tar.bz2";
"IsUnix" = $True;
},
@{
"Name" = "raspberry-pi";
"Runtime" = "ubuntu.16.04-x64";
"PkgType" = "tar";
"IsUnix" = $True;
}
);
SetVersionEnvironmentVariableInTeamCity $version
CleanBuildDirectories $RELEASE_DIR
DownloadDependencies
UpdateSourceWithBuildInfo $PROJECT_DIR $buildNumber $version
BuildSparrow $SPARROW_SRC_DIR
BuildClient $CLIENT_SRC_DIR $CLIENT_OUT_DIR $spec.Name
BuildNewClient $NEW_CLIENT_SRC_DIR $NEW_CLIENT_OUT_DIR $spec.Name
CreateNugetPackage $NEW_CLIENT_SRC_DIR $RELEASE_DIR $versionSuffix
CreateNugetPackage $CLIENT_SRC_DIR $RELEASE_DIR $versionSuffix
BuildTypingsGenerator $TYPINGS_GENERATOR_SRC_DIR
BuildStudio $STUDIO_SRC_DIR $PROJECT_DIR $version
Foreach ($spec in $SPECS) {
$runtime = $spec.Runtime
$specOutDir = [io.path]::combine($OUT_DIR, $spec.Name)
BuildServer $SERVER_SRC_DIR $specOutDir $runtime $spec.Name
$specOutDirs = @{
"Main" = $specOutDir;
"Client" = $CLIENT_OUT_DIR;
"NewClient" = $NEW_CLIENT_OUT_DIR;
"Server" = $([io.path]::combine($specOutDir, "Server"));
"Studio" = $STUDIO_OUT_DIR;
"Sparrow" = $SPARROW_OUT_DIR;
}
CreateRavenPackage $PROJECT_DIR $RELEASE_DIR $specOutDirs $spec $version
}
write-host "Done creating packages."