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) {