Compare commits
	
		
			12 Commits
		
	
	
		
			master
			...
			lab5-hiatu
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e65bfa501a | |||
| 1d5157b635 | |||
| 99e91324bc | |||
|  | 6d2533e53d | ||
|  | fb36a7d13b | ||
|  | f1d8b95744 | ||
|  | 3fa3ef13b2 | ||
|  | dd189fc094 | ||
|  | e341fc14b3 | ||
|  | 2c50dc75eb | ||
|  | 4df4437487 | ||
|  | bee604d68e | 
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,7 +1,11 @@ | ||||
| src/MapClient/node_modules | ||||
| src/MapClient/dist | ||||
| src/CommunicationControl/.idea | ||||
| src/CommunicationControl/.vs | ||||
| bin | ||||
| obj | ||||
| Logs | ||||
| .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" | ||||
							
								
								
									
										24
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								README.md
									
									
									
									
									
								
							| @ -8,6 +8,11 @@ | ||||
|     - [Communiction Control](#communiction-control) | ||||
|     - [Hive Mind](#hive-mind) | ||||
|   - [Usage](#usage) | ||||
|   - [Build](#build) | ||||
|     - [Map Clinet](#map-clinet) | ||||
|     - [Communiction Control](#communiction-control-1) | ||||
|     - [Hive Mind](#hive-mind-1) | ||||
|     - [Communiction Control](#communiction-control-2) | ||||
| 
 | ||||
| ## About | ||||
| This is a demo project used in the Uni DevOps course | ||||
| @ -39,7 +44,7 @@ dotnet run  --project DevOpsProject/DevOpsProject.CommunicationControl.API.cspro | ||||
| ```bash | ||||
| cd src/CommunicationControl | ||||
| 
 | ||||
| dotnet run  --project DevOpsProject/DevOpsProject.HiveMind.API.csproj | ||||
| dotnet run  --project DevOpsProject.HiveMind.API/DevOpsProject.HiveMind.API.csproj | ||||
| ``` | ||||
| 
 | ||||
| 
 | ||||
| @ -54,3 +59,20 @@ dotnet run  --project DevOpsProject/DevOpsProject.HiveMind.API.csproj | ||||
|     ``` | ||||
| 
 | ||||
| 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(); | ||||
| 
 | ||||
| // Configure the HTTP request pipeline. | ||||
| if (app.Environment.IsDevelopment()) | ||||
| { | ||||
|     app.UseSwagger(); | ||||
|     app.UseSwaggerUI(); | ||||
| } | ||||
| app.UseSwagger(); | ||||
| app.UseSwaggerUI(); | ||||
| 
 | ||||
| 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"> | ||||
| 	<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 | ||||
|         builder.Services.AddJsonControllerOptionsConfiguration(); | ||||
| 
 | ||||
|         string basePath = builder.Configuration.GetValue<string>("BasePath") ?? string.Empty; | ||||
|          | ||||
|         builder.Services.AddEndpointsApiExplorer(); | ||||
|         builder.Services.AddSwaggerGen(c => | ||||
|         { | ||||
| @ -41,15 +43,26 @@ internal class Program | ||||
|         builder.Services.AddProblemDetails(); | ||||
| 
 | ||||
|         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(); | ||||
| 
 | ||||
|         if (app.Environment.IsDevelopment()) | ||||
|         { | ||||
|         app.UseSwagger(); | ||||
|             app.UseSwaggerUI(); | ||||
|         } | ||||
|         app.UseSwaggerUI(c => | ||||
|         { | ||||
|             c.SwaggerEndpoint($"{basePath}/swagger/v1/swagger.json", "CommunicationControl - V1"); | ||||
|             c.RoutePrefix = $"swagger"; | ||||
|              | ||||
|         }); | ||||
|         app.UseCors(corsPolicyName); | ||||
| 
 | ||||
|         app.UseAuthorization(); | ||||
|  | ||||
| @ -20,6 +20,7 @@ | ||||
|   }, | ||||
|   "AllowedHosts": "*", | ||||
|   "Urls": "http://0.0.0.0:8080", | ||||
|   "BasePath": "", | ||||
|   "Serilog": { | ||||
|     "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ], | ||||
|     "MinimumLevel": { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user