From 3bc2f4c0909f79f0ffdc3527f6a229b145f46e1d Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Tue, 21 Jan 2025 12:34:41 +0100 Subject: [PATCH] use child workflow --- .github/workflows/_build-images-manifest.yml | 65 ++++++++++++++++++++ .github/workflows/build-images.yml | 63 +++++-------------- 2 files changed, 80 insertions(+), 48 deletions(-) create mode 100644 .github/workflows/_build-images-manifest.yml diff --git a/.github/workflows/_build-images-manifest.yml b/.github/workflows/_build-images-manifest.yml new file mode 100644 index 0000000..6cc76f4 --- /dev/null +++ b/.github/workflows/_build-images-manifest.yml @@ -0,0 +1,65 @@ +on: + workflow_call: + inputs: + runner: + required: true + type: string + dotnet_variant: + required: true + type: string + dotnet_versions: + required: true + type: string + docker_distros: + required: true + type: string +env: + DOTNET_INSTALL_DIR: "./.dotnet" + DOTNET_ROLL_FORWARD: "Major" + PUSH_IMAGES: ${{ github.event_name != 'pull_request' && github.repository_owner == 'GitTools' }} + +jobs: + build_images: + name: ${{ matrix.docker_distro }} - net${{ matrix.dotnet_version }} + runs-on: ${{ inputs.runner }} + strategy: + fail-fast: false + matrix: + docker_distro: ${{ fromJson(inputs.dockerDistros) }} + dotnet_version: ${{ fromJson(inputs.dotnetVersions) }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Use cached cake frosting + id: cache-cake + uses: actions/cache@v4 + with: + path: run + key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} + - name: Setup .NET SDK + uses: actions/setup-dotnet@v4 + with: + global-json-file: build/global.json + - name: Set up Docker + uses: ./.github/actions/docker-setup + - name: Publish image manifest to DockerHub + uses: ./.github/actions/build-images-manifest + with: + dotnet_variant: ${{ inputs.dotnet_variant }} + dotnet_version: ${{ matrix.dotnet_version }} + docker_distro: ${{ matrix.docker_distro }} + docker_registry: docker.io + docker_registry_name: dockerhub + docker_registry_username: ${{ secrets.DOCKER_USERNAME }} + docker_registry_password: ${{ secrets.DOCKER_PASSWORD }} + - name: Publish image manifest to GitHub + uses: ./.github/actions/build-images-manifest + with: + dotnet_variant: ${{ inputs.dotnet_variant }} + dotnet_version: ${{ matrix.dotnet_version }} + docker_distro: ${{ matrix.docker_distro }} + docker_registry: ghcr.io + docker_registry_name: github + docker_registry_username: ${{ github.repository_owner }} + docker_registry_password: ${{ secrets.DOCKER_GITHUB_TOKEN }} diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml index 553a2bb..7ee1ad0 100644 --- a/.github/workflows/build-images.yml +++ b/.github/workflows/build-images.yml @@ -59,51 +59,18 @@ jobs: dotnet_versions: ${{ needs.prepare.outputs.dotnetVersions }} docker_distros: ${{ needs.prepare.outputs.dockerDistros }} -# build_images_manifest: -# name: Build Images (${{ matrix.distro }}) (${{ matrix.version }} - ${{ matrix.variant }}) -# needs: [ prepare, build_images ] -# env: -# PUSH_IMAGES: ${{github.event_name != 'pull_request' && github.repository_owner == 'GitTools'}} -# runs-on: ubuntu-24.04 -# strategy: -# matrix: -# distro: ${{ fromJson(needs.prepare.outputs.dockerDistros) }} -# version: ${{ fromJson(needs.prepare.outputs.dotnetVersions) }} -# variant: ${{ fromJson(needs.prepare.outputs.dotnetVariants) }} -# fail-fast: false -# -# steps: -# - name: Checkout -# uses: actions/checkout@v4 -# - name: Use cached cake frosting -# id: cache-cake -# uses: actions/cache@v4 -# with: -# path: run -# key: run-${{ runner.os }}-${{ hashFiles('./build/**') }} -# - name: Setup .NET SDK -# uses: actions/setup-dotnet@v4 -# with: -# global-json-file: build/global.json -# - name: Set up Docker -# uses: ./.github/actions/docker-setup -# - name: Publish image manifest to DockerHub -# uses: ./.github/actions/build-images-manifest -# with: -# dotnet_version: ${{ matrix.version }} -# dotnet_variant: ${{ matrix.variant }} -# docker_distro: ${{ matrix.distro }} -# docker_registry: docker.io -# docker_registry_name: dockerhub -# docker_registry_username: ${{ secrets.DOCKER_USERNAME }} -# docker_registry_password: ${{ secrets.DOCKER_PASSWORD }} -# - name: Publish image manifest to GitHub -# uses: ./.github/actions/build-images-manifest -# with: -# dotnet_version: ${{ matrix.version }} -# dotnet_variant: ${{ matrix.variant }} -# docker_distro: ${{ matrix.distro }} -# docker_registry: ghcr.io -# docker_registry_name: github -# docker_registry_username: ${{ github.repository_owner }} -# docker_registry_password: ${{ secrets.DOCKER_GITHUB_TOKEN }} + build_images_manifest: + name: Build Images Manifest (${{ matrix.variant }}) + secrets: inherit + needs: [ prepare, build_images ] + strategy: + fail-fast: false + matrix: + dotnet_variant: ${{ fromJson(needs.prepare.outputs.dotnetVariants) }} + + uses: ./.github/workflows/_build-images-manifest.yml + with: + runner: ${{ matrix.runner }} + dotnet_variant: ${{ matrix.dotnet_variant }} + dotnet_versions: ${{ needs.prepare.outputs.dotnetVersions }} + docker_distros: ${{ needs.prepare.outputs.dockerDistros }}