* [UPDATE] Using netcoreapp3.1

The project orinaly was using netcoreapp3.0

* [UPDATE] Update Nuget dependencies

Blazorise 0.9.0.3
Blazorise.Bootstrap 0.9.0.3
Blazorise.Charts 0.9.0.3
Blazorise.Components 0.9.0.3 Blazorise.Icons.FontAwesome 0.9.0.3
Blazorise.Sidebar 0.9.0.3
BlazorTable 1.11.1
Microsoft.AspNetCore.Components.WebAssembly and it dependencies to 3.2.0

* [UPDATE] Adjusting launching settings

* [UPDATE] Using Microsoft.Extensions.Http as recommended

reference: https://docs.microsoft.com/en-us/aspnet/core/blazor/call-web-api?view=aspnetcore-3.1

* [ADD] Dockerfile for Admin Api

* [ADD] Dockerfile for AdminUi

[ADD] Nginx configuration for admin ui docker image

* [ADD] Dockerfile for agent

* [ADD] Docker-compose

* [ADD] Makefile

* [UPDATE] Simplifying targets

Removing redundant targets for build and publish

* [UPDATE] Applying changes after merging with master

* BUILD: Migrate all source code into src director

- Moves all of the source code into the src directory
  this is primariy to make docker composition easier as
  well as some of the other build platform work

* BUILD: Move all docker files into folder

* Removing unnecessary /aj/ prefix requirement

* BUILD: Add core docker build and test for source

* BUILD: Combine build and docker-compose

* REFACTOR: Simplify nginx configuration

Co-authored-by: Eric Maino <eric.maino@microsoft.com>
Co-authored-by: Eric Maino <ericmai@microsoft.com>
This commit is contained in:
Vinícius Batista de Souza 2020-06-16 13:05:15 -07:00 коммит произвёл GitHub
Родитель 5835b61310
Коммит 67d7a9927b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
264 изменённых файлов: 152 добавлений и 31 удалений

Просмотреть файл

@ -0,0 +1,21 @@
FROM auth-janitor as build
ARG APP_ROOT
ARG ENVIRONMENT
WORKDIR /src/${APP_ROOT}
RUN dotnet publish --no-restore -c ${ENVIRONMENT} -o /app
# # # --- Functions Runtime Image --- # # #
FROM mcr.microsoft.com/azure-functions/dotnet:3.0
ARG ENVIRONMENT
ENV Host--CORS=*
ENV FUNCTIONS_WORKER_RUNTIME=dotnet
ENV AzureWebJobsScriptRoot=/home/site/wwwroot
ENV AZURE_FUNCTION_PROXY_DISABLE_LOCAL_CALL=True
# # # --- Well Known Key and AccountName --- # # #
ENV AzureWebJobsStorage=DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://storage:10000/devstoreaccount1;QueueEndpoint=http://storage:10001/devstoreaccount1
COPY --from=build /app /home/site/wwwroot

12
.docker/UI/Dockerfile Normal file
Просмотреть файл

@ -0,0 +1,12 @@
FROM auth-janitor as build
ARG APP_ROOT
ARG ENVIRONMENT
WORKDIR /src/${APP_ROOT}
RUN dotnet publish --no-restore -c ${ENVIRONMENT} -o /app
FROM nginx:1.19.0
COPY --from=build /app/wwwroot /var/www/
COPY nginx.conf /etc/nginx/nginx.conf

17
.docker/UI/nginx.conf Normal file
Просмотреть файл

@ -0,0 +1,17 @@
events { }
http {
server {
listen 80;
index index.html;
location /api {
proxy_set_header Host $host;
proxy_pass http://api-host/api;
}
location / {
root /var/www;
try_files $uri $uri/ /index.html =404;
}
}
}

4
.dockerignore Normal file
Просмотреть файл

@ -0,0 +1,4 @@
.git
.docker
.docs
.github

7
.github/workflows/dotnetcore.yml поставляемый
Просмотреть файл

@ -8,8 +8,9 @@ on:
jobs:
build:
runs-on: ubuntu-latest
env:
src: ./src
steps:
- uses: actions/checkout@v2
@ -19,7 +20,11 @@ jobs:
dotnet-version: 3.1.200
- name: Install dependencies
run: dotnet restore
working-directory: ${{env.src}}
- name: Build
run: dotnet build --configuration Release --no-restore
working-directory: ${{env.src}}
- name: Test
run: dotnet test --no-restore --verbosity normal
working-directory: ${{env.src}}

51
docker-compose.yaml Normal file
Просмотреть файл

