From b4bd0e184be034871ad75719b7e7aae7adb6ebbc Mon Sep 17 00:00:00 2001 From: daniel-hbn Date: Fri, 22 Aug 2025 11:28:27 +0200 Subject: [PATCH] Pipeline changes --- .gitea/workflows/development-build.yaml | 89 +++++++++++++++++-------- 1 file changed, 62 insertions(+), 27 deletions(-) diff --git a/.gitea/workflows/development-build.yaml b/.gitea/workflows/development-build.yaml index d21fa4e..da76a3d 100644 --- a/.gitea/workflows/development-build.yaml +++ b/.gitea/workflows/development-build.yaml @@ -5,45 +5,80 @@ on: branches: - development +env: + DOTNET_VERSION: '8.0.x' + DOCKER_IMAGE_NAME: 'watcher-server' + REGISTRY_URL: 'git.triggermeelmo.com/watcher' + DOCKER_PLATFORMS: 'linux/amd64,linux/arm64' + jobs: - build: + build-and-test: runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 + - name: Checkout code + uses: actions/checkout@v3 - - name: Setup .NET 8 SDK - uses: actions/setup-dotnet@v3 - with: - dotnet-version: '8.0.x' + - name: Setup .NET SDK + uses: actions/setup-dotnet@v3 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} - - name: Restore dependencies - run: dotnet restore + - name: Cache NuGet packages + uses: actions/cache@v3 + with: + path: ~/.nuget/packages + key: nuget-${{ runner.os }}-${{ hashFiles('**/*.csproj') }} + restore-keys: | + nuget-${{ runner.os }}- - - name: Build - run: dotnet build --configuration Release --no-restore + - name: Restore dependencies + run: dotnet restore - - name: Test (optional) - run: dotnet test --no-build --verbosity normal + - name: Build + run: dotnet build --configuration Release --no-restore - - name: Publish - run: dotnet publish -c Release -o out + - name: Test + run: dotnet test --no-build --verbosity normal + continue-on-error: true - - name: Build Docker Image - run: docker build -t watcher-server:development . + - name: Publish + run: dotnet publish -c Release -o out - - name: Login to Gitea Container Registry - run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login git.triggermeelmo.com -u ${{ secrets.DOCKER_USERNAME }} --password-stdin + docker-build-and-push: + runs-on: ubuntu-latest + needs: build-and-test + steps: + - name: Checkout code + uses: actions/checkout@v3 - - name: Push development-image - run: docker push git.triggermeelmo.com/watcher/watcher-server:development + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v2 - - name: Tag image Commit SHA - run: docker tag watcher:development git.triggermeelmo.com/watcher/watcher-server:${{ github.sha }} + - name: Cache Docker layers + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache + key: docker-${{ github.sha }} + restore-keys: | + docker- - - name: Push sha-image - run: docker push git.triggermeelmo.com/watcher/watcher-server:${{ github.sha }} + - name: Login to Gitea Container Registry + uses: docker/login-action@v2 + with: + registry: git.triggermeelmo.com + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: Build and Push Multi-Arch Docker Image + run: | + docker buildx build \ + --platform ${{ env.DOCKER_PLATFORMS }} \ + --cache-from=type=local,src=/tmp/.buildx-cache \ + --cache-to=type=local,dest=/tmp/.buildx-cache-new,mode=max \ + -t ${{ env.REGISTRY_URL }}/${{ env.DOCKER_IMAGE_NAME }}:development \ + -t ${{ env.REGISTRY_URL }}/${{ env.DOCKER_IMAGE_NAME }}:${{ github.sha }} \ + --push . - \ No newline at end of file + # Move new cache + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache