forked from nats-io/nack
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-bake.hcl
131 lines (112 loc) · 2.49 KB
/
docker-bake.hcl
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
###################
### Variables
###################
variable REGISTRY {
default = ""
}
# Comma delimited list of tags
variable TAGS {
default = "latest"
}
variable CI {
default = false
}
variable image_base {
default = "docker-image://alpine:3.17.3"
}
variable image_goreleaser {
default = "docker-image://goreleaser/goreleaser:v1.14.1"
}
###################
### Functions
###################
function "get_tags" {
params = [image]
result = [for tag in split(",", TAGS) : join("/", compact([REGISTRY, "${image}:${tag}"]))]
}
function "get_platforms_multiarch" {
params = []
result = CI ? ["linux/amd64", "linux/arm/v6", "linux/arm/v7", "linux/arm64"] : []
}
function "get_output" {
params = []
result = CI ? ["type=registry"] : ["type=docker"]
}
###################
### Groups
###################
group "default" {
targets = [
"jetstream-controller",
"nats-boot-config",
"nats-server-config-reloader"
]
}
###################
### Targets
###################
target "goreleaser" {
contexts = {
goreleaser = image_goreleaser
src = "."
}
args = {
CI = CI
GITHUB_TOKEN = ""
}
dockerfile = "cicd/Dockerfile_goreleaser"
}
target "jetstream-controller" {
contexts = {
base = image_base
build = "target:goreleaser"
assets = "cicd/assets"
}
args = {
GO_APP = "jetstream-controller"
}
dockerfile = "cicd/Dockerfile"
platforms = get_platforms_multiarch()
tags = get_tags("jetstream-controller")
output = get_output()
}
target "nats-boot-config-base" {
contexts = {
base = image_base
build = "target:goreleaser"
assets = "cicd/assets"
}
args = {
GO_APP = "nats-boot-config"
}
dockerfile = "cicd/Dockerfile"
platforms = get_platforms_multiarch()
}
target "nats-boot-config" {
inherits = ["nats-boot-config-base"]
contexts = {
base = "target:nats-boot-config-base"
}
dockerfile-inline = <<EOT
ARG GO_APP
FROM base
RUN ln -s /usr/local/bin/$GO_APP /usr/local/bin/nats-pod-bootconfig
EOT
platforms = get_platforms_multiarch()
tags = get_tags("nats-boot-config")
output = get_output()
}
target "nats-server-config-reloader" {
contexts = {
base = image_base
build = "target:goreleaser"
assets = "cicd/assets"
}
args = {
GO_APP = "nats-server-config-reloader"
}
dockerfile = "cicd/Dockerfile"
platforms = get_platforms_multiarch()
tags = get_tags("nats-server-config-reloader")
output = get_output()
}