From 372107c5cb2bf8675f121c1af2c400371f894ac2 Mon Sep 17 00:00:00 2001 From: Rainer Stropek Date: Sun, 22 Nov 2020 08:23:26 +0100 Subject: [PATCH] Add build process for machine --- .../workflows/{build.yml => build-api.yml} | 4 +- .github/workflows/build-machine.yml | 45 +++++++++++++++++++ .../Dockerfile | 15 +++++++ .../NetCoreMicroserviceSample.Machine.csproj | 1 + .../Startup.cs | 5 +++ .../appsettings.json | 11 ++++- 6 files changed, 78 insertions(+), 3 deletions(-) rename .github/workflows/{build.yml => build-api.yml} (95%) create mode 100644 .github/workflows/build-machine.yml create mode 100644 NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Dockerfile diff --git a/.github/workflows/build.yml b/.github/workflows/build-api.yml similarity index 95% rename from .github/workflows/build.yml rename to .github/workflows/build-api.yml index f3415ae..442f9d8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build-api.yml @@ -1,9 +1,11 @@ -name: Build Microservice Demo App +name: Build Microservice Demo App (API) on: push: branches: - main + paths-ignore: + - "NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/**" env: DOTNET_VERSION: '5.0' NODE_VERSION: '14.x' diff --git a/.github/workflows/build-machine.yml b/.github/workflows/build-machine.yml new file mode 100644 index 0000000..f8c83fa --- /dev/null +++ b/.github/workflows/build-machine.yml @@ -0,0 +1,45 @@ +name: Build Microservice Demo App (Machine) + +on: + push: + branches: + - main + paths-ignore: + - "NetCoreMicroserviceSample/NetCoreMicroserviceSample.Api/**" + - "NetCoreMicroserviceSample/NetCoreMicroserviceSample.UserInterface/**" +env: + DOTNET_VERSION: '5.0' + MACHINE_PATH: './NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine' + CONFIG: 'Debug' + +jobs: + build: + runs-on: 'ubuntu-latest' + steps: + - name: 'Checkout GitHub Action' + uses: actions/checkout@master + + - name: Setup DotNet ${{ env.DOTNET_VERSION }} Environment + uses: actions/setup-dotnet@v1 + with: + dotnet-version: ${{ env.DOTNET_VERSION }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v2 + with: + context: ${{ env.MACHINE_PATH }}/.. + file: ${{ env.MACHINE_PATH }}/Dockerfile + push: true + tags: rstropek/net-core-microservice-sample-machine:latest diff --git a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Dockerfile b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Dockerfile new file mode 100644 index 0000000..caa074d --- /dev/null +++ b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Dockerfile @@ -0,0 +1,15 @@ +FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build +WORKDIR /app + +# copy csproj and restore as distinct layers +COPY NetCoreMicroserviceSample.Machine/*.csproj NetCoreMicroserviceSample.Machine/ +RUN cd NetCoreMicroserviceSample.Machine && dotnet restore + +# copy everything else and build app +COPY . . +RUN cd NetCoreMicroserviceSample.Machine && dotnet publish -c Release -o out + +FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime +WORKDIR /app +COPY --from=build /app/NetCoreMicroserviceSample.Machine/out ./ +ENTRYPOINT ["dotnet", "NetCoreMicroserviceSample.Machine.dll"] diff --git a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/NetCoreMicroserviceSample.Machine.csproj b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/NetCoreMicroserviceSample.Machine.csproj index 27a0042..ba93dee 100644 --- a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/NetCoreMicroserviceSample.Machine.csproj +++ b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/NetCoreMicroserviceSample.Machine.csproj @@ -10,6 +10,7 @@ + diff --git a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Startup.cs b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Startup.cs index 308a571..aef1ef6 100644 --- a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Startup.cs +++ b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/Startup.cs @@ -28,6 +28,11 @@ public Startup(IConfiguration configuration) // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { + if (Configuration.GetValue("UseLetsEncrypt", false)) + { + services.AddLettuceEncrypt(); + } + string domain = $"{Configuration["Oidc:Domain"]}"; services .AddAuthentication(JwtBearerDefaults.AuthenticationScheme) diff --git a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/appsettings.json b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/appsettings.json index 31d606f..035ea5d 100644 --- a/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/appsettings.json +++ b/NetCoreMicroserviceSample/NetCoreMicroserviceSample.Machine/appsettings.json @@ -8,9 +8,16 @@ }, "Oidc": { "Domain": "https://demo.identityserver.io", - "Audience": "api", + "Audience": "api", "ClientId": "interactive.confidential", "ClientSecret": "secret" }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "UseLetsEncrypt": true, + "LettuceEncrypt": { + "AcceptTermsOfService": true, + "UseStagingServer": true, + "DomainNames": [ "machine-microservice-training.westeurope.azurecontainer.io" ], + "EmailAddress": "rainer@software-architects.at" + } }