| # Copyright 2024 NVIDIA CORPORATION |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Run this workflow on pull requests |
| name: image |
| |
| on: |
| workflow_call: |
| inputs: |
| version: |
| required: true |
| type: string |
| build_multi_arch_images: |
| required: true |
| type: string |
| |
| jobs: |
| packages: |
| runs-on: linux-amd64-cpu4 |
| strategy: |
| matrix: |
| target: |
| - ubuntu18.04-arm64 |
| - ubuntu18.04-amd64 |
| - ubuntu18.04-ppc64le |
| - centos7-aarch64 |
| - centos7-x86_64 |
| - centos8-ppc64le |
| ispr: |
| - ${{ github.ref_name != 'main' && !startsWith( github.ref_name, 'release-' ) }} |
| exclude: |
| - ispr: true |
| target: ubuntu18.04-arm64 |
| - ispr: true |
| target: ubuntu18.04-ppc64le |
| - ispr: true |
| target: centos7-aarch64 |
| - ispr: true |
| target: centos8-ppc64le |
| fail-fast: false |
| |
| steps: |
| - uses: actions/checkout@v4 |
| name: Check out code |
| |
| - name: Set up QEMU |
| uses: docker/setup-qemu-action@v3 |
| with: |
| image: tonistiigi/binfmt:master |
| |
| - name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@v3 |
| |
| - name: build ${{ matrix.target }} packages |
| run: | |
| sudo apt-get install -y coreutils build-essential sed git bash make |
| echo "Building packages" |
| ./scripts/build-packages.sh ${{ matrix.target }} |
| |
| - name: 'Upload Artifacts' |
| uses: actions/upload-artifact@v4 |
| with: |
| compression-level: 0 |
| name: toolkit-container-${{ matrix.target }}-${{ github.run_id }} |
| path: ${{ github.workspace }}/dist/* |
| |
| image: |
| runs-on: linux-amd64-cpu4 |
| strategy: |
| matrix: |
| dist: |
| - ubuntu20.04 |
| - ubi8 |
| - packaging |
| ispr: |
| - ${{ github.ref_name != 'main' && !startsWith( github.ref_name, 'release-' ) }} |
| exclude: |
| - ispr: true |
| dist: ubi8 |
| needs: packages |
| steps: |
| - uses: actions/checkout@v4 |
| name: Check out code |
| |
| - name: Set up QEMU |
| uses: docker/setup-qemu-action@v3 |
| with: |
| image: tonistiigi/binfmt:master |
| |
| - name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@v3 |
| |
| - name: Get built packages |
| uses: actions/download-artifact@v4 |
| with: |
| path: ${{ github.workspace }}/dist/ |
| pattern: toolkit-container-*-${{ github.run_id }} |
| merge-multiple: true |
| |
| - name: Login to GitHub Container Registry |
| uses: docker/login-action@v3 |
| with: |
| registry: ghcr.io |
| username: ${{ github.actor }} |
| password: ${{ secrets.GITHUB_TOKEN }} |
| |
| - name: Build image |
| env: |
| IMAGE_NAME: ghcr.io/nvidia/container-toolkit |
| VERSION: ${{ inputs.version }} |
| PUSH_ON_BUILD: "true" |
| BUILD_MULTI_ARCH_IMAGES: ${{ inputs.build_multi_arch_images }} |
| run: | |
| echo "${VERSION}" |
| make -f deployments/container/Makefile build-${{ matrix.dist }} |