Files
buildkit/.github/workflows/buildx-image.yml
2026-08-06 11:24:10 +02:00

101 lines
3.3 KiB
YAML

# source latest
# result moby/buildkit:latest > moby/buildkit:buildx-stable-1
# moby/buildkit:rootless > moby/buildkit:buildx-stable-1-rootless
# moby/buildkit:ubuntu-latest > moby/buildkit:buildx-stable-1-gpu
#
# source v0.8.1
# result moby/buildkit:v0.8.1 > moby/buildkit:buildx-stable-1
# moby/buildkit:v0.8.1-rootless > moby/buildkit:buildx-stable-1-rootless
# moby/buildkit:v0.8.1-ubuntu > moby/buildkit:buildx-stable-1-gpu
name: buildx-image
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
on:
workflow_dispatch:
inputs:
source-tag:
description: 'BuildKit source Docker tag'
required: true
default: 'latest'
type: string
dry-run:
description: 'Dry run'
required: false
default: true
type: boolean
env:
SETUP_BUILDX_VERSION: "edge"
REPO_SLUG_TARGET: "moby/buildkit"
jobs:
create:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
tag:
- 'buildx-stable-1'
flavor:
- ''
- 'rootless'
- 'ubuntu'
steps:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0
with:
version: ${{ env.SETUP_BUILDX_VERSION }}
buildkitd-flags: --debug
-
name: Login to DockerHub
if: ${{ !inputs['dry-run'] }}
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
env:
DOCKERHUB_OIDC_CONNECTIONID: ${{ vars.BUILDKIT_OIDC_CONNECTIONID }}
with:
username: moby
-
name: Create
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
env:
INPUT_SOURCE-TAG: ${{ inputs.source-tag }}
INPUT_DRY-RUN: ${{ inputs.dry-run }}
INPUT_DEST-TAG: ${{ matrix.tag }}
INPUT_FLAVOR: ${{ matrix.flavor }}
with:
script: |
const inpSourceTag = core.getInput('source-tag');
const inpDryRun = core.getBooleanInput('dry-run');
const inpDestTag = core.getInput('dest-tag');
const inpFlavor = core.getInput('flavor');
const createArgs = ['buildx', 'imagetools', 'create'];
if (inpDryRun) {
createArgs.push('--dry-run');
}
let sourceTag = inpSourceTag;
let destTag = inpDestTag;
if (inpFlavor !== '') {
if (inpFlavor === 'ubuntu') {
sourceTag = `${inpSourceTag}-${inpFlavor}`;
destTag = `${inpDestTag}-gpu`;
} else {
sourceTag = inpSourceTag === 'latest' ? inpFlavor : `${inpSourceTag}-${inpFlavor}`;
destTag = `${inpDestTag}-${inpFlavor}`;
}
}
createArgs.push('--tag', `moby/buildkit:${destTag}`, `moby/buildkit:${sourceTag}`);
await exec.getExecOutput('docker', createArgs, {
ignoreReturnCode: true
}).then(res => {
if (res.stderr.length > 0 && res.exitCode != 0) {
throw new Error(res.stderr);
}
});