diff --git a/.github/workflows/dockerd.yml b/.github/workflows/dockerd.yml new file mode 100644 index 0000000000000..8142bbad78bc9 --- /dev/null +++ b/.github/workflows/dockerd.yml @@ -0,0 +1,170 @@ +name: dockerd + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + workflow_dispatch: + push: + branches: + - 'master' + - 'v[0-9]+.[0-9]+' + tags: + - 'v*' + pull_request: + paths-ignore: + - 'README.md' + - 'docs/**' + - 'frontend/dockerfile/docs/**' + +env: + GO_VERSION: "1.23.2" + GOTESTLIST_VERSION: v0.3.1 + TESTSTAT_VERSION: v0.1.25 + WINDOWS_BASE_IMAGE: mcr.microsoft.com/windows/servercore + WINDOWS_BASE_TAG_2019: ltsc2019 + WINDOWS_BASE_TAG_2022: ltsc2022 + TEST_IMAGE_NAME: moby:test + TEST_CTN_NAME: moby + DOCKER_BUILDKIT: 0 + ITG_CLI_MATRIX_SIZE: 6 +# SETUP_BUILDX_VERSION: "latest" +# SETUP_BUILDKIT_IMAGE: "moby/buildkit:latest" +# SCOUT_VERSION: "1.13.0" +# IMAGE_NAME: "moby/buildkit" +# PLATFORMS: "linux/amd64,linux/arm/v7,linux/arm64,linux/s390x,linux/ppc64le,linux/riscv64" +# DESTDIR: "./bin" + +jobs: + test-prepare: + uses: ./.github/workflows/.test-prepare.yml + + prepare: + runs-on: ubuntu-24.04 + needs: + - test-prepare + outputs: + tag: ${{ steps.prep.outputs.tag }} + push: ${{ steps.prep.outputs.push }} + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Prepare + id: prep + run: | + TAG=pr + PUSH=false + if [ "${{ github.event_name }}" = "schedule" ]; then + TAG=nightly + PUSH=push + elif [[ $GITHUB_REF == refs/tags/v* ]]; then + TAG=${GITHUB_REF#refs/tags/} + PUSH=push + elif [[ $GITHUB_REF == refs/heads/* ]]; then + TAG=$(echo ${GITHUB_REF#refs/heads/} | sed -r 's#/+#-#g') + if [ $GITHUB_REF = "refs/heads/${{ github.event.repository.default_branch }}" ]; then + PUSH=push + fi + fi + if [ "$GITHUB_REPOSITORY" != "moby/buildkit" ]; then + PUSH=false + fi + echo "tag=${TAG}" >>${GITHUB_OUTPUT} + echo "push=${PUSH}" >>${GITHUB_OUTPUT} + + build: + needs: + - prepare + runs-on: windows-2022 + env: + GOPATH: ${{ github.workspace }}\go + GOBIN: ${{ github.workspace }}\go\bin + BIN_OUT: ${{ github.workspace }}\out + defaults: + run: + working-directory: ${{ env.GOPATH }}/src/github.com/docker/docker + + steps: + - + name: Checkout + uses: actions/checkout@v4 + with: + path: ${{ env.GOPATH }}/src/github.com/docker/docker + - + name: Env + run: | + Get-ChildItem Env: | Out-String + - + name: Init + run: | + New-Item -ItemType "directory" -Path "${{ github.workspace }}\go-build" + New-Item -ItemType "directory" -Path "${{ github.workspace }}\go\pkg\mod" + If ("${{ inputs.os }}" -eq "windows-2019") { + echo "WINDOWS_BASE_IMAGE_TAG=${{ env.WINDOWS_BASE_TAG_2019 }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append + } ElseIf ("${{ inputs.os }}" -eq "windows-2022") { + echo "WINDOWS_BASE_IMAGE_TAG=${{ env.WINDOWS_BASE_TAG_2022 }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf-8 -Append + } + - + name: Docker info + run: | + docker info + - + name: Build base image + run: | + & docker build ` + --build-arg WINDOWS_BASE_IMAGE ` + --build-arg WINDOWS_BASE_IMAGE_TAG ` + --build-arg GO_VERSION ` + -t ${{ env.TEST_IMAGE_NAME }} ` + -f Dockerfile.windows . + - + name: Build binaries + run: | + & docker run --name ${{ env.TEST_CTN_NAME }} -e "DOCKER_GITCOMMIT=${{ github.sha }}" ` + -v "${{ github.workspace }}\go-build:C:\Users\ContainerAdministrator\AppData\Local\go-build" ` + -v "${{ github.workspace }}\go\pkg\mod:C:\gopath\pkg\mod" ` + ${{ env.TEST_IMAGE_NAME }} hack\make.ps1 -Daemon -Client + - + name: Copy artifacts + run: | + New-Item -ItemType "directory" -Path "${{ env.BIN_OUT }}" + docker cp "${{ env.TEST_CTN_NAME }}`:c`:\gopath\src\github.com\docker\docker\bundles\docker.exe" ${{ env.BIN_OUT }}\ + docker cp "${{ env.TEST_CTN_NAME }}`:c`:\gopath\src\github.com\docker\docker\bundles\dockerd.exe" ${{ env.BIN_OUT }}\ + - + name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: build-${{ inputs.storage }}-${{ inputs.os }} + path: ${{ env.BIN_OUT }}/* + if-no-files-found: error + retention-days: 2 + + release: + runs-on: ubuntu-24.04 + needs: + - prepare + - build + steps: + - + name: Download artifacts + uses: actions/download-artifact@v4 + with: + path: ${{ env.BIN_OUT }} + merge-multiple: true + - + name: List artifacts + run: | + tree -nh ${{ env.BIN_OUT }} + - + name: GitHub Release + if: startsWith(github.ref, 'refs/tags/v') + uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + draft: true + files: ${{ env.BIN_OUT }}/* + name: ${{ needs.prepare.outputs.tag }}