diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 0107f407..b44dbd14 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -153,14 +153,6 @@ jobs: path: src/FrameworkTests/MonoConsole/bin/${{ github.event_name != 'workflow_dispatch' && 'Debug' || inputs.build_configuration }} if-no-files-found: error retention-days: 1 - - name: Publish test project AotConsole - uses: actions/upload-artifact@main - if: success() && (github.event_name != 'workflow_dispatch' && true || inputs.run_tests) == true - with: - name: AotConsole - path: src/FrameworkTests/AotConsole/bin/${{ github.event_name != 'workflow_dispatch' && 'Debug' || inputs.build_configuration }} - if-no-files-found: error - retention-days: 1 test: name: Test (${{ matrix.os }}) needs: build @@ -240,12 +232,12 @@ jobs: if-no-files-found: error retention-days: 1 docker: - name: Test (${{ matrix.os }}; docker) + name: Docker (${{ matrix.os }}) needs: build strategy: fail-fast: false matrix: - os: [ubuntu-latest] + os: [windows-latest, ubuntu-latest] runs-on: ${{ matrix.os }} if: success() && (github.event_name != 'workflow_dispatch' && true || inputs.run_docker) == true steps: @@ -254,33 +246,38 @@ jobs: with: fetch-depth: 0 sparse-checkout: | - src/FrameworkTests/AotConsole/Dockerfiles + src/PDFtoImage + src/FrameworkTests/AotConsole src/Tests/Dockerfiles - - name: Download test project AotConsole - uses: actions/download-artifact@main - with: - name: AotConsole - path: AotConsole - - name: docker build aotconsole - shell: pwsh - run: docker build -t aotconsole -f src/FrameworkTests/AotConsole/Dockerfiles/Dockerfile . - - name: docker run aotconsole - shell: pwsh - run: docker run -t aotconsole net8.0/PDFtoImage.FrameworkTests.AotConsole.dll + - name: aotconsole linux + if: runner.os == 'Linux' && (success() || failure()) + run: docker build -t aotconsole -f src/FrameworkTests/AotConsole/Dockerfiles/linux . && docker run --rm -t aotconsole + - name: aotconsole linux-chiseled + if: runner.os == 'Linux' && (success() || failure()) + run: docker build -t aotconsole -f src/FrameworkTests/AotConsole/Dockerfiles/linux-chiseled . && docker run --rm -t aotconsole + - name: aotconsole linux-aot + if: runner.os == 'Linux' && (success() || failure()) + run: docker build -t aotconsole -f src/FrameworkTests/AotConsole/Dockerfiles/linux-aot . && docker run --rm -t aotconsole + - name: aotconsole linux-aot-chiseled + if: runner.os == 'Linux' && (success() || failure()) + run: docker build -t aotconsole -f src/FrameworkTests/AotConsole/Dockerfiles/linux-aot-chiseled . && docker run --rm -t aotconsole + - name: aotconsole windows + if: runner.os == 'Windows' && (success() || failure()) + run: docker build -t aotconsole -f src/FrameworkTests/AotConsole/Dockerfiles/windows . && docker run --rm -t aotconsole + - name: aotconsole windows-aot + if: runner.os == 'Windows' && (success() || failure()) + run: docker build -t aotconsole -f src/FrameworkTests/AotConsole/Dockerfiles/windows-aot . && docker run --rm -t aotconsole - name: Download test assemblies if: success() || failure() uses: actions/download-artifact@main with: name: Test assemblies - - name: docker build test-client - id: build-test - shell: pwsh - if: success() || failure() - run: docker build -t test-client -f src/Tests/Dockerfiles/Dockerfile . - - name: docker run test-client - shell: pwsh - if: steps.build-test.conclusion == 'success' - run: docker run --rm --mount type=bind,source=${{ github.workspace }},target=/app/TestResults -t test-client net8.0/PDFtoImage.Tests.dll + - name: test-client linux + if: runner.os == 'Linux' && (success() || failure()) + run: docker build -t test-client -f src/Tests/Dockerfiles/linux . && docker run --rm --mount type=bind,source=${{ github.workspace }},target=/app/TestResults -t test-client net8.0/PDFtoImage.Tests.dll + - name: test-client windows + if: runner.os == 'Windows' && (success() || failure()) + run: docker build -t test-client -f src/Tests/Dockerfiles/windows . && docker run --rm --mount type=bind,source=${{ github.workspace }},target=/app/TestResults -t test-client net8.0/PDFtoImage.Tests.dll - name: Upload test results if: success() || failure() uses: actions/upload-artifact@main diff --git a/src/FrameworkTests/AotConsole/AotConsole.csproj b/src/FrameworkTests/AotConsole/AotConsole.csproj index d421abaf..bcc8c6e8 100644 --- a/src/FrameworkTests/AotConsole/AotConsole.csproj +++ b/src/FrameworkTests/AotConsole/AotConsole.csproj @@ -2,6 +2,7 @@ Exe net8.0 + win-x86;win-x64;win-arm64;linux-x64;linux-arm64;osx-x64;osx-arm64 enable enable PDFtoImage.FrameworkTests.AotConsole diff --git a/src/FrameworkTests/AotConsole/Dockerfiles/Dockerfile b/src/FrameworkTests/AotConsole/Dockerfiles/Dockerfile deleted file mode 100644 index c17a02e4..00000000 --- a/src/FrameworkTests/AotConsole/Dockerfiles/Dockerfile +++ /dev/null @@ -1,4 +0,0 @@ -FROM mcr.microsoft.com/dotnet/runtime:8.0 -WORKDIR /app -COPY ["AotConsole", "."] -ENTRYPOINT ["dotnet"] \ No newline at end of file diff --git a/src/FrameworkTests/AotConsole/Dockerfiles/linux b/src/FrameworkTests/AotConsole/Dockerfiles/linux new file mode 100644 index 00000000..8c3c8c63 --- /dev/null +++ b/src/FrameworkTests/AotConsole/Dockerfiles/linux @@ -0,0 +1,18 @@ +FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base +WORKDIR /app + +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +ARG BUILD_CONFIGURATION=Release +ARG TARGET_FRAMEWORK=net8.0 +WORKDIR /src +COPY ["src/FrameworkTests/AotConsole/AotConsole.csproj", "src/FrameworkTests/AotConsole/AotConsole.csproj"] +COPY ["src/PDFtoImage", "src/PDFtoImage"] +RUN dotnet restore "./src/FrameworkTests/AotConsole/AotConsole.csproj" /p:TargetFramework=$TARGET_FRAMEWORK +COPY . . +WORKDIR "/src/src" +RUN dotnet build "./FrameworkTests/AotConsole/AotConsole.csproj" -c $BUILD_CONFIGURATION -o /app/build --no-restore + +FROM base AS final +WORKDIR /app +COPY --from=build /app/build . +ENTRYPOINT ["dotnet", "PDFtoImage.FrameworkTests.AotConsole.dll"] \ No newline at end of file diff --git a/src/FrameworkTests/AotConsole/Dockerfiles/linux-aot b/src/FrameworkTests/AotConsole/Dockerfiles/linux-aot new file mode 100644 index 00000000..83988adf --- /dev/null +++ b/src/FrameworkTests/AotConsole/Dockerfiles/linux-aot @@ -0,0 +1,25 @@ +FROM mcr.microsoft.com/dotnet/runtime-deps:8.0 AS base +WORKDIR /app + +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +ARG BUILD_CONFIGURATION=Release +ARG TARGET_FRAMEWORK=net8.0 +WORKDIR /src +COPY ["src/FrameworkTests/AotConsole/AotConsole.csproj", "src/FrameworkTests/AotConsole/AotConsole.csproj"] +COPY ["src/PDFtoImage", "src/PDFtoImage"] +RUN dotnet restore "./src/FrameworkTests/AotConsole/AotConsole.csproj" /p:TargetFramework=$TARGET_FRAMEWORK +COPY . . +WORKDIR "/src/src" +RUN dotnet build "./FrameworkTests/AotConsole/AotConsole.csproj" -c $BUILD_CONFIGURATION -o /app/build --no-restore + +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN apt update && apt install -y \ + clang \ + zlib1g-dev +RUN dotnet publish "./FrameworkTests/AotConsole/AotConsole.csproj" -c $BUILD_CONFIGURATION -o /app/publish --no-restore + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["./PDFtoImage.FrameworkTests.AotConsole"] \ No newline at end of file diff --git a/src/FrameworkTests/AotConsole/Dockerfiles/linux-aot-chiseled b/src/FrameworkTests/AotConsole/Dockerfiles/linux-aot-chiseled new file mode 100644 index 00000000..86b0e56d --- /dev/null +++ b/src/FrameworkTests/AotConsole/Dockerfiles/linux-aot-chiseled @@ -0,0 +1,25 @@ +FROM mcr.microsoft.com/dotnet/runtime-deps:8.0-noble-chiseled AS base +WORKDIR /app + +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +ARG BUILD_CONFIGURATION=Release +ARG TARGET_FRAMEWORK=net8.0 +WORKDIR /src +COPY ["src/FrameworkTests/AotConsole/AotConsole.csproj", "src/FrameworkTests/AotConsole/AotConsole.csproj"] +COPY ["src/PDFtoImage", "src/PDFtoImage"] +RUN dotnet restore "./src/FrameworkTests/AotConsole/AotConsole.csproj" /p:TargetFramework=$TARGET_FRAMEWORK +COPY . . +WORKDIR "/src/src" +RUN dotnet build "./FrameworkTests/AotConsole/AotConsole.csproj" -c $BUILD_CONFIGURATION -o /app/build --no-restore + +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN apt update && apt install -y \ + clang \ + zlib1g-dev +RUN dotnet publish "./FrameworkTests/AotConsole/AotConsole.csproj" -c $BUILD_CONFIGURATION -o /app/publish --no-restore + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["./PDFtoImage.FrameworkTests.AotConsole"] \ No newline at end of file diff --git a/src/FrameworkTests/AotConsole/Dockerfiles/linux-chiseled b/src/FrameworkTests/AotConsole/Dockerfiles/linux-chiseled new file mode 100644 index 00000000..d28a031c --- /dev/null +++ b/src/FrameworkTests/AotConsole/Dockerfiles/linux-chiseled @@ -0,0 +1,18 @@ +FROM mcr.microsoft.com/dotnet/runtime:8.0-noble-chiseled AS base +WORKDIR /app + +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +ARG BUILD_CONFIGURATION=Release +ARG TARGET_FRAMEWORK=net8.0 +WORKDIR /src +COPY ["src/FrameworkTests/AotConsole/AotConsole.csproj", "src/FrameworkTests/AotConsole/AotConsole.csproj"] +COPY ["src/PDFtoImage", "src/PDFtoImage"] +RUN dotnet restore "./src/FrameworkTests/AotConsole/AotConsole.csproj" /p:TargetFramework=$TARGET_FRAMEWORK +COPY . . +WORKDIR "/src/src" +RUN dotnet build "./FrameworkTests/AotConsole/AotConsole.csproj" -c $BUILD_CONFIGURATION -o /app/build --no-restore + +FROM base AS final +WORKDIR /app +COPY --from=build /app/build . +ENTRYPOINT ["dotnet", "PDFtoImage.FrameworkTests.AotConsole.dll"] \ No newline at end of file diff --git a/src/FrameworkTests/AotConsole/Dockerfiles/windows b/src/FrameworkTests/AotConsole/Dockerfiles/windows new file mode 100644 index 00000000..240fe5f9 --- /dev/null +++ b/src/FrameworkTests/AotConsole/Dockerfiles/windows @@ -0,0 +1,18 @@ +FROM mcr.microsoft.com/dotnet/runtime:8.0-nanoserver-ltsc2022 AS base +WORKDIR /app + +FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build +ARG BUILD_CONFIGURATION=Release +ARG TARGET_FRAMEWORK=net8.0 +WORKDIR /src +COPY ["src/FrameworkTests/AotConsole/AotConsole.csproj", "src/FrameworkTests/AotConsole/AotConsole.csproj"] +COPY ["src/PDFtoImage", "src/PDFtoImage"] +RUN dotnet restore "./src/FrameworkTests/AotConsole/AotConsole.csproj" /p:TargetFramework=$TARGET_FRAMEWORK +COPY . . +WORKDIR "/src/src" +RUN dotnet build "./FrameworkTests/AotConsole/AotConsole.csproj" -c $BUILD_CONFIGURATION -o /app/build --no-restore + +FROM base AS final +WORKDIR /app +COPY --from=build /app/build . +ENTRYPOINT ["dotnet", "PDFtoImage.FrameworkTests.AotConsole.dll"] \ No newline at end of file diff --git a/src/FrameworkTests/AotConsole/Dockerfiles/windows-aot b/src/FrameworkTests/AotConsole/Dockerfiles/windows-aot new file mode 100644 index 00000000..f29350e3 --- /dev/null +++ b/src/FrameworkTests/AotConsole/Dockerfiles/windows-aot @@ -0,0 +1,22 @@ +FROM mcr.microsoft.com/dotnet/runtime:8.0-nanoserver-ltsc2022 AS base +WORKDIR /app + +FROM mcr.microsoft.com/dotnet/sdk:8.0-windowsservercore-ltsc2022 AS build +ARG BUILD_CONFIGURATION=Release +ARG TARGET_FRAMEWORK=net8.0 +WORKDIR /src +COPY ["src/FrameworkTests/AotConsole/AotConsole.csproj", "src/FrameworkTests/AotConsole/AotConsole.csproj"] +COPY ["src/PDFtoImage", "src/PDFtoImage"] +RUN dotnet restore "./src/FrameworkTests/AotConsole/AotConsole.csproj" /p:TargetFramework=$TARGET_FRAMEWORK +COPY . . +WORKDIR "/src/src" +RUN dotnet build "./FrameworkTests/AotConsole/AotConsole.csproj" -c $BUILD_CONFIGURATION -o /app/build --no-restore + +FROM build AS publish +ARG BUILD_CONFIGURATION=Release +RUN dotnet publish "./FrameworkTests/AotConsole/AotConsole.csproj" -c $BUILD_CONFIGURATION -o /app/publish --no-restore + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["PDFtoImage.FrameworkTests.AotConsole.exe"] \ No newline at end of file diff --git a/src/Tests/Dockerfiles/Dockerfile b/src/Tests/Dockerfiles/linux similarity index 100% rename from src/Tests/Dockerfiles/Dockerfile rename to src/Tests/Dockerfiles/linux diff --git a/src/Tests/Dockerfiles/windows b/src/Tests/Dockerfiles/windows new file mode 100644 index 00000000..5d5e8cc9 --- /dev/null +++ b/src/Tests/Dockerfiles/windows @@ -0,0 +1,4 @@ +FROM mcr.microsoft.com/dotnet/sdk:8.0-nanoserver-ltsc2022 +WORKDIR /app +COPY . . +ENTRYPOINT ["dotnet", "test", "/logger:console;verbosity=detailed", "/logger:trx;verbosity=detailed"] \ No newline at end of file