From 2f4c2a0018aa88d263ade65ed298d20642f7cea1 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Sat, 18 Jan 2025 19:48:45 +0100 Subject: [PATCH 01/11] formatting --- build/build/Tasks/DockerBuild.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build/build/Tasks/DockerBuild.cs b/build/build/Tasks/DockerBuild.cs index 6af59a2..2d01c15 100644 --- a/build/build/Tasks/DockerBuild.cs +++ b/build/build/Tasks/DockerBuild.cs @@ -85,10 +85,10 @@ protected override IEnumerable GetDockerTags(DockerDepsImage dockerImage if (version == Constants.DockerDistroLatest) { - tags.AddRange(new[] - { + tags.AddRange( + [ $"{dockerRegistry}/{Constants.DockerImageName}:{distro}-{variant}-latest" - }); + ]); } if (!arch.HasValue) return tags; From 56391effd59647298338342698cef47491904f4f Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Sat, 18 Jan 2025 19:49:29 +0100 Subject: [PATCH 02/11] disable manifest publish --- build/build/Tasks/DockerBuild.cs | 10 +++++----- build/build/Tasks/DockerBuildDeps.cs | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/build/build/Tasks/DockerBuild.cs b/build/build/Tasks/DockerBuild.cs index 2d01c15..ee015d0 100644 --- a/build/build/Tasks/DockerBuild.cs +++ b/build/build/Tasks/DockerBuild.cs @@ -19,11 +19,11 @@ public override void Run(BuildContext context) return; // build/push manifests - foreach (var group in context.Images.GroupBy(x => new { x.Distro, x.Variant, x.Version })) - { - var dockerImage = group.First(); - DockerManifest(context, dockerImage); - } + // foreach (var group in context.Images.GroupBy(x => new { x.Distro, x.Variant, x.Version })) + // { + // var dockerImage = group.First(); + // DockerManifest(context, dockerImage); + // } } protected override void DockerImage(BuildContext context, DockerDepsImage dockerImage) diff --git a/build/build/Tasks/DockerBuildDeps.cs b/build/build/Tasks/DockerBuildDeps.cs index a42291a..76053ca 100644 --- a/build/build/Tasks/DockerBuildDeps.cs +++ b/build/build/Tasks/DockerBuildDeps.cs @@ -19,11 +19,11 @@ public override void Run(BuildContext context) return; // build/push manifests - foreach (var group in context.DepsImages.GroupBy(x => new { x.Distro })) - { - var dockerImage = group.First(); - DockerManifest(context, dockerImage); - } + // foreach (var group in context.DepsImages.GroupBy(x => new { x.Distro })) + // { + // var dockerImage = group.First(); + // DockerManifest(context, dockerImage); + // } } protected override DirectoryPath GetWorkingDir(DockerDepsImage dockerImage) => From fa39b4b9f60c2aae7699357e6b9403b9864cb11e Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Sat, 18 Jan 2025 19:50:05 +0100 Subject: [PATCH 03/11] build using [ubuntu-24.04, ubuntu-24.04-arm] --- .github/workflows/build-deps.yml | 37 +++++++++++++++--------------- .github/workflows/build.yml | 39 ++++++++++++++++---------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/.github/workflows/build-deps.yml b/.github/workflows/build-deps.yml index 31fc5a6..c490056 100644 --- a/.github/workflows/build-deps.yml +++ b/.github/workflows/build-deps.yml @@ -40,14 +40,21 @@ jobs: run: dotnet run/build.dll --target=SetMatrix build_deps: - name: Deps + name: Deps (${{ matrix.arch }} - ${{ matrix.distro }}) needs: [ prepare ] env: PUSH_IMAGES: ${{github.event_name != 'pull_request' && github.repository_owner == 'GitTools'}} - runs-on: ubuntu-24.04 + runs-on: ${{ matrix.runner }} strategy: matrix: + arch: [ amd64, arm64 ] + runner: [ ubuntu-24.04, ubuntu-24.04-arm ] distro: ${{ fromJson(needs.prepare.outputs.dockerDistros) }} + exclude: + - runner: ubuntu-24.04-arm + arch: amd64 + - runner: ubuntu-24.04 + arch: arm64 fail-fast: false steps: - name: Checkout @@ -62,18 +69,6 @@ jobs: 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 QEMU - uses: docker/setup-qemu-action@v3 - - 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 @@ -83,8 +78,11 @@ jobs: - name: '[Build Docker images]' shell: pwsh - run: dotnet run/build.dll --target=DockerBuildDeps --dotnet_distro=${{ matrix.distro }} --docker_registry=dockerhub ` - --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic + run: | + dotnet run/build.dll ` + --target=DockerBuildDeps --arch=${{ matrix.arch }} ` + --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' @@ -95,5 +93,8 @@ jobs: password: ${{ secrets.DOCKER_GITHUB_TOKEN }} - name: '[Build Docker images]' shell: pwsh - run: dotnet run/build.dll --target=DockerBuildDeps --dotnet_distro=${{ matrix.distro }} --docker_registry=github ` - --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic + run: | + dotnet run/build.dll ` + --target=DockerBuildDeps --arch=${{ matrix.arch }} ` + --dotnet_distro=${{ matrix.distro }} --docker_registry=github ` + --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c22c154..c741b5f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,16 +36,23 @@ jobs: run: dotnet run/build.dll --target=SetMatrix build: - name: Build + name: Build (${{ matrix.arch }} - ${{ matrix.distro }}) (${{ matrix.version }} - ${{ matrix.variant }}) needs: [ prepare ] env: PUSH_IMAGES: ${{github.event_name != 'pull_request' && github.repository_owner == 'GitTools'}} - runs-on: ubuntu-24.04 + runs-on: ${{ matrix.runner }} strategy: matrix: + arch: [ amd64, arm64 ] + runner: [ ubuntu-24.04, ubuntu-24.04-arm ] distro: ${{ fromJson(needs.prepare.outputs.dockerDistros) }} version: ${{ fromJson(needs.prepare.outputs.dotnetVersions) }} variant: ${{ fromJson(needs.prepare.outputs.dotnetVariants) }} + exclude: + - runner: ubuntu-24.04-arm + arch: amd64 + - runner: ubuntu-24.04 + arch: arm64 fail-fast: false steps: @@ -61,18 +68,6 @@ jobs: 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 QEMU - uses: docker/setup-qemu-action@v3 - - 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 @@ -82,9 +77,11 @@ jobs: - name: '[Build Docker images]' shell: pwsh run: | - dotnet run/build.dll --target=DockerBuild --dotnet_version=${{ matrix.version }} --dotnet_variant=${{ matrix.variant }} ` - --dotnet_distro=${{ matrix.distro }} --docker_registry=dockerhub ` - --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic + dotnet run/build.dll ` + --target=DockerBuild --arch=${{ matrix.arch }} ` + --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 @@ -95,6 +92,8 @@ jobs: - name: '[Build Docker images]' shell: pwsh run: | - dotnet run/build.dll --target=DockerBuild --dotnet_version=${{ matrix.version }} --dotnet_variant=${{ matrix.variant }} ` - --dotnet_distro=${{ matrix.distro }} --docker_registry=github ` - --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic + dotnet run/build.dll ` + --target=DockerBuild --arch=${{ matrix.arch }} ` + --dotnet_version=${{ matrix.version }} --dotnet_variant=${{ matrix.variant }} ` + --dotnet_distro=${{ matrix.distro }} --docker_registry=github ` + --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic From 070557acdcf38961927e1a799ffe642ff48d07fe Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Sat, 18 Jan 2025 23:52:59 +0100 Subject: [PATCH 04/11] add back docker actions --- .github/workflows/build-deps.yml | 10 ++++++++++ .github/workflows/build.yml | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/.github/workflows/build-deps.yml b/.github/workflows/build-deps.yml index c490056..a268341 100644 --- a/.github/workflows/build-deps.yml +++ b/.github/workflows/build-deps.yml @@ -69,6 +69,16 @@ jobs: 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 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c741b5f..cf5d734 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -68,6 +68,16 @@ jobs: 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 From fad19560861023ceced2964840ad12f4bb6a06e1 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 20 Jan 2025 12:42:45 +0100 Subject: [PATCH 05/11] renamed DockerBuild => DockerBuildImages --- .github/workflows/build-deps.yml | 2 +- .../workflows/{build.yml => build-images.yml} | 218 +++++++++--------- build/CI.sln | 2 +- .../{DockerBuild.cs => DockerBuildImages.cs} | 4 +- 4 files changed, 113 insertions(+), 113 deletions(-) rename .github/workflows/{build.yml => build-images.yml} (90%) rename build/build/Tasks/{DockerBuild.cs => DockerBuildImages.cs} (97%) diff --git a/.github/workflows/build-deps.yml b/.github/workflows/build-deps.yml index a268341..4796cbb 100644 --- a/.github/workflows/build-deps.yml +++ b/.github/workflows/build-deps.yml @@ -40,7 +40,7 @@ jobs: run: dotnet run/build.dll --target=SetMatrix build_deps: - name: Deps (${{ matrix.arch }} - ${{ matrix.distro }}) + name: Build Deps (${{ matrix.arch }} - ${{ matrix.distro }}) needs: [ prepare ] env: PUSH_IMAGES: ${{github.event_name != 'pull_request' && github.repository_owner == 'GitTools'}} diff --git a/.github/workflows/build.yml b/.github/workflows/build-images.yml similarity index 90% rename from .github/workflows/build.yml rename to .github/workflows/build-images.yml index cf5d734..fa3a17a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build-images.yml @@ -1,109 +1,109 @@ -name: Build - -on: - workflow_dispatch: - workflow_run: - workflows: [ Build Deps ] - types: - - completed -jobs: - prepare: - name: Prepare Build - runs-on: ubuntu-24.04 - outputs: - dockerDistros: ${{ steps.set_matrix.outputs.dockerDistros }} - dotnetVersions: ${{ steps.set_matrix.outputs.dotnetVersions }} - dotnetVariants: ${{ steps.set_matrix.outputs.dotnetVariants }} - if: ${{ github.event.workflow_run.conclusion == 'success' }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Cache 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: '[Prepare]' - if: steps.cache-cake.outputs.cache-hit != 'true' - run: dotnet build build/CI.sln --configuration=Release - - name: '[Matrix]' - id: set_matrix - run: dotnet run/build.dll --target=SetMatrix - - build: - name: Build (${{ matrix.arch }} - ${{ matrix.distro }}) (${{ matrix.version }} - ${{ matrix.variant }}) - needs: [ prepare ] - env: - PUSH_IMAGES: ${{github.event_name != 'pull_request' && github.repository_owner == 'GitTools'}} - runs-on: ${{ matrix.runner }} - strategy: - matrix: - arch: [ amd64, arm64 ] - runner: [ ubuntu-24.04, ubuntu-24.04-arm ] - distro: ${{ fromJson(needs.prepare.outputs.dockerDistros) }} - version: ${{ fromJson(needs.prepare.outputs.dotnetVersions) }} - variant: ${{ fromJson(needs.prepare.outputs.dotnetVariants) }} - exclude: - - runner: ubuntu-24.04-arm - arch: amd64 - - runner: ubuntu-24.04 - arch: arm64 - 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=DockerBuild --arch=${{ matrix.arch }} ` - --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=DockerBuild --arch=${{ matrix.arch }} ` - --dotnet_version=${{ matrix.version }} --dotnet_variant=${{ matrix.variant }} ` - --dotnet_distro=${{ matrix.distro }} --docker_registry=github ` - --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic +name: Build Images + +on: + workflow_dispatch: + workflow_run: + workflows: [ Build Deps ] + types: + - completed +jobs: + prepare: + name: Prepare Build + runs-on: ubuntu-24.04 + outputs: + dockerDistros: ${{ steps.set_matrix.outputs.dockerDistros }} + dotnetVersions: ${{ steps.set_matrix.outputs.dotnetVersions }} + dotnetVariants: ${{ steps.set_matrix.outputs.dotnetVariants }} + if: ${{ github.event.workflow_run.conclusion == 'success' }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Cache 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: '[Prepare]' + if: steps.cache-cake.outputs.cache-hit != 'true' + run: dotnet build build/CI.sln --configuration=Release + - name: '[Matrix]' + id: set_matrix + run: dotnet run/build.dll --target=SetMatrix + + build: + name: Build Images (${{ matrix.arch }} - ${{ matrix.distro }}) (${{ matrix.version }} - ${{ matrix.variant }}) + needs: [ prepare ] + env: + PUSH_IMAGES: ${{github.event_name != 'pull_request' && github.repository_owner == 'GitTools'}} + runs-on: ${{ matrix.runner }} + strategy: + matrix: + arch: [ amd64, arm64 ] + runner: [ ubuntu-24.04, ubuntu-24.04-arm ] + distro: ${{ fromJson(needs.prepare.outputs.dockerDistros) }} + version: ${{ fromJson(needs.prepare.outputs.dotnetVersions) }} + variant: ${{ fromJson(needs.prepare.outputs.dotnetVariants) }} + exclude: + - runner: ubuntu-24.04-arm + arch: amd64 + - runner: ubuntu-24.04 + arch: arm64 + 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=DockerBuildImages --arch=${{ matrix.arch }} ` + --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=DockerBuildImages --arch=${{ matrix.arch }} ` + --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/CI.sln b/build/CI.sln index aac0e14..a57521e 100644 --- a/build/CI.sln +++ b/build/CI.sln @@ -5,7 +5,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sln", "sln", "{FBAD8CD3-87BB-4EC8-B467-58328E304F9B}" ProjectSection(SolutionItems) = preProject Directory.Build.props = Directory.Build.props - ..\.github\workflows\build.yml = ..\.github\workflows\build.yml + ..\.github\workflows\build-images.yml = ..\.github\workflows\build-images.yml ..\.github\workflows\build-deps.yml = ..\.github\workflows\build-deps.yml global.json = global.json EndProjectSection diff --git a/build/build/Tasks/DockerBuild.cs b/build/build/Tasks/DockerBuildImages.cs similarity index 97% rename from build/build/Tasks/DockerBuild.cs rename to build/build/Tasks/DockerBuildImages.cs index ee015d0..f342efa 100644 --- a/build/build/Tasks/DockerBuild.cs +++ b/build/build/Tasks/DockerBuildImages.cs @@ -3,9 +3,9 @@ namespace Build; -[TaskName(nameof(DockerBuild))] +[TaskName(nameof(DockerBuildImages))] [TaskDescription("Builds the docker images")] -public sealed class DockerBuild : DockerBaseTask +public sealed class DockerBuildImages : DockerBaseTask { public override void Run(BuildContext context) { From ebf0b76fe9a11817f7ac566631c8894befd29bff Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 20 Jan 2025 16:23:25 +0100 Subject: [PATCH 06/11] renamed DockerBaseTask => DockerBuildBase --- build/build/Tasks/{DockerBaseTask.cs => DockerBuildBase.cs} | 2 +- build/build/Tasks/DockerBuildDeps.cs | 2 +- build/build/Tasks/DockerBuildImages.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename build/build/Tasks/{DockerBaseTask.cs => DockerBuildBase.cs} (97%) diff --git a/build/build/Tasks/DockerBaseTask.cs b/build/build/Tasks/DockerBuildBase.cs similarity index 97% rename from build/build/Tasks/DockerBaseTask.cs rename to build/build/Tasks/DockerBuildBase.cs index 88eb502..c9fe3b7 100644 --- a/build/build/Tasks/DockerBaseTask.cs +++ b/build/build/Tasks/DockerBuildBase.cs @@ -3,7 +3,7 @@ namespace Build; -public abstract class DockerBaseTask : FrostingTask +public abstract class DockerBuildBase : FrostingTask { protected const string Prefix = "org.opencontainers.image"; diff --git a/build/build/Tasks/DockerBuildDeps.cs b/build/build/Tasks/DockerBuildDeps.cs index 76053ca..0824123 100644 --- a/build/build/Tasks/DockerBuildDeps.cs +++ b/build/build/Tasks/DockerBuildDeps.cs @@ -5,7 +5,7 @@ namespace Build; [TaskName(nameof(DockerBuildDeps))] [TaskDescription("Builds the docker images dependencies")] -public sealed class DockerBuildDeps : DockerBaseTask +public sealed class DockerBuildDeps : DockerBuildBase { public override void Run(BuildContext context) { diff --git a/build/build/Tasks/DockerBuildImages.cs b/build/build/Tasks/DockerBuildImages.cs index f342efa..8b35cc9 100644 --- a/build/build/Tasks/DockerBuildImages.cs +++ b/build/build/Tasks/DockerBuildImages.cs @@ -5,7 +5,7 @@ namespace Build; [TaskName(nameof(DockerBuildImages))] [TaskDescription("Builds the docker images")] -public sealed class DockerBuildImages : DockerBaseTask +public sealed class DockerBuildImages : DockerBuildBase { public override void Run(BuildContext context) { From d02ca64d3dbbd92923037c8005577aaf2ee8075b Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 20 Jan 2025 20:05:53 +0100 Subject: [PATCH 07/11] extract GetDockerTags as extension --- build/build/Tasks/DockerBuildBase.cs | 7 ++--- build/build/Tasks/DockerBuildDeps.cs | 14 ---------- build/build/Tasks/DockerBuildImages.cs | 23 ---------------- build/build/Utils/DockerImageExtensions.cs | 31 ++++++++++++++++++++++ 4 files changed, 33 insertions(+), 42 deletions(-) create mode 100644 build/build/Utils/DockerImageExtensions.cs diff --git a/build/build/Tasks/DockerBuildBase.cs b/build/build/Tasks/DockerBuildBase.cs index c9fe3b7..8cddbf6 100644 --- a/build/build/Tasks/DockerBuildBase.cs +++ b/build/build/Tasks/DockerBuildBase.cs @@ -34,7 +34,7 @@ protected virtual void DockerImage(BuildContext context, DockerDepsImage dockerI protected void DockerManifest(BuildContext context, DockerDepsImage dockerImage) { - var manifestTags = GetDockerTags(dockerImage, context.DockerRegistry); + var manifestTags = dockerImage.GetDockerTags(context.DockerRegistry); foreach (var tag in manifestTags) { var amd64Tag = $"{tag}-{Architecture.Amd64.ToSuffix()}"; @@ -62,7 +62,7 @@ protected virtual DockerBuildXBuildSettings GetBuildSettings(DockerDepsImage doc { var arch = dockerImage.Architecture; var suffix = arch.ToSuffix(); - var dockerTags = GetDockerTags(dockerImage, registry, arch).ToArray(); + var dockerTags = dockerImage.GetDockerTags(registry, arch).ToArray(); var buildSettings = new DockerBuildXBuildSettings { Rm = true, @@ -82,7 +82,4 @@ protected virtual DockerBuildXBuildSettings GetBuildSettings(DockerDepsImage doc } protected abstract DirectoryPath GetWorkingDir(DockerDepsImage dockerImage); - - protected abstract IEnumerable GetDockerTags(DockerDepsImage dockerImage, string dockerRegistry, - Architecture? arch = null); } diff --git a/build/build/Tasks/DockerBuildDeps.cs b/build/build/Tasks/DockerBuildDeps.cs index 0824123..8c0b86f 100644 --- a/build/build/Tasks/DockerBuildDeps.cs +++ b/build/build/Tasks/DockerBuildDeps.cs @@ -60,18 +60,4 @@ protected override DockerBuildXImageToolsCreateSettings GetManifestSettings(Dock ]; return settings; } - - protected override IEnumerable GetDockerTags(DockerDepsImage dockerImage, string dockerRegistry, - Architecture? arch = null) - { - var tags = new[] - { - $"{dockerRegistry}/{Constants.DockerImageDeps}:{dockerImage.Distro}" - }; - - if (!arch.HasValue) return tags; - - var suffix = arch.Value.ToSuffix(); - return tags.Select(x => $"{x}-{suffix}"); - } } diff --git a/build/build/Tasks/DockerBuildImages.cs b/build/build/Tasks/DockerBuildImages.cs index 8b35cc9..1dcc7af 100644 --- a/build/build/Tasks/DockerBuildImages.cs +++ b/build/build/Tasks/DockerBuildImages.cs @@ -73,29 +73,6 @@ protected override DockerBuildXImageToolsCreateSettings GetManifestSettings(Dock return settings; } - protected override IEnumerable GetDockerTags(DockerDepsImage dockerImage, string dockerRegistry, - Architecture? arch = null) - { - var (distro, version, variant, _) = (dockerImage as DockerImage)!; - - var tags = new List - { - $"{dockerRegistry}/{Constants.DockerImageName}:{distro}-{variant}-{version}" - }; - - if (version == Constants.DockerDistroLatest) - { - tags.AddRange( - [ - $"{dockerRegistry}/{Constants.DockerImageName}:{distro}-{variant}-latest" - ]); - } - - if (!arch.HasValue) return tags; - - var suffix = arch.Value.ToSuffix(); - return tags.Select(x => $"{x}-{suffix}"); - } private static void GenerateDockerfile(ICakeContext context, DirectoryPath? workDir, DockerDepsImage dockerImage) { diff --git a/build/build/Utils/DockerImageExtensions.cs b/build/build/Utils/DockerImageExtensions.cs new file mode 100644 index 0000000..b1cb373 --- /dev/null +++ b/build/build/Utils/DockerImageExtensions.cs @@ -0,0 +1,31 @@ +namespace Build; + +public static class DockerImageExtensions +{ + public static IEnumerable GetDockerTags(this DockerDepsImage dockerImage, string dockerRegistry, + Architecture? arch = null) + { + var tags = new List(); + + if (dockerImage is DockerImage image) + { + var (distro, version, variant, _) = image; + + tags.Add($"{dockerRegistry}/{Constants.DockerImageName}:{distro}-{variant}-{version}"); + + if (version == Constants.DockerDistroLatest) + { + tags.Add($"{dockerRegistry}/{Constants.DockerImageName}:{distro}-{variant}-latest"); + } + } + else + { + tags.Add($"{dockerRegistry}/{Constants.DockerImageDeps}:{dockerImage.Distro}"); + } + + if (!arch.HasValue) return tags; + + var suffix = arch.Value.ToSuffix(); + return tags.Select(x => $"{x}-{suffix}"); + } +} From 6229b93cbfe809156aa87f8e4d2692228263e575 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 20 Jan 2025 20:14:06 +0100 Subject: [PATCH 08/11] renamed DockerBuildBase => BaseDockerBuild --- ...{DockerBuildBase.cs => BaseDockerBuild.cs} | 29 +------------------ build/build/Tasks/DockerBuildDeps.cs | 13 +-------- build/build/Tasks/DockerBuildImages.cs | 16 +--------- 3 files changed, 3 insertions(+), 55 deletions(-) rename build/build/Tasks/{DockerBuildBase.cs => BaseDockerBuild.cs} (62%) diff --git a/build/build/Tasks/DockerBuildBase.cs b/build/build/Tasks/BaseDockerBuild.cs similarity index 62% rename from build/build/Tasks/DockerBuildBase.cs rename to build/build/Tasks/BaseDockerBuild.cs index 8cddbf6..143db36 100644 --- a/build/build/Tasks/DockerBuildBase.cs +++ b/build/build/Tasks/BaseDockerBuild.cs @@ -1,9 +1,8 @@ using DockerBuildXBuildSettings = Build.Cake.Docker.DockerBuildXBuildSettings; -using DockerBuildXImageToolsCreateSettings = Build.Cake.Docker.DockerBuildXImageToolsCreateSettings; namespace Build; -public abstract class DockerBuildBase : FrostingTask +public abstract class BaseDockerBuild : FrostingTask { protected const string Prefix = "org.opencontainers.image"; @@ -32,32 +31,6 @@ protected virtual void DockerImage(BuildContext context, DockerDepsImage dockerI } } - protected void DockerManifest(BuildContext context, DockerDepsImage dockerImage) - { - var manifestTags = dockerImage.GetDockerTags(context.DockerRegistry); - foreach (var tag in manifestTags) - { - var amd64Tag = $"{tag}-{Architecture.Amd64.ToSuffix()}"; - var arm64Tag = $"{tag}-{Architecture.Arm64.ToSuffix()}"; - - var settings = GetManifestSettings(dockerImage, tag); - context.DockerBuildXImageToolsCreate(settings, [amd64Tag, arm64Tag]); - } - } - - protected virtual DockerBuildXImageToolsCreateSettings GetManifestSettings(DockerDepsImage dockerImage, string tag) - { - var settings = new DockerBuildXImageToolsCreateSettings - { - Tag = [tag], - Annotation = - [ - .. Annotations.Select(a => "index:" + a).ToArray(), - ] - }; - return settings; - } - protected virtual DockerBuildXBuildSettings GetBuildSettings(DockerDepsImage dockerImage, string registry) { var arch = dockerImage.Architecture; diff --git a/build/build/Tasks/DockerBuildDeps.cs b/build/build/Tasks/DockerBuildDeps.cs index 8c0b86f..5d4c65a 100644 --- a/build/build/Tasks/DockerBuildDeps.cs +++ b/build/build/Tasks/DockerBuildDeps.cs @@ -5,7 +5,7 @@ namespace Build; [TaskName(nameof(DockerBuildDeps))] [TaskDescription("Builds the docker images dependencies")] -public sealed class DockerBuildDeps : DockerBuildBase +public sealed class DockerBuildDeps : BaseDockerBuild { public override void Run(BuildContext context) { @@ -49,15 +49,4 @@ protected override DockerBuildXBuildSettings GetBuildSettings(DockerDepsImage do return buildSettings; } - - protected override DockerBuildXImageToolsCreateSettings GetManifestSettings(DockerDepsImage dockerImage, string tag) - { - var settings = base.GetManifestSettings(dockerImage, tag); - settings.Annotation = - [ - .. settings.Annotation, - $"index:{Prefix}.description=GitTools deps images ({dockerImage.Distro})" - ]; - return settings; - } } diff --git a/build/build/Tasks/DockerBuildImages.cs b/build/build/Tasks/DockerBuildImages.cs index 1dcc7af..d271aeb 100644 --- a/build/build/Tasks/DockerBuildImages.cs +++ b/build/build/Tasks/DockerBuildImages.cs @@ -5,7 +5,7 @@ namespace Build; [TaskName(nameof(DockerBuildImages))] [TaskDescription("Builds the docker images")] -public sealed class DockerBuildImages : DockerBuildBase +public sealed class DockerBuildImages : BaseDockerBuild { public override void Run(BuildContext context) { @@ -60,20 +60,6 @@ protected override DockerBuildXBuildSettings GetBuildSettings(DockerDepsImage do return buildSettings; } - protected override DockerBuildXImageToolsCreateSettings GetManifestSettings(DockerDepsImage dockerImage, string tag) - { - var (distro, version, variant, _) = (DockerImage)dockerImage; - var suffix = $"({distro}-{variant}-{version})"; - var settings = base.GetManifestSettings(dockerImage, tag); - settings.Annotation = - [ - .. settings.Annotation, - $"index:{Prefix}.description=GitTools build images {suffix}", - ]; - return settings; - } - - private static void GenerateDockerfile(ICakeContext context, DirectoryPath? workDir, DockerDepsImage dockerImage) { var variant = ((DockerImage)dockerImage).Variant; From 3f5fb34ad1fa16f725432b5b97416e4f0adfe094 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 20 Jan 2025 21:10:43 +0100 Subject: [PATCH 09/11] build/push manifest --- .github/workflows/build-deps.yml | 67 +++++++++++++++++-- build/build/Tasks/BaseDockerBuildManifest.cs | 42 ++++++++++++ build/build/Tasks/DockerBuildDeps.cs | 11 --- build/build/Tasks/DockerBuildDepsManifest.cs | 29 ++++++++ build/build/Tasks/DockerBuildImages.cs | 11 --- .../build/Tasks/DockerBuildImagesManifest.cs | 31 +++++++++ 6 files changed, 165 insertions(+), 26 deletions(-) create mode 100644 build/build/Tasks/BaseDockerBuildManifest.cs create mode 100644 build/build/Tasks/DockerBuildDepsManifest.cs create mode 100644 build/build/Tasks/DockerBuildImagesManifest.cs diff --git a/.github/workflows/build-deps.yml b/.github/workflows/build-deps.yml index 4796cbb..b7b74d5 100644 --- a/.github/workflows/build-deps.yml +++ b/.github/workflows/build-deps.yml @@ -85,15 +85,13 @@ jobs: with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - - name: '[Build Docker images]' + - name: '[Build Docker images] DockerHub' shell: pwsh run: | dotnet run/build.dll ` --target=DockerBuildDeps --arch=${{ matrix.arch }} ` --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 @@ -101,10 +99,71 @@ jobs: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.DOCKER_GITHUB_TOKEN }} - - name: '[Build Docker images]' + - name: '[Build Docker images] GitHub' shell: pwsh run: | dotnet run/build.dll ` --target=DockerBuildDeps --arch=${{ matrix.arch }} ` --dotnet_distro=${{ matrix.distro }} --docker_registry=github ` --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic + + build_deps_manifests: + name: Build Deps Manifests + needs: [ prepare, build_deps ] + 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) }} + 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 manifests] DockerHub' + shell: pwsh + run: | + dotnet run/build.dll ` + --target=DockerBuildDepsManifest ` + --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 manifests] GitHub' + shell: pwsh + run: | + dotnet run/build.dll ` + --target=DockerBuildDepsManifest ` + --dotnet_distro=${{ matrix.distro }} --docker_registry=github ` + --push_images=${{env.PUSH_IMAGES}} --verbosity=diagnostic diff --git a/build/build/Tasks/BaseDockerBuildManifest.cs b/build/build/Tasks/BaseDockerBuildManifest.cs new file mode 100644 index 0000000..8a874cf --- /dev/null +++ b/build/build/Tasks/BaseDockerBuildManifest.cs @@ -0,0 +1,42 @@ +namespace Build; +using DockerBuildXImageToolsCreateSettings = Build.Cake.Docker.DockerBuildXImageToolsCreateSettings; + +public abstract class BaseDockerBuildManifest : FrostingTask +{ + protected const string Prefix = "org.opencontainers.image"; + + private static readonly string[] Annotations = + [ + $"{Prefix}.authors=GitTools Maintainers", + $"{Prefix}.vendor=GitTools", + $"{Prefix}.licenses=MIT", + $"{Prefix}.source=https://github.com/GitTools/build-images.git", + $"{Prefix}.created={DateTime.UtcNow:O}", + ]; + + protected void DockerManifest(BuildContext context, DockerDepsImage dockerImage) + { + var manifestTags = dockerImage.GetDockerTags(context.DockerRegistry); + foreach (var tag in manifestTags) + { + var amd64Tag = $"{tag}-{Architecture.Amd64.ToSuffix()}"; + var arm64Tag = $"{tag}-{Architecture.Arm64.ToSuffix()}"; + + var settings = GetManifestSettings(dockerImage, tag); + context.DockerBuildXImageToolsCreate(settings, [amd64Tag, arm64Tag]); + } + } + + protected virtual DockerBuildXImageToolsCreateSettings GetManifestSettings(DockerDepsImage dockerImage, string tag) + { + var settings = new DockerBuildXImageToolsCreateSettings + { + Tag = [tag], + Annotation = + [ + .. Annotations.Select(a => "index:" + a).ToArray(), + ] + }; + return settings; + } +} diff --git a/build/build/Tasks/DockerBuildDeps.cs b/build/build/Tasks/DockerBuildDeps.cs index 5d4c65a..2694741 100644 --- a/build/build/Tasks/DockerBuildDeps.cs +++ b/build/build/Tasks/DockerBuildDeps.cs @@ -1,5 +1,4 @@ using DockerBuildXBuildSettings = Build.Cake.Docker.DockerBuildXBuildSettings; -using DockerBuildXImageToolsCreateSettings = Build.Cake.Docker.DockerBuildXImageToolsCreateSettings; namespace Build; @@ -14,16 +13,6 @@ public override void Run(BuildContext context) { DockerImage(context, dockerImage); } - - if (!context.PushImages) - return; - - // build/push manifests - // foreach (var group in context.DepsImages.GroupBy(x => new { x.Distro })) - // { - // var dockerImage = group.First(); - // DockerManifest(context, dockerImage); - // } } protected override DirectoryPath GetWorkingDir(DockerDepsImage dockerImage) => diff --git a/build/build/Tasks/DockerBuildDepsManifest.cs b/build/build/Tasks/DockerBuildDepsManifest.cs new file mode 100644 index 0000000..ef09de3 --- /dev/null +++ b/build/build/Tasks/DockerBuildDepsManifest.cs @@ -0,0 +1,29 @@ +namespace Build; +using DockerBuildXImageToolsCreateSettings = Build.Cake.Docker.DockerBuildXImageToolsCreateSettings; + +public class DockerBuildDepsManifest : BaseDockerBuildManifest +{ + public override void Run(BuildContext context) + { + if (!context.PushImages) + return; + + // build/push manifests + foreach (var group in context.DepsImages.GroupBy(x => new { x.Distro })) + { + var dockerImage = group.First(); + DockerManifest(context, dockerImage); + } + } + + protected override DockerBuildXImageToolsCreateSettings GetManifestSettings(DockerDepsImage dockerImage, string tag) + { + var settings = base.GetManifestSettings(dockerImage, tag); + settings.Annotation = + [ + .. settings.Annotation, + $"index:{Prefix}.description=GitTools deps images ({dockerImage.Distro})" + ]; + return settings; + } +} diff --git a/build/build/Tasks/DockerBuildImages.cs b/build/build/Tasks/DockerBuildImages.cs index d271aeb..b016f18 100644 --- a/build/build/Tasks/DockerBuildImages.cs +++ b/build/build/Tasks/DockerBuildImages.cs @@ -1,5 +1,4 @@ using DockerBuildXBuildSettings = Build.Cake.Docker.DockerBuildXBuildSettings; -using DockerBuildXImageToolsCreateSettings = Build.Cake.Docker.DockerBuildXImageToolsCreateSettings; namespace Build; @@ -14,16 +13,6 @@ public override void Run(BuildContext context) { DockerImage(context, dockerImage); } - - if (!context.PushImages) - return; - - // build/push manifests - // foreach (var group in context.Images.GroupBy(x => new { x.Distro, x.Variant, x.Version })) - // { - // var dockerImage = group.First(); - // DockerManifest(context, dockerImage); - // } } protected override void DockerImage(BuildContext context, DockerDepsImage dockerImage) diff --git a/build/build/Tasks/DockerBuildImagesManifest.cs b/build/build/Tasks/DockerBuildImagesManifest.cs new file mode 100644 index 0000000..9c5b955 --- /dev/null +++ b/build/build/Tasks/DockerBuildImagesManifest.cs @@ -0,0 +1,31 @@ +namespace Build; +using DockerBuildXImageToolsCreateSettings = Build.Cake.Docker.DockerBuildXImageToolsCreateSettings; + +public class DockerBuildImagesManifest : BaseDockerBuildManifest +{ + public override void Run(BuildContext context) + { + if (!context.PushImages) + return; + + // build/push manifests + foreach (var group in context.Images.GroupBy(x => new { x.Distro, x.Variant, x.Version })) + { + var dockerImage = group.First(); + DockerManifest(context, dockerImage); + } + } + + protected override DockerBuildXImageToolsCreateSettings GetManifestSettings(DockerDepsImage dockerImage, string tag) + { + var (distro, version, variant, _) = (DockerImage)dockerImage; + var suffix = $"({distro}-{variant}-{version})"; + var settings = base.GetManifestSettings(dockerImage, tag); + settings.Annotation = + [ + .. settings.Annotation, + $"index:{Prefix}.description=GitTools build images {suffix}", + ]; + return settings; + } +} From e1d34e3fd26b43fc33e8fceaec7934835c1185bb Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 20 Jan 2025 22:15:18 +0100 Subject: [PATCH 10/11] 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) From 42dcc2b29c3fc38fbc25d432eea0649f28293184 Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 20 Jan 2025 22:30:33 +0100 Subject: [PATCH 11/11] trigger Build Images with the same branch as Build Deps --- .github/workflows/build-images.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml index 86b4ed8..2909a6c 100644 --- a/.github/workflows/build-images.yml +++ b/.github/workflows/build-images.yml @@ -18,6 +18,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + ref: ${{ github.event.workflow_run.head_branch }} - name: Cache cake frosting id: cache-cake uses: actions/cache@v4 @@ -58,6 +60,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + ref: ${{ github.event.workflow_run.head_branch }} - name: Use cached cake frosting id: cache-cake uses: actions/cache@v4 @@ -124,6 +128,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + ref: ${{ github.event.workflow_run.head_branch }} - name: Use cached cake frosting id: cache-cake uses: actions/cache@v4