You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: add Azure DevOps parity, tests, and docs for platformTag/mergeTag
- Mirror platformTag/mergeTag logic in azdo-task (task.json inputs,
runMain/runPost in main.ts, createManifest wrapper in docker.ts)
- Add unit tests for createManifest in common/__tests__/docker.test.ts
- Update docs/github-action.md and docs/azure-devops-task.md input tables
- Add native multi-platform builds section to docs/multi-platform-builds.md
with examples for both GitHub Actions and Azure DevOps Pipelines
Copy file name to clipboardExpand all lines: azdo-task/DevcontainersCi/task.json
+12Lines changed: 12 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -128,6 +128,18 @@
128
128
"type": "multiLine",
129
129
"label": "Specify the image to cache the built image to",
130
130
"required": false
131
+
},
132
+
{
133
+
"name": "platformTag",
134
+
"type": "string",
135
+
"label": "Tag suffix for this platform build (e.g., 'linux-amd64'). Used in matrix builds to push per-platform images that are later merged.",
136
+
"required": false
137
+
},
138
+
{
139
+
"name": "mergeTag",
140
+
"type": "string",
141
+
"label": "Comma-separated list of platform tags to merge into a multi-arch manifest (e.g., 'linux-amd64,linux-arm64'). Used in the merge job after matrix builds complete.",
Copy file name to clipboardExpand all lines: docs/azure-devops-task.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -84,6 +84,8 @@ In the example above, the devcontainer-build-run will perform the following step
84
84
| noCache | false | Builds the image with `--no-cache` (takes precedence over `cacheFrom`) |
85
85
| cacheTo | false | Specify the image to cache the built image to |
86
86
| platform | false | Platforms for which the image should be built. If omitted, defaults to the platform of the GitHub Actions Runner. Multiple platforms should be comma separated. |
87
+
| platformTag | false | Tag suffix for this platform build (e.g., `linux-amd64`). Used in matrix builds to push per-platform images that are later merged into a multi-arch manifest. |
88
+
| mergeTag | false | Comma-separated list of platform tags to merge into a multi-arch manifest (e.g., `linux-amd64,linux-arm64`). Used in the merge job after matrix builds complete. |
Copy file name to clipboardExpand all lines: docs/github-action.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -143,6 +143,8 @@ The [`devcontainers/ci` action](https://github.com/marketplace/actions/devcontai
143
143
| noCache | false | Builds the image with `--no-cache` (takes precedence over `cacheFrom`) |
144
144
| cacheTo | false | Specify the image to cache the built image to |
145
145
| platform | false | Platforms for which the image should be built. If omitted, defaults to the platform of the GitHub Actions Runner. Multiple platforms should be comma separated. |
146
+
| platformTag | false | Tag suffix for this platform build (e.g., `linux-amd64`). Used in matrix builds to push per-platform images that are later merged into a multi-arch manifest. |
147
+
| mergeTag | false | Comma-separated list of platform tags to merge into a multi-arch manifest (e.g., `linux-amd64,linux-arm64`). Used in the merge job after matrix builds complete. |
Copy file name to clipboardExpand all lines: docs/multi-platform-builds.md
+98Lines changed: 98 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -72,3 +72,101 @@ jobs:
72
72
imageName: UserNameHere/ImageNameHere
73
73
platform: linux/amd64,linux/arm64
74
74
```
75
+
76
+
## Native Multi-Platform Builds (Matrix Strategy)
77
+
78
+
Instead of using QEMU emulation on a single runner, you can use native runners in a matrix strategy. Each runner builds for its own architecture and pushes a platform-specific image. A final job then merges the per-platform images into a single multi-arch manifest.
79
+
80
+
### Benefits
81
+
82
+
-**Faster builds** -- no emulation overhead since each runner compiles natively.
0 commit comments