Compare commits
	
		
			12 Commits
		
	
	
		
			master
			...
			lab5-hiatu
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e65bfa501a | |||
| 1d5157b635 | |||
| 99e91324bc | |||
|  | 6d2533e53d | ||
|  | fb36a7d13b | ||
|  | f1d8b95744 | ||
|  | 3fa3ef13b2 | ||
|  | dd189fc094 | ||
|  | e341fc14b3 | ||
|  | 2c50dc75eb | ||
|  | 4df4437487 | ||
|  | bee604d68e | 
							
								
								
									
										6
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,7 +1,11 @@ | |||||||
| src/MapClient/node_modules | src/MapClient/node_modules | ||||||
|  | src/MapClient/dist | ||||||
| src/CommunicationControl/.idea | src/CommunicationControl/.idea | ||||||
| src/CommunicationControl/.vs | src/CommunicationControl/.vs | ||||||
| bin | bin | ||||||
| obj | obj | ||||||
| Logs | Logs | ||||||
| .vscode | .vscode | ||||||
|  | build | ||||||
|  | src/CommunicationControl/DevOpsProject.sln.DotSettings.user | ||||||
|  | src/CommunicationControl/DevOpsProject.sln.DotSettings.user | ||||||
|  | |||||||
							
								
								
									
										70
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,70 @@ | |||||||
|  | # dotnet build environment | ||||||
|  | FROM alpine:latest as dotnet | ||||||
|  | WORKDIR / | ||||||
|  | 
 | ||||||
|  | RUN apk add dotnet8-sdk git | ||||||
|  | RUN git clone https://gitlab.com/kzotkin/hiveemulator | ||||||
|  | 
 | ||||||
|  | WORKDIR /hiveemulator/src/CommunicationControl/ | ||||||
|  | RUN dotnet build DevOpsProject/DevOpsProject.CommunicationControl.API.csproj | ||||||
|  | RUN dotnet build DevOpsProject.HiveMind.API/DevOpsProject.HiveMind.API.csproj | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # nodejs build environment | ||||||
|  | #FROM alpine:latest as nodejs | ||||||
|  | #WORKDIR / | ||||||
|  | 
 | ||||||
|  | #RUN apk add git npm | ||||||
|  | #RUN git clone https://gitlab.com/kzotkin/hiveemulator | ||||||
|  | 
 | ||||||
|  | #WORKDIR /hiveemulator/src/MapClient/ | ||||||
|  | #RUN npm install | ||||||
|  | #RUN npm run build | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # production environment | ||||||
|  | FROM alpine:latest | ||||||
|  | WORKDIR / | ||||||
|  | 
 | ||||||
|  | #RUN apk add dotnet8-sdk redis openrc lighttpd npm | ||||||
|  | #RUN apk add git dotnet8-sdk redis openrc npm | ||||||
|  | #RUN apk add git aspnetcore8-runtime redis openrc npm | ||||||
|  | RUN apk add aspnetcore8-runtime redis openrc npm | ||||||
|  | 
 | ||||||
|  | #RUN git clone https://gitlab.com/kzotkin/hiveemulator | ||||||
|  | #COPY --from=nodejs /hiveemulator/ /hiveemulator/ | ||||||
|  | COPY --from=dotnet /hiveemulator/ /hiveemulator/ | ||||||
|  | #COPY --from=nodejs /hiveemulator/src/MapClient/dist/* /var/www/localhost/htdocs/ | ||||||
|  | 
 | ||||||
|  | #RUN mkdir /hive-cc | ||||||
|  | #COPY --from=0 /hiveemulator/src/CommunicationControl/DevOpsProject/* /hive-cc/ | ||||||
|  | #COPY --from=dotnet /hiveemulator/src/CommunicationControl/DevOpsProject/* /hiveemulator/src/CommunicationControl/DevOpsProject/ | ||||||
|  | #COPY --from=dotnet /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/* /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/ | ||||||
|  | 
 | ||||||
|  | #RUN mkdir /hive-hm | ||||||
|  | #COPY --from=0 /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/* /hive-hm/ | ||||||
|  | 
 | ||||||
|  | WORKDIR /hiveemulator/src/MapClient/ | ||||||
|  | RUN npm install | ||||||
|  | RUN sed -i 's/localhost/10\.1\.1\.2/' public/config.json | ||||||
|  | 
 | ||||||
|  | WORKDIR / | ||||||
|  | COPY ./daemon-files/hive-cc /etc/init.d/hive-cc | ||||||
|  | COPY ./daemon-files/hive-hm /etc/init.d/hive-hm | ||||||
|  | COPY ./daemon-files/hive-map /etc/init.d/hive-map | ||||||
|  | RUN chmod u+x /etc/init.d/hive-hm /etc/init.d/hive-cc /etc/init.d/hive-map | ||||||
|  | 
 | ||||||
|  | #RUN mkdir /etc/rulevels/{stage-redis,stage-cc,stage-hm,stage-map} | ||||||
|  | 
 | ||||||
