From c6e2cb2b17ee89f9871a57834969d7e413fcf40b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Gronowski?= Date: Tue, 21 Apr 2026 16:09:14 +0200 Subject: [PATCH 1/2] gha: Add unified build-docker workflow for engine and cli MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a single workflow_dispatch workflow that builds both docker-engine and docker-cli in parallel. It accepts separate git refs for engine and cli, plus a shared version string. The Engine and CLI versioning is currently coupled, so simplify the release workflow and allow to move from the old packaging: https://github.com/docker/docker-ce-packaging Signed-off-by: Paweł Gronowski --- .github/workflows/build-docker.yml | 47 ++++++++++++++ .github/workflows/release-docker.yml | 93 ++++++++++++++++++++++++++++ 2 files changed, 140 insertions(+) create mode 100644 .github/workflows/build-docker.yml create mode 100644 .github/workflows/release-docker.yml diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml new file mode 100644 index 00000000..9e18ab3c --- /dev/null +++ b/.github/workflows/build-docker.yml @@ -0,0 +1,47 @@ +name: build-docker + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + push: + branches: + - 'main' + - 'docker/[0-9]+.[0-9]+' + paths: + - '.github/workflows/.build.yml' + - '.github/workflows/build-docker.yml' + - 'hack/scripts/**' + - 'pkg/docker-engine/**' + - 'pkg/docker-cli/**' + - 'docker-bake.hcl' + pull_request: + branches: + - 'main' + - 'docker/[0-9]+.[0-9]+' + paths: + - '.github/workflows/.build.yml' + - '.github/workflows/build-docker.yml' + - 'hack/scripts/**' + - 'pkg/docker-engine/**' + - 'pkg/docker-cli/**' + - 'docker-bake.hcl' + +jobs: + engine: + uses: ./.github/workflows/.build.yml + permissions: + contents: read + with: + name: docker-engine + + cli: + uses: ./.github/workflows/.build.yml + permissions: + contents: read + with: + name: docker-cli diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml new file mode 100644 index 00000000..81caa02e --- /dev/null +++ b/.github/workflows/release-docker.yml @@ -0,0 +1,93 @@ +name: release-docker + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + workflow_dispatch: + inputs: + engine-ref: + description: 'Git ref for docker-engine (e.g. v28.1.0, master, a commit SHA)' + required: true + type: string + cli-ref: + description: 'Git ref for docker-cli (e.g. v28.1.0, master, a commit SHA)' + required: true + type: string + version: + description: 'Docker version (used for both engine and cli, e.g. 28.1.0)' + required: true + type: string + release: + description: '(optional) Release type to create in https://github.com/docker/packaging/releases' + required: false + default: 'release' + type: choice + options: + - pushonly + - draft + - prerelease + - release + distros: + description: '(optional, empty = all supported) Distros to build (comma-separated, e.g. "debian12,ubuntu2204")' + required: false + type: string + default: '' + revision: + description: | + Revision of the package to build. Only in case we ever would have to re-build an already published release with a packaging-only change. + Default for a tagged/upstream release is 1. + required: false + type: string + default: '' + engine-repo: + description: '(optional) Override default engine repo (if want to build from a different Github repo/fork)' + required: false + type: string + cli-repo: + description: '(optional) Override default cli repo (if want to build from a different Github repo/fork)' + required: false + type: string + +jobs: + engine: + uses: ./.github/workflows/.build.yml + permissions: + contents: write # needed to create release and upload artifacts + with: + name: docker-engine + release: ${{ inputs.release }} + distros: ${{ inputs.distros }} + envs: | + PKG_REPO=${{ inputs.engine-repo }} + PKG_REF=${{ inputs.engine-ref }} + PKG_DEB_REVISION=${{ inputs.revision }} + PKG_RPM_RELEASE=${{ inputs.revision }} + secrets: + rh_user: ${{ secrets.RH_USER }} + rh_pass: ${{ secrets.RH_PASS }} + dockerpublicbot_username: ${{ secrets.DOCKERPUBLICBOT_USERNAME }} + dockerpublicbot_write_pat: ${{ secrets.DOCKERPUBLICBOT_WRITE_PAT }} + + cli: + uses: ./.github/workflows/.build.yml + permissions: + contents: write # needed to create release and upload artifacts + with: + name: docker-cli + release: ${{ inputs.release }} + distros: ${{ inputs.distros }} + envs: | + PKG_REPO=${{ inputs.cli-repo }} + PKG_REF=${{ inputs.cli-ref }} + PKG_DEB_REVISION=${{ inputs.revision }} + PKG_RPM_RELEASE=${{ inputs.revision }} + secrets: + rh_user: ${{ secrets.RH_USER }} + rh_pass: ${{ secrets.RH_PASS }} + dockerpublicbot_username: ${{ secrets.DOCKERPUBLICBOT_USERNAME }} + dockerpublicbot_write_pat: ${{ secrets.DOCKERPUBLICBOT_WRITE_PAT }} From 67a8e274d4b727510fbc333672e201026d6da2d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Gronowski?= Date: Tue, 21 Apr 2026 16:09:02 +0200 Subject: [PATCH 2/2] gha: Remove individual engine and cli build/release workflows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These are superseded by the unified build-docker.yml and release-docker.yml which build both packages in parallel. Signed-off-by: Paweł Gronowski --- .github/workflows/build-docker-cli.yml | 38 ------------- .github/workflows/build-docker-engine.yml | 38 ------------- .github/workflows/release-docker-cli.yml | 62 --------------------- .github/workflows/release-docker-engine.yml | 62 --------------------- 4 files changed, 200 deletions(-) delete mode 100644 .github/workflows/build-docker-cli.yml delete mode 100644 .github/workflows/build-docker-engine.yml delete mode 100644 .github/workflows/release-docker-cli.yml delete mode 100644 .github/workflows/release-docker-engine.yml diff --git a/.github/workflows/build-docker-cli.yml b/.github/workflows/build-docker-cli.yml deleted file mode 100644 index 332f883f..00000000 --- a/.github/workflows/build-docker-cli.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: build-docker-cli - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -on: - push: - branches: - - 'main' - - 'docker/[0-9]+.[0-9]+' - paths: - - '.github/workflows/.build.yml' - - '.github/workflows/build-docker-cli.yml' - - 'hack/scripts/**' - - 'pkg/docker-cli/**' - - 'docker-bake.hcl' - pull_request: - branches: - - 'main' - - 'docker/[0-9]+.[0-9]+' - paths: - - '.github/workflows/.build.yml' - - '.github/workflows/build-docker-cli.yml' - - 'hack/scripts/**' - - 'pkg/docker-cli/**' - - 'docker-bake.hcl' - -jobs: - run: - uses: ./.github/workflows/.build.yml - permissions: - contents: read - with: - name: docker-cli diff --git a/.github/workflows/build-docker-engine.yml b/.github/workflows/build-docker-engine.yml deleted file mode 100644 index 2e9a6588..00000000 --- a/.github/workflows/build-docker-engine.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: build-docker-engine - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -on: - push: - branches: - - 'main' - - 'docker/[0-9]+.[0-9]+' - paths: - - '.github/workflows/.build.yml' - - '.github/workflows/build-docker-engine.yml' - - 'hack/scripts/**' - - 'pkg/docker-engine/**' - - 'docker-bake.hcl' - pull_request: - branches: - - 'main' - - 'docker/[0-9]+.[0-9]+' - paths: - - '.github/workflows/.build.yml' - - '.github/workflows/build-docker-engine.yml' - - 'hack/scripts/**' - - 'pkg/docker-engine/**' - - 'docker-bake.hcl' - -jobs: - run: - uses: ./.github/workflows/.build.yml - permissions: - contents: read - with: - name: docker-engine diff --git a/.github/workflows/release-docker-cli.yml b/.github/workflows/release-docker-cli.yml deleted file mode 100644 index b2506a01..00000000 --- a/.github/workflows/release-docker-cli.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: release-docker-cli - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -on: - workflow_dispatch: - inputs: - ref: - description: 'Tag/ref to build (e.g. v23.0.0)' - required: true - type: string - release: - description: '(optional) Release type to create in https://github.com/docker/packaging/releases' - required: false - default: 'release' - type: choice - options: - - pushonly - - draft - - prerelease - - release - distros: - description: '(optional, empty = all supported) Distros to build (comma-separated, e.g. "debian12,ubuntu2204")' - required: false - type: string - default: '' - revision: - description: | - Revision of the package to build. Only in case we ever would have to re-build an already published release with a packaging-only change. - Default for a tagged/upstream release is 1. - required: false - type: string - default: '' - repo: - description: '(optional) Override default repo (if want to build from a different Github repo/fork)' - required: false - type: string - -jobs: - release: - uses: ./.github/workflows/.build.yml - permissions: - contents: write # needed to create release and upload artifacts - with: - name: docker-cli - release: ${{ inputs.release }} - distros: ${{ inputs.distros }} - envs: | - PKG_REPO=${{ inputs.repo }} - PKG_REF=${{ inputs.ref }} - PKG_DEB_REVISION=${{ inputs.revision }} - PKG_RPM_RELEASE=${{ inputs.revision }} - secrets: - rh_user: ${{ secrets.RH_USER }} - rh_pass: ${{ secrets.RH_PASS }} - dockerpublicbot_username: ${{ secrets.DOCKERPUBLICBOT_USERNAME }} - dockerpublicbot_write_pat: ${{ secrets.DOCKERPUBLICBOT_WRITE_PAT }} diff --git a/.github/workflows/release-docker-engine.yml b/.github/workflows/release-docker-engine.yml deleted file mode 100644 index 0ca1b5f4..00000000 --- a/.github/workflows/release-docker-engine.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: release-docker-engine - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -on: - workflow_dispatch: - inputs: - ref: - description: 'Tag/ref to build (e.g. v23.0.0)' - required: true - type: string - release: - description: '(optional) Release type to create in https://github.com/docker/packaging/releases' - required: false - default: 'release' - type: choice - options: - - pushonly - - draft - - prerelease - - release - distros: - description: '(optional, empty = all supported) Distros to build (comma-separated, e.g. "debian12,ubuntu2204")' - required: false - type: string - default: '' - revision: - description: | - Revision of the package to build. Only in case we ever would have to re-build an already published release with a packaging-only change. - Default for a tagged/upstream release is 1. - required: false - type: string - default: '' - repo: - description: '(optional) Override default repo (if want to build from a different Github repo/fork)' - required: false - type: string - -jobs: - release: - uses: ./.github/workflows/.build.yml - permissions: - contents: write # needed to create release and upload artifacts - with: - name: docker-engine - release: ${{ inputs.release }} - distros: ${{ inputs.distros }} - envs: | - PKG_REPO=${{ inputs.repo }} - PKG_REF=${{ inputs.ref }} - PKG_DEB_REVISION=${{ inputs.revision }} - PKG_RPM_RELEASE=${{ inputs.revision }} - secrets: - rh_user: ${{ secrets.RH_USER }} - rh_pass: ${{ secrets.RH_PASS }} - dockerpublicbot_username: ${{ secrets.DOCKERPUBLICBOT_USERNAME }} - dockerpublicbot_write_pat: ${{ secrets.DOCKERPUBLICBOT_WRITE_PAT }}