@ -0,0 +1,51 @@
version: '3'
services:
base:
image: auth-janitor
build:
context: ./src
dockerfile: Dockerfile
args:
ENVIRONMENT: DEBUG
storage:
image: mcr.microsoft.com/azure-storage/azurite
api-host:
build:
context: .docker/FunctionsHost
dockerfile: Dockerfile
args:
ENVIRONMENT: DEBUG
APP_ROOT: AuthJanitor.Functions.AdminApi
depends_on:
- base
- storage
environment:
STORAGE_WEB_URL: UNKNOWN_STORAGE_URL
SENDGRID_API_KEY: UNKNOWN_SENDGRID_KEY
CLIENT_ID: UNKNOWN_CLIENT_ID
CLIENT_SECRET: UNKNOWN_CLIENT_SECRET
TENANT_ID: UNKNOWN_TENANT_ID
agent-host:
build:
context: .docker/FunctionsHost
dockerfile: Dockerfile
args:
ENVIRONMENT: DEBUG
APP_ROOT: AuthJanitor.Functions.Agent
depends_on:
- base
- storage
environment:
SENDGRID_API_KEY: UNKNOWN
ui:
build:
context: .docker/UI
dockerfile: Dockerfile
args:
ENVIRONMENT: DEBUG
APP_ROOT: AuthJanitor.AspNet.AdminUi
ports:
- 8000:80
depends_on:
- base
- api-host

Просмотреть файл

@ -11,17 +11,18 @@
<BlazorWebAssemblyEnableLinking>false</BlazorWebAssemblyEnableLinking>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Blazorise" Version="0.9.0.2" />
<PackageReference Include="Blazorise.Bootstrap" Version="0.9.0.2" />
<PackageReference Include="Blazorise.Charts" Version="0.9.0.2" />
<PackageReference Include="Blazorise.Components" Version="0.9.0.2" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="0.9.0.2" />
<PackageReference Include="Blazorise.Sidebar" Version="0.9.0.2" />
<PackageReference Include="BlazorTable" Version="1.9.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.0-preview2.20160.5" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.0-preview2.20160.5" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="3.2.0-preview2.20160.5" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Blazor.HttpClient" Version="3.2.0-preview2.20160.5" />
<PackageReference Include="Blazorise" Version="0.9.0.3" />
<PackageReference Include="Blazorise.Bootstrap" Version="0.9.0.3" />
<PackageReference Include="Blazorise.Charts" Version="0.9.0.3" />
<PackageReference Include="Blazorise.Components" Version="0.9.0.3" />
<PackageReference Include="Blazorise.Icons.FontAwesome" Version="0.9.0.3" />
<PackageReference Include="Blazorise.Sidebar" Version="0.9.0.3" />
<PackageReference Include="BlazorTable" Version="1.11.1" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="3.2.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Blazor.HttpClient" Version="3.2.0-preview3.20168.3" />
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.5" />
</ItemGroup>
<ItemGroup>

Просмотреть файл

@ -20,7 +20,7 @@
<Template>
<Blazorise.Buttons Role="ButtonsRole.Toolbar">
<Blazorise.Button Color="Color.Info"
Clicked="@(() => NavigationManager.NavigateTo($"/aj/managedSecrets/{context.ObjectId}"))">
Clicked="@(() => NavigationManager.NavigateTo($"/managedSecrets/{context.ObjectId}"))">
<Icon Name="FontAwesomeIcons.Eye" Class="text-light" />
</Blazorise.Button>
<Blazorise.Button Color="Color.Danger" Clicked="@(() => { SelectedValue = context; DeleteModalShowing = true; })">

Просмотреть файл

@ -20,7 +20,7 @@
<Template>
<Blazorise.Buttons Role="ButtonsRole.Toolbar">
<Blazorise.Button Color="Color.Info"
Clicked="@(() => NavigationManager.NavigateTo($"/aj/rekeyingTasks/{context.ObjectId}"))">
Clicked="@(() => NavigationManager.NavigateTo($"/rekeyingTasks/{context.ObjectId}"))">
<Icon Name="FontAwesomeIcons.Eye" Class="text-light" />
</Blazorise.Button>
<Blazorise.Button Color="Color.Success" Clicked="@(() => { SelectedValue = context; ApproveModalShowing = true; })">

Просмотреть файл

@ -20,7 +20,7 @@
<Template>
<Blazorise.Buttons Role="ButtonsRole.Toolbar">
<Blazorise.Button Color="Color.Info"
Clicked="@(() => NavigationManager.NavigateTo($"/aj/resources/{context.ObjectId}"))">
Clicked="@(() => NavigationManager.NavigateTo($"/resources/{context.ObjectId}"))">
<Icon Name="FontAwesomeIcons.Eye" Class="text-light" />
</Blazorise.Button>
<Blazorise.Button Color="Color.Danger" Clicked="@(() => { SelectedValue = context; DeleteModalShowing = true; })">

Просмотреть файл

