github.1git.de/docker/cli@v26.1.3+incompatible/.github/workflows/build.yml (about)

     1  name: build
     2  
     3  concurrency:
     4    group: ${{ github.workflow }}-${{ github.ref }}
     5    cancel-in-progress: true
     6  
     7  env:
     8    VERSION: ${{ github.ref }}
     9  
    10  on:
    11    workflow_dispatch:
    12    push:
    13      branches:
    14        - 'master'
    15        - '[0-9]+.[0-9]+'
    16      tags:
    17        - 'v*'
    18    pull_request:
    19  
    20  jobs:
    21    prepare:
    22      runs-on: ubuntu-22.04
    23      outputs:
    24        matrix: ${{ steps.platforms.outputs.matrix }}
    25      steps:
    26        -
    27          name: Checkout
    28          uses: actions/checkout@v4
    29        -
    30          name: Create matrix
    31          id: platforms
    32          run: |
    33            echo "matrix=$(docker buildx bake cross --print | jq -cr '.target."cross".platforms')" >>${GITHUB_OUTPUT}
    34        -
    35          name: Show matrix
    36          run: |
    37            echo ${{ steps.platforms.outputs.matrix }}
    38  
    39    build:
    40      runs-on: ubuntu-22.04
    41      needs:
    42        - prepare
    43      strategy:
    44        fail-fast: false
    45        matrix:
    46          target:
    47            - binary
    48            - dynbinary
    49          platform: ${{ fromJson(needs.prepare.outputs.matrix) }}
    50          use_glibc:
    51            - ""
    52            - glibc
    53      steps:
    54        -
    55          name: Checkout
    56          uses: actions/checkout@v4
    57          with:
    58            fetch-depth: 0
    59        -
    60          name: Set up Docker Buildx
    61          uses: docker/setup-buildx-action@v3
    62        -
    63          name: Build
    64          uses: docker/bake-action@v4
    65          with:
    66            targets: ${{ matrix.target }}
    67            set: |
    68              *.platform=${{ matrix.platform }}
    69          env:
    70            USE_GLIBC: ${{ matrix.use_glibc }}
    71        -
    72          name: Create tarball
    73          working-directory: ./build
    74          run: |
    75            mkdir /tmp/out
    76            platform=${{ matrix.platform }}
    77            platformPair=${platform//\//-}
    78            tar -cvzf "/tmp/out/docker-${platformPair}.tar.gz" .
    79            if [ -z "${{ matrix.use_glibc }}" ]; then
    80              echo "ARTIFACT_NAME=${{ matrix.target }}" >> $GITHUB_ENV
    81            else
    82              echo "ARTIFACT_NAME=${{ matrix.target }}-glibc" >> $GITHUB_ENV
    83            fi
    84        -
    85          name: Upload artifacts
    86          uses: actions/upload-artifact@v3
    87          with:
    88            name: ${{ env.ARTIFACT_NAME }}
    89            path: /tmp/out/*
    90            if-no-files-found: error
    91  
    92    bin-image:
    93      runs-on: ubuntu-22.04
    94      if: ${{ github.event_name != 'pull_request' && github.repository == 'docker/cli' }}
    95      steps:
    96        -
    97          name: Checkout
    98          uses: actions/checkout@v4
    99        -
   100          name: Set up QEMU
   101          uses: docker/setup-qemu-action@v3
   102        -
   103          name: Set up Docker Buildx
   104          uses: docker/setup-buildx-action@v3
   105        -
   106          name: Docker meta
   107          id: meta
   108          uses: docker/metadata-action@v5
   109          with:
   110            images: dockereng/cli-bin
   111            tags: |
   112              type=semver,pattern={{version}}
   113              type=ref,event=branch
   114              type=ref,event=pr
   115              type=sha
   116        -
   117          name: Login to DockerHub
   118          if: github.event_name != 'pull_request'
   119          uses: docker/login-action@v3
   120          with:
   121            username: ${{ secrets.DOCKERHUB_CLIBIN_USERNAME }}
   122            password: ${{ secrets.DOCKERHUB_CLIBIN_TOKEN }}
   123        -
   124          name: Build and push image
   125          uses: docker/bake-action@v4
   126          with:
   127            files: |
   128              ./docker-bake.hcl
   129              ${{ steps.meta.outputs.bake-file }}
   130            targets: bin-image-cross
   131            push: ${{ github.event_name != 'pull_request' }}
   132            set: |
   133              *.cache-from=type=gha,scope=bin-image
   134              *.cache-to=type=gha,scope=bin-image,mode=max
   135  
   136    prepare-plugins:
   137      runs-on: ubuntu-22.04
   138      outputs:
   139        matrix: ${{ steps.platforms.outputs.matrix }}
   140      steps:
   141        -
   142          name: Checkout
   143          uses: actions/checkout@v4
   144        -
   145          name: Create matrix
   146          id: platforms
   147          run: |
   148            echo "matrix=$(docker buildx bake plugins-cross --print | jq -cr '.target."plugins-cross".platforms')" >>${GITHUB_OUTPUT}
   149        -
   150          name: Show matrix
   151          run: |
   152            echo ${{ steps.platforms.outputs.matrix }}
   153  
   154    plugins:
   155      runs-on: ubuntu-22.04
   156      needs:
   157        - prepare-plugins
   158      strategy:
   159        fail-fast: false
   160        matrix:
   161          platform: ${{ fromJson(needs.prepare-plugins.outputs.matrix) }}
   162      steps:
   163        -
   164          name: Checkout
   165          uses: actions/checkout@v4
   166        -
   167          name: Set up Docker Buildx
   168          uses: docker/setup-buildx-action@v3
   169        -
   170          name: Build
   171          uses: docker/bake-action@v4
   172          with:
   173            targets: plugins-cross
   174            set: |
   175              *.platform=${{ matrix.platform }}