You can append nodes to the builder that is going to be created with the
append
input in the form of a YAML string document to remove limitations
intrinsically linked to GitHub Actions (only string format is handled in the
input fields). Following fields are supported:
name
: name of the node. If empty, it is the name of the builder it belongs to, with an index number suffix.endpoint
: Docker context or endpoint of the node to add to the builderdriver-opts
: List of additional driver-specific optionsbuildkitd-flags
: Flags for buildkitd daemonplatforms
: Fixed platforms for the node. If not empty, values take priority over the detected ones.
name: ci
on:
push:
jobs:
buildx:
runs-on: ubuntu-latest
steps:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
append: |
- endpoint: ssh://me@graviton2
platforms: linux/arm64
- endpoint: ssh://foo@linuxone
driver-opts:
- image=moby/buildkit:master
In this example, a docker-container
builder will be created on the GitHub
Runner with a local node and two remote nodes.
To set up the SSH authentication for the remote nodes, you can use the following workflow:
name: ci
on:
push:
jobs:
buildx:
runs-on: ubuntu-latest
steps:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
append: |
- endpoint: ssh://me@graviton2
platforms: linux/arm64
- endpoint: ssh://foo@linuxone
platforms: linux/s390x
env:
BUILDER_NODE_1_AUTH_SSH_PPK: ${{ secrets.GRAVITON2_SSH_PPK }}
BUILDER_NODE_2_AUTH_SSH_PPK: ${{ secrets.LINUXONE_SSH_PPK }}
Here is another example using only remote nodes with the remote
driver:
name: ci
on:
push:
jobs:
buildx:
runs-on: ubuntu-latest
steps:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
driver: remote
endpoint: tcp://oneprovider:1234
append: |
- endpoint: tcp://graviton2:1234
platforms: linux/arm64
- endpoint: tcp://linuxone:1234
platforms: linux/s390x
env:
BUILDER_NODE_0_AUTH_TLS_CACERT: ${{ secrets.ONEPROVIDER_CA }}
BUILDER_NODE_0_AUTH_TLS_CERT: ${{ secrets.ONEPROVIDER_CERT }}
BUILDER_NODE_0_AUTH_TLS_KEY: ${{ secrets.ONEPROVIDER_KEY }}
BUILDER_NODE_1_AUTH_TLS_CACERT: ${{ secrets.GRAVITON2_CA }}
BUILDER_NODE_1_AUTH_TLS_CERT: ${{ secrets.GRAVITON2_CERT }}
BUILDER_NODE_1_AUTH_TLS_KEY: ${{ secrets.GRAVITON2_KEY }}
BUILDER_NODE_2_AUTH_TLS_CACERT: ${{ secrets.LINUXONE_CA }}
BUILDER_NODE_2_AUTH_TLS_CERT: ${{ secrets.LINUXONE_CERT }}
BUILDER_NODE_2_AUTH_TLS_KEY: ${{ secrets.LINUXONE_KEY }}