diff --git a/.github/workflows/2-pre-release.yaml b/.github/workflows/2-pre-release.yaml index ddd6afe72..816cc7e66 100644 --- a/.github/workflows/2-pre-release.yaml +++ b/.github/workflows/2-pre-release.yaml @@ -23,8 +23,6 @@ jobs: permissions: packages: write steps: - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Log in to the Container registry diff --git a/.github/workflows/4-release.yaml b/.github/workflows/4-release.yaml index b4eaa34d1..54fcc9deb 100644 --- a/.github/workflows/4-release.yaml +++ b/.github/workflows/4-release.yaml @@ -14,8 +14,6 @@ jobs: permissions: packages: write steps: - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Log in to the Container registry diff --git a/src/CarbonAware.WebApi/src/Dockerfile b/src/CarbonAware.WebApi/src/Dockerfile index f01e27777..068357d4a 100644 --- a/src/CarbonAware.WebApi/src/Dockerfile +++ b/src/CarbonAware.WebApi/src/Dockerfile @@ -1,23 +1,33 @@ -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env +# For OpenAPI document +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS openapi-env WORKDIR /app +ENV DOTNET_ROLL_FORWARD LatestMajor +COPY . ./ +RUN dotnet build CarbonAware.WebApi/src/CarbonAware.WebApi.csproj -o build +WORKDIR /app/CarbonAware.WebApi/src +RUN dotnet tool restore && \ + dotnet tool run swagger tofile --output /app/build/swagger.yaml --yaml /app/build/CarbonAware.WebApi.dll v1 + +# Builder +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env +ARG TARGETARCH +WORKDIR /app ENV DOTNET_ROLL_FORWARD LatestMajor # Copy everything from source COPY . ./ # Use implicit restore to build and publish -RUN dotnet publish CarbonAware.WebApi/src/CarbonAware.WebApi.csproj -c Release -o publish -# Generate OpenAPI spec -WORKDIR /app/CarbonAware.WebApi/src -RUN dotnet tool restore && \ - mkdir -p /app/publish/wwwroot/api/v1 && \ - dotnet tool run swagger tofile --output /app/publish/wwwroot/api/v1/swagger.yaml --yaml /app/publish/CarbonAware.WebApi.dll v1 +RUN dotnet publish CarbonAware.WebApi/src/CarbonAware.WebApi.csproj -a $TARGETARCH -o publish + # Build runtime image FROM mcr.microsoft.com/dotnet/aspnet:8.0 # Install curl for health check RUN apt-get update && \ apt-get install -y --no-install-recommends curl -# Copy artifacts from build-env +# Copy artifacts WORKDIR /app COPY --from=build-env /app/publish . +RUN mkdir -p /app/wwwroot/api/v1 +COPY --from=openapi-env /app/build/swagger.yaml /app/wwwroot/api/v1/ ENTRYPOINT ["dotnet", "CarbonAware.WebApi.dll"] diff --git a/src/GSF.CarbonAware/src/GSF.CarbonAware.csproj b/src/GSF.CarbonAware/src/GSF.CarbonAware.csproj index d49c11307..6bb9fac4b 100644 --- a/src/GSF.CarbonAware/src/GSF.CarbonAware.csproj +++ b/src/GSF.CarbonAware/src/GSF.CarbonAware.csproj @@ -37,6 +37,7 @@ + @@ -57,4 +58,4 @@ - \ No newline at end of file +