|  | #RUN rc-update add redis default | ||||||
|  | #RUN rc-update add hive-hm default | ||||||
|  | #RUN rc-update add hive-cc default | ||||||
|  | #RUN rc-update add hive-map default | ||||||
|  | 
 | ||||||
|  | CMD sh -c "openrc default ; \ | ||||||
|  | 	rc-service redis start ; \ | ||||||
|  | 	rc-service hive-cc start ; \ | ||||||
|  | 	rc-service hive-hm start ; \ | ||||||
|  | 	rc-service hive-map start ; \ | ||||||
|  | 	sleep 96h; \ | ||||||
|  | 	exec sh" | ||||||
							
								
								
									
										26
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								README.md
									
									
									
									
									
								
							| @ -8,6 +8,11 @@ | |||||||
|     - [Communiction Control](#communiction-control) |     - [Communiction Control](#communiction-control) | ||||||
|     - [Hive Mind](#hive-mind) |     - [Hive Mind](#hive-mind) | ||||||
|   - [Usage](#usage) |   - [Usage](#usage) | ||||||
|  |   - [Build](#build) | ||||||
|  |     - [Map Clinet](#map-clinet) | ||||||
|  |     - [Communiction Control](#communiction-control-1) | ||||||
|  |     - [Hive Mind](#hive-mind-1) | ||||||
|  |     - [Communiction Control](#communiction-control-2) | ||||||
| 
 | 
 | ||||||
| ## About | ## About | ||||||
| This is a demo project used in the Uni DevOps course | This is a demo project used in the Uni DevOps course | ||||||
| @ -39,7 +44,7 @@ dotnet run  --project DevOpsProject/DevOpsProject.CommunicationControl.API.cspro | |||||||
| ```bash | ```bash | ||||||
| cd src/CommunicationControl | cd src/CommunicationControl | ||||||
| 
 | 
 | ||||||
| dotnet run  --project DevOpsProject/DevOpsProject.HiveMind.API.csproj | dotnet run  --project DevOpsProject.HiveMind.API/DevOpsProject.HiveMind.API.csproj | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -53,4 +58,21 @@ dotnet run  --project DevOpsProject/DevOpsProject.HiveMind.API.csproj | |||||||
|         get [hiveKey] |         get [hiveKey] | ||||||
|     ``` |     ``` | ||||||
| 
 | 
 | ||||||
| 3. Communication Control Swagger: http://localhost:8080 | 3. Communication Control Swagger: http://localhost:8080 | ||||||
|  | 
 | ||||||
|  | ## Build | ||||||
|  | 
 | ||||||
|  | ### Map Clinet | ||||||
|  | cd src/MapClient | ||||||
|  | 
 | ||||||
|  | npm install | ||||||
|  | npm run build | ||||||
|  | 
 | ||||||
|  | ### Communiction Control | ||||||
|  | cd src/CommunicationControl | ||||||
|  | dotnet publish -p:PublishProfile=FolderProfile --artifacts-path=build/CommunicationControl DevOpsProject/DevOpsProject.CommunicationControl.API.csproj  | ||||||
|  | 
 | ||||||
|  | ### Hive Mind | ||||||
|  | ### Communiction Control | ||||||
|  | cd src/CommunicationControl | ||||||
|  | dotnet publish -p:PublishProfile=FolderProfile --artifacts-path=build/HiveMind DevOpsProject/DevOpsProject.HiveMind.API.csproj | ||||||
							
								
								
									
										14
									
								
								daemon-files/hive-cc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								daemon-files/hive-cc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | #!/sbin/openrc-run | ||||||
|  | 
 | ||||||
|  | command="./DevOpsProject.CommunicationControl.API" | ||||||
|  | command_args="" | ||||||
|  | pidfile="/run/hive-cc.pid" | ||||||
|  | supervisor="supervise-daemon" | ||||||
|  | 
 | ||||||
|  | start_pre() { | ||||||
|  | 	cd /hiveemulator/src/CommunicationControl/DevOpsProject/bin/Debug/net8.0/ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | depend() { | ||||||
|  | 	need redis | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								daemon-files/hive-hm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								daemon-files/hive-hm
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | #!/sbin/openrc-run | ||||||
|  | 
 | ||||||
|  | command="./DevOpsProject.HiveMind.API" | ||||||
|  | command_args="" | ||||||
|  | pidfile="/run/hive-hm.pid" | ||||||
|  | supervisor="supervise-daemon" | ||||||
|  | 
 | ||||||
|  | start_pre() { | ||||||
|  | 	cd /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/bin/Debug/net8.0/ | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | depend() { | ||||||
|  | 	need hive-cc | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								daemon-files/hive-map
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								daemon-files/hive-map
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | #!/sbin/openrc-run | ||||||
|  | 
 | ||||||
|  | command="npm" | ||||||
|  | command_args="run dev" | ||||||
|  | pidfile="/run/hive-map.pid" | ||||||
|  | supervisor="supervise-daemon" | ||||||
|  | 
 | ||||||
|  | depend() { | ||||||
|  | 	need hive-cc | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | start_pre() { | ||||||
|  | 	cd /hiveemulator/src/MapClient/ | ||||||
|  | } | ||||||
| @ -57,11 +57,8 @@ using (var scope = app.Services.CreateScope()) | |||||||
| app.UseExceptionHandler(); | app.UseExceptionHandler(); | ||||||
| 
 | 
 | ||||||
| // Configure the HTTP request pipeline. | // Configure the HTTP request pipeline. | ||||||
| if (app.Environment.IsDevelopment()) | app.UseSwagger(); | ||||||
| { | app.UseSwaggerUI(); | ||||||
|     app.UseSwagger(); |  | ||||||
|     app.UseSwaggerUI(); |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| app.UseCors(corsPolicyName); | app.UseCors(corsPolicyName); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,2 +1,4 @@ | |||||||
| <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> | <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> | ||||||
| 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACorsPolicyBuilder_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FLibrary_003FApplication_0020Support_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff2b268c5e2cd9f1f915a357be6a8df853a5e36d3641a02dea9c31d924ca17a1_003FCorsPolicyBuilder_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary> | 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AConnectionMultiplexer_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FLibrary_003FApplication_0020Support_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F777330fcb5805c27956d104ff76bca3d9647f0def3f139feed35c0ef42c745_003FConnectionMultiplexer_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> | ||||||
|  | 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACorsPolicyBuilder_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FLibrary_003FApplication_0020Support_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff2b268c5e2cd9f1f915a357be6a8df853a5e36d3641a02dea9c31d924ca17a1_003FCorsPolicyBuilder_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> | ||||||
|  | 	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AExceptionDispatchInfo_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003F_002E_002E_003FLibrary_003FApplication_0020Support_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fbf9021a960b74107a7e141aa06bc9d8a0a53c929178c2fb95b1597be8af8dc_003FExceptionDispatchInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary> | ||||||
| @ -19,6 +19,8 @@ internal class Program | |||||||
|         // TODO: consider this approach |         // TODO: consider this approach | ||||||
|         builder.Services.AddJsonControllerOptionsConfiguration(); |         builder.Services.AddJsonControllerOptionsConfiguration(); | ||||||
| 
 | 
 | ||||||
|  |         string basePath = builder.Configuration.GetValue<string>("BasePath") ?? string.Empty; | ||||||
|  |          | ||||||
|         builder.Services.AddEndpointsApiExplorer(); |         builder.Services.AddEndpointsApiExplorer(); | ||||||
|         builder.Services.AddSwaggerGen(c => |         builder.Services.AddSwaggerGen(c => | ||||||
|         { |         { | ||||||
| @ -41,15 +43,26 @@ internal class Program | |||||||
|         builder.Services.AddProblemDetails(); |         builder.Services.AddProblemDetails(); | ||||||
| 
 | 
 | ||||||
|         var app = builder.Build(); |         var app = builder.Build(); | ||||||
| 
 |         if (!string.IsNullOrEmpty(basePath)) | ||||||
|  |         { | ||||||
|  |             var pathBase = new PathString(basePath); | ||||||
|  |             app.UsePathBase(pathBase); | ||||||
|  |             app.Use(async (context, next) => | ||||||
|  |             { | ||||||
|  |                 context.Request.PathBase = pathBase; | ||||||
|  |                 await next(); | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |          | ||||||
|         app.UseExceptionHandler(); |         app.UseExceptionHandler(); | ||||||
| 
 | 
 | ||||||
|         if (app.Environment.IsDevelopment()) |         app.UseSwagger(); | ||||||
|  |         app.UseSwaggerUI(c => | ||||||
|         { |         { | ||||||
|             app.UseSwagger(); |             c.SwaggerEndpoint($"{basePath}/swagger/v1/swagger.json", "CommunicationControl - V1"); | ||||||
|             app.UseSwaggerUI(); |             c.RoutePrefix = $"swagger"; | ||||||
|         } |              | ||||||
| 
 |         }); | ||||||
|         app.UseCors(corsPolicyName); |         app.UseCors(corsPolicyName); | ||||||
| 
 | 
 | ||||||
|         app.UseAuthorization(); |         app.UseAuthorization(); | ||||||
|  | |||||||
| @ -20,6 +20,7 @@ | |||||||
|   }, |   }, | ||||||
|   "AllowedHosts": "*", |   "AllowedHosts": "*", | ||||||
|   "Urls": "http://0.0.0.0:8080", |   "Urls": "http://0.0.0.0:8080", | ||||||
|  |   "BasePath": "", | ||||||
|   "Serilog": { |   "Serilog": { | ||||||
|     "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ], |     "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ], | ||||||
|     "MinimumLevel": { |     "MinimumLevel": { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user