From e1d34e3fd26b43fc33e8fceaec7934835c1185bb Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 20 Jan 2025 22:15:18 +0100 Subject: [PATCH] include manifest for build images --- .github/workflows/build-deps.yml | 2 +- .github/workflows/build-images.yml | 68 ++++++++++++++++++- build/build/Tasks/DockerBuildDepsManifest.cs | 2 + .../build/Tasks/DockerBuildImagesManifest.cs | 2 + 4 files changed, 72 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-deps.yml b/.github/workflows/build-deps.yml index b7b74d5..7fe989e 100644 --- a/.github/workflows/build-deps.yml +++ b/.github/workflows/build-deps.yml @@ -108,7 +108,7 @@ jobs: --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic build_deps_manifests: - name: Build Deps Manifests + name: Build Deps Manifests (${{ matrix.distro }}) needs: [ prepare, build_deps ] env: PUSH_IMAGES: ${{github.event_name != 'pull_request' && github.repository_owner == 'GitTools'}} diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml index fa3a17a..86b4ed8 100644 --- a/.github/workflows/build-images.yml +++ b/.github/workflows/build-images.yml @@ -35,7 +35,7 @@ jobs: id: set_matrix run: dotnet run/build.dll --target=SetMatrix - build: + build_images: name: Build Images (${{ matrix.arch }} - ${{ matrix.distro }}) (${{ matrix.version }} - ${{ matrix.variant }}) needs: [ prepare ] env: @@ -107,3 +107,69 @@ jobs: --dotnet_version=${{ matrix.version }} --dotnet_variant=${{ matrix.variant }} ` --dotnet_distro=${{ matrix.distro }} --docker_registry=github ` --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic + + 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: docker/setup-docker-action@v4 + with: + daemon-config: '{ "features": { "containerd-snapshotter": true } }' + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + version: 'latest' + driver-opts: 'image=moby/buildkit:buildx-stable-1' + install: true + - name: Login to DockerHub + if: success() && env.PUSH_IMAGES == 'true' + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: '[Build Docker images]' + shell: pwsh + run: | + dotnet run/build.dll ` + --target=DockerBuildImagesManifest ` + --dotnet_version=${{ matrix.version }} --dotnet_variant=${{ matrix.variant }} ` + --dotnet_distro=${{ matrix.distro }} --docker_registry=dockerhub ` + --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic + - name: Login to GitHub Container Registry + if: success() && env.PUSH_IMAGES == 'true' + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.DOCKER_GITHUB_TOKEN }} + - name: '[Build Docker images]' + shell: pwsh + run: | + dotnet run/build.dll ` + --target=DockerBuildImagesManifest ` + --dotnet_version=${{ matrix.version }} --dotnet_variant=${{ matrix.variant }} ` + --dotnet_distro=${{ matrix.distro }} --docker_registry=github ` + --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic diff --git a/build/build/Tasks/DockerBuildDepsManifest.cs b/build/build/Tasks/DockerBuildDepsManifest.cs index ef09de3..2760d96 100644 --- a/build/build/Tasks/DockerBuildDepsManifest.cs +++ b/build/build/Tasks/DockerBuildDepsManifest.cs @@ -1,6 +1,8 @@ namespace Build; using DockerBuildXImageToolsCreateSettings = Build.Cake.Docker.DockerBuildXImageToolsCreateSettings; +[TaskName(nameof(DockerBuildDepsManifest))] +[TaskDescription("Builds the docker images dependencies manifest")] public class DockerBuildDepsManifest : BaseDockerBuildManifest { public override void Run(BuildContext context) diff --git a/build/build/Tasks/DockerBuildImagesManifest.cs b/build/build/Tasks/DockerBuildImagesManifest.cs index 9c5b955..e061e8d 100644 --- a/build/build/Tasks/DockerBuildImagesManifest.cs +++ b/build/build/Tasks/DockerBuildImagesManifest.cs @@ -1,6 +1,8 @@ namespace Build; using DockerBuildXImageToolsCreateSettings = Build.Cake.Docker.DockerBuildXImageToolsCreateSettings; +[TaskName(nameof(DockerBuildImagesManifest))] +[TaskDescription("Builds the docker images manifest")] public class DockerBuildImagesManifest : BaseDockerBuildManifest { public override void Run(BuildContext context)