@@ -115,3 +115,73 @@ tasks:
115
115
cmds :
116
116
- docker system prune --all --force
117
117
- docker builder prune --all --force
118
+
119
+ create-builder :
120
+ desc : " Create a local docker buildx builder"
121
+ cmds :
122
+ - |
123
+ docker buildx create \
124
+ --name multi-platform \
125
+ --node multi-platform \
126
+ --platform linux/arm64/v8,linux/amd64 \
127
+ --driver=docker-container \
128
+ --use \
129
+ --bootstrap
130
+ status :
131
+ - docker buildx inspect multi-platform > /dev/null 2>&1
132
+
133
+ validate :
134
+ desc : Validate the docker-bake.hcl file
135
+ vars :
136
+ BAKE_OUTPUT :
137
+ sh : docker buildx bake --file docker-bake.hcl --print 2>&1 || true
138
+ VALIDATION_ERROR :
139
+ sh : echo "{{.BAKE_OUTPUT}}" | grep -q "ERROR:" && echo "true" || echo "false"
140
+ preconditions :
141
+ - sh : " test {{.VALIDATION_ERROR}} = false"
142
+ msg : |
143
+ Docker bake file is invalid. Error details:
144
+ {{.BAKE_OUTPUT}}
145
+ cmds :
146
+ - cmd : echo "Docker bake file is valid"
147
+ silent : true
148
+
149
+ buildx :
150
+ desc : " Build using docker buildx bake"
151
+ summary : |
152
+ Build using docker buildx bake with the specified target.
153
+
154
+ AVAILABLE TARGETS
155
+ - build (default): Builds the main image
156
+ - amd64: Builds specifically for AMD64 platform
157
+ - arm64: Builds specifically for ARM64 platform
158
+ - multi-platform: Builds for both AMD64 and ARM64 platforms
159
+
160
+ USAGE
161
+ task docker:buildx
162
+ task docker:buildx -- amd64
163
+ task docker:buildx -- arm64
164
+ task docker:buildx -- multi-platform
165
+ deps :
166
+ - validate
167
+ - create-builder
168
+ cmds :
169
+ - |
170
+ if [ -z "{{.CLI_ARGS}}" ]; then
171
+ TARGET="build"
172
+ else
173
+ case "{{.CLI_ARGS}}" in
174
+ build|amd64|arm64|multi-platform)
175
+ TARGET="{{.CLI_ARGS}}"
176
+ ;;
177
+ *)
178
+ echo "Error: Invalid target '{{.CLI_ARGS}}'"
179
+ echo "Valid targets are: build, amd64, arm64, multi-platform"
180
+ exit 1
181
+ ;;
182
+ esac
183
+ fi
184
+
185
+ docker buildx bake \
186
+ --file docker-bake.hcl \
187
+ $TARGET
0 commit comments