forked from avivasolutionsnl/sitecore-docker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBuild.Base.cs
86 lines (76 loc) · 2.66 KB
/
Build.Base.cs
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
using System;
using System.Linq;
using Nuke.Common;
using Nuke.Common.ProjectModel;
using static Nuke.Common.EnvironmentInfo;
using static Nuke.Common.IO.FileSystemTasks;
using static Nuke.Common.IO.PathConstruction;
using static Nuke.Docker.DockerTasks;
using Nuke.Docker;
using Nuke.Common.Tooling;
partial class Build : NukeBuild
{
[Parameter("Docker image sitecore version")]
public readonly string BaseSitecoreVersion = "1.0.0";
// Docker image naming
[Parameter("Docker image prefix for Sitecore base")]
readonly string BaseImagePrefix = "sitecore-base-";
private string BaseFullImageName(string name) => string.IsNullOrEmpty(BuildVersion) ?
$"{RepoImagePrefix}/{BaseImageName(name)}" :
$"{RepoImagePrefix}/{BaseImageName(name)}-{BuildVersion}";
private string BaseImageName(string name) => $"{BaseImagePrefix}{name}:{BaseSitecoreVersion}";
Target BaseOpenJdk => _ => _
.Executes(() =>
{
DockerBuild(x => x
.SetPath(".")
.SetFile("base/openjdk/Dockerfile")
.SetIsolation("process")
.SetTag(BaseImageName("openjdk"))
);
});
Target BaseSitecore => _ => _
.Executes(() =>
{
DockerBuild(x => x
.SetPath(".")
.SetFile("base/sitecore/Dockerfile")
.SetIsolation("process")
.SetTag(BaseImageName("sitecore"))
);
});
Target BaseSolrBuilder => _ => _
.DependsOn(BaseSitecore)
.Executes(() =>
{
var baseImage = BaseImageName("sitecore");
DockerBuild(x => x
.SetPath(".")
.SetFile("base/solr-builder/Dockerfile")
.SetIsolation("process")
.SetTag(BaseImageName("solr-builder"))
.SetBuildArg(new string[] {
$"BASE_IMAGE={baseImage}"
})
);
});
Target Base => _ => _
.DependsOn(BaseOpenJdk, BaseSitecore);
Target PushBase => _ => _
.Requires(() => !string.IsNullOrEmpty(RepoImagePrefix))
.OnlyWhenDynamic(() => HasGitTag() || ForcePush)
.Executes(() => {
PushBaseImage("openjdk");
PushBaseImage("sitecore");
PushBaseImage("solr-builder");
});
private void PushBaseImage(string name)
{
var source = BaseImageName(name);
var target = BaseFullImageName(name);
DockerTasks.DockerImageTag(x => x
.SetSourceImage(source)
.SetTargetImage(target));
DockerTasks.DockerImagePush(x => x.SetName(target));
}
}