@ -6,7 +6,7 @@ using Blazorise.Bootstrap;
using Blazorise.Icons.FontAwesome;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.DependencyInjection;
using System.Net.Http;
using System;
using System.Threading.Tasks;
namespace AuthJanitor.UI
@ -21,10 +21,8 @@ namespace AuthJanitor.UI
.AddBootstrapProviders()
.AddFontAwesomeIcons();
// Create both HttpClient and AuthJanitorHttpClient -- the AJ client from the HttpClient
// ... this gets us the BaseAddress in the AJ-customized HttpClient
builder.Services.AddBaseAddressHttpClient();
builder.Services.AddSingleton((s) => new AuthJanitorHttpClient(s.GetRequiredService<HttpClient>()));
builder.Services.AddHttpClient<AuthJanitorHttpClient>(
client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress));
builder.RootComponents.Add<App>("app");

Просмотреть файл

@ -3,7 +3,7 @@
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:16010/",
"applicationUrl": "http://localhost:16000/",
"sslPort": 0
}
},
@ -11,10 +11,11 @@
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "http://localhost:16000/aj/",
"launchUrl": "http://localhost:16000/",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
},
"AuthJanitor.AspNet.AdminUi": {
"commandName": "Project",
@ -22,7 +23,8 @@
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5000"
"applicationUrl": "http://localhost:16000/",
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
}
}
}

Просмотреть файл

@ -9,31 +9,31 @@
<BarMenu>
<BarStart>
<BarItem>
<BarLink To="/aj/dashboard">
<BarLink To="/dashboard">
<Icon Name="FontAwesomeIcons.TachometerAlt" Margin="Margin.Is1.FromRight" />
Dashboard
</BarLink>
</BarItem>
<BarItem>
<BarLink To="/aj/providers">
<BarLink To="/providers">
<Icon Name="FontAwesomeIcons.Plug" Margin="Margin.Is1.FromRight" />
Providers
</BarLink>
</BarItem>
<BarItem>
<BarLink To="/aj/resources">
<BarLink To="/resources">
<Icon Name="FontAwesomeIcons.Database" Margin="Margin.Is1.FromRight" />
Resources
</BarLink>
</BarItem>
<BarItem>
<BarLink To="/aj/managedSecrets">
<BarLink To="/managedSecrets">
<Icon Name="FontAwesomeIcons.Key" Margin="Margin.Is1.FromRight" />
Managed Secrets
</BarLink>
</BarItem>
<BarItem>
<BarLink To="/aj/rekeyingTasks">
<BarLink To="/rekeyingTasks">
<Icon Name="FontAwesomeIcons.Tasks" Margin="Margin.Is1.FromRight" />
Rekeying Tasks
</BarLink>

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 20 KiB

После

Ширина:  |  Высота:  |  Размер: 20 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 27 KiB

После

Ширина:  |  Высота:  |  Размер: 27 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 3.4 KiB

После

Ширина:  |  Высота:  |  Размер: 3.4 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 4.9 KiB

После

Ширина:  |  Высота:  |  Размер: 4.9 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 8.0 KiB

После

Ширина:  |  Высота:  |  Размер: 8.0 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 12 KiB

После

Ширина:  |  Высота:  |  Размер: 12 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 14 KiB

После

Ширина:  |  Высота:  |  Размер: 14 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 15 KiB

После

Ширина:  |  Высота:  |  Размер: 15 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 20 KiB

После

Ширина:  |  Высота:  |  Размер: 20 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 21 KiB

После

Ширина:  |  Высота:  |  Размер: 21 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 27 KiB

После

Ширина:  |  Высота:  |  Размер: 27 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 6.0 KiB

После

Ширина:  |  Высота:  |  Размер: 6.0 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 6.3 KiB

После

Ширина:  |  Высота:  |  Размер: 6.3 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 8.0 KiB

После

Ширина:  |  Высота:  |  Размер: 8.0 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 8.7 KiB

После

Ширина:  |  Высота:  |  Размер: 8.7 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 28 KiB

После

Ширина:  |  Высота:  |  Размер: 28 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 28 KiB

После

Ширина:  |  Высота:  |  Размер: 28 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 67 KiB

После

Ширина:  |  Высота:  |  Размер: 67 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.7 KiB

После

Ширина:  |  Высота:  |  Размер: 1.7 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 3.0 KiB

После

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 12 KiB

После

Ширина:  |  Высота:  |  Размер: 12 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.1 KiB

После

Ширина:  |  Высота:  |  Размер: 1.1 KiB

Просмотреть файл

@ -7,7 +7,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>AuthJanitor Administration Tool</title>
<base href="/aj/" />
<base href="/" />
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 20 KiB

После

Ширина:  |  Высота:  |  Размер: 20 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 21 KiB

После

Ширина:  |  Высота:  |  Размер: 21 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 62 KiB

После

Ширина:  |  Высота:  |  Размер: 62 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 7.8 KiB

После

Ширина:  |  Высота:  |  Размер: 7.8 KiB

Просмотреть файл

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше