Compare commits
2 Commits
master
..
4df4437487
| Author | SHA1 | Date | |
|---|---|---|---|
| 4df4437487 | |||
| bee604d68e |
@@ -1,100 +0,0 @@
|
||||
name: build-and-deploy-prod
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build-cc:
|
||||
runs-on: docker
|
||||
services:
|
||||
docker:
|
||||
image: docker:dind
|
||||
options: --privileged --shm-size=2g
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
steps:
|
||||
- name: Clone repo
|
||||
shell: sh
|
||||
run: |
|
||||
git init
|
||||
git remote add gitea http://10.1.1.1:3000/hasslesstech/devops-lab4
|
||||
git fetch gitea
|
||||
git checkout gitea/master
|
||||
- name: Build container
|
||||
shell: sh
|
||||
run: |
|
||||
docker build . -f Dockerfile-cc -t 10.5.1.10:5000/prod/cc
|
||||
- name: Push container
|
||||
shell: sh
|
||||
run: |
|
||||
docker push 10.5.1.10:5000/prod/cc
|
||||
|
||||
build-hm:
|
||||
runs-on: docker
|
||||
services:
|
||||
docker:
|
||||
image: docker:dind
|
||||
options: --privileged --shm-size=2g
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
steps:
|
||||
- name: Clone repo
|
||||
shell: sh
|
||||
run: |
|
||||
git init
|
||||
git remote add gitea http://10.1.1.1:3000/hasslesstech/devops-lab4
|
||||
git fetch gitea
|
||||
git checkout gitea/master
|
||||
- name: Build container
|
||||
shell: sh
|
||||
run: |
|
||||
docker build . -f Dockerfile-hm -t 10.5.1.10:5000/prod/hm
|
||||
- name: Push container
|
||||
shell: sh
|
||||
run: |
|
||||
docker push 10.5.1.10:5000/prod/hm
|
||||
|
||||
build-map:
|
||||
runs-on: docker
|
||||
services:
|
||||
docker:
|
||||
image: docker:dind
|
||||
options: --privileged --shm-size=2g
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
steps:
|
||||
- name: Clone repo
|
||||
shell: sh
|
||||
run: |
|
||||
git init
|
||||
git remote add gitea http://10.1.1.1:3000/hasslesstech/devops-lab4
|
||||
git fetch gitea
|
||||
git checkout gitea/master
|
||||
- name: Build container
|
||||
shell: sh
|
||||
run: |
|
||||
docker build . -f Dockerfile-map -t 10.5.1.10:5000/prod/map
|
||||
- name: Push container
|
||||
shell: sh
|
||||
run: |
|
||||
docker push 10.5.1.10:5000/prod/map
|
||||
|
||||
deploy-all:
|
||||
runs-on: hardware-x86_64
|
||||
needs:
|
||||
- build-cc
|
||||
- build-hm
|
||||
- build-map
|
||||
steps:
|
||||
- run: |
|
||||
ssh -i ~/prod-key root@10.5.1.11 "sh -c 'rm -rf devops-lab4 ; git clone http://10.1.1.1:3000/hasslesstech/devops-lab4 && cd devops-lab4 &&
|
||||
docker-compose -f docker-compose-prod.yaml up -d'"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+5
-1
@@ -1,7 +1,11 @@
|
||||
src/MapClient/node_modules
|
||||
src/MapClient/dist
|
||||
src/CommunicationControl/.idea
|
||||
src/CommunicationControl/.vs
|
||||
bin
|
||||
obj
|
||||
Logs
|
||||
.vscode
|
||||
.vscode
|
||||
build
|
||||
src/CommunicationControl/DevOpsProject.sln.DotSettings.user
|
||||
src/CommunicationControl/DevOpsProject.sln.DotSettings.user
|
||||
|
||||
-72
@@ -1,72 +0,0 @@
|
||||
# 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 ; \
|
||||
exec sh"
|
||||
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
# dotnet build environment
|
||||
FROM alpine:latest as dotnet
|
||||
WORKDIR /
|
||||
|
||||
RUN apk add git
|
||||
RUN git clone https://gitlab.com/kzotkin/hiveemulator
|
||||
|
||||
RUN apk add dotnet8-sdk
|
||||
|
||||
WORKDIR /hiveemulator/src/CommunicationControl/
|
||||
RUN dotnet publish DevOpsProject/DevOpsProject.CommunicationControl.API.csproj
|
||||
|
||||
# production environment
|
||||
#FROM mcr.microsoft.com/dotnet/aspnet:8.0 as prod
|
||||
FROM alpine:latest as prod
|
||||
#COPY --from=dotnet /hiveemulator/src/CommunicationControl/DevOpsProject/bin/Release/net8.0/ /app/
|
||||
RUN apk add aspnetcore8-runtime
|
||||
RUN mkdir -p /hiveemulator/src/CommunicationControl/DevOpsProject/bin/Release/net8.0/
|
||||
COPY --from=dotnet /hiveemulator/src/CommunicationControl/DevOpsProject/bin/Release/net8.0/ /hiveemulator/src/CommunicationControl/DevOpsProject/bin/Release/net8.0/
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
WORKDIR /hiveemulator/src/CommunicationControl/DevOpsProject/bin/Release/net8.0/
|
||||
ENTRYPOINT ["./DevOpsProject.CommunicationControl.API"]
|
||||
@@ -1,23 +0,0 @@
|
||||
# dotnet build environment
|
||||
FROM alpine:latest as dotnet
|
||||
WORKDIR /
|
||||
|
||||
RUN apk add git
|
||||
RUN git clone https://gitlab.com/kzotkin/hiveemulator
|
||||
|
||||
RUN apk add dotnet8-sdk
|
||||
|
||||
WORKDIR /hiveemulator/src/CommunicationControl/
|
||||
RUN dotnet publish DevOpsProject.HiveMind.API/DevOpsProject.HiveMind.API.csproj
|
||||
|
||||
|
||||
# production environment
|
||||
#FROM mcr.microsoft.com/dotnet/aspnet:8.0 as prod
|
||||
FROM alpine:latest as prod
|
||||
RUN apk add aspnetcore8-runtime
|
||||
RUN mkdir -p /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/bin/Release/net8.0/
|
||||
#COPY --from=dotnet /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/bin/Release/net8.0/ /app/
|
||||
COPY --from=dotnet /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/bin/Release/net8.0/ /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/bin/Release/net8.0/
|
||||
|
||||
WORKDIR /hiveemulator/src/CommunicationControl/DevOpsProject.HiveMind.API/bin/Release/net8.0/
|
||||
ENTRYPOINT ["./DevOpsProject.HiveMind.API"]
|
||||
@@ -1,22 +0,0 @@
|
||||
# nodejs build environment
|
||||
FROM alpine:latest as nodejs
|
||||
WORKDIR /
|
||||
|
||||
RUN apk add git
|
||||
RUN git clone https://gitlab.com/kzotkin/hiveemulator
|
||||
|
||||
RUN apk add npm
|
||||
|
||||
WORKDIR /hiveemulator/src/MapClient/
|
||||
RUN npm install
|
||||
RUN npm run build
|
||||
RUN rm public/config.json
|
||||
|
||||
|
||||
# production environment
|
||||
FROM nginx:alpine
|
||||
COPY --from=nodejs /hiveemulator/src/MapClient/dist/ /usr/share/nginx/html/
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
ENTRYPOINT ["nginx", "-g", "daemon off;"]
|
||||
@@ -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
|
||||
@@ -53,4 +58,19 @@ dotnet run --project DevOpsProject/DevOpsProject.HiveMind.API.csproj
|
||||
get [hiveKey]
|
||||
```
|
||||
|
||||
3. Communication Control Swagger: http://localhost:8080
|
||||
3. Communication Control Swagger: http://localhost:8080
|
||||
|
||||
## Build
|
||||
|
||||
### Map Clinet
|
||||
cd src/MapClient
|
||||
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
|
||||
@@ -1,14 +0,0 @@
|
||||
#!/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
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
#!/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
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
#!/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/
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
services:
|
||||
redis:
|
||||
image: redis:7
|
||||
restart: always
|
||||
networks:
|
||||
- sys
|
||||
|
||||
cc:
|
||||
image: 10.5.1.10:5000/dev/cc
|
||||
restart: always
|
||||
environment:
|
||||
Redis__ConnectionString: "redis:6379"
|
||||
ports:
|
||||
- 8080:8080
|
||||
networks:
|
||||
- sys
|
||||
depends_on:
|
||||
- redis
|
||||
|
||||
hm:
|
||||
image: 10.5.1.10:5000/dev/hm
|
||||
restart: always
|
||||
environment:
|
||||
CommunicationConfiguration__CommunicationControlIP: "cc"
|
||||
networks:
|
||||
- sys
|
||||
depends_on:
|
||||
- cc
|
||||
|
||||
map:
|
||||
image: 10.5.1.10:5000/dev/map
|
||||
restart: always
|
||||
volumes:
|
||||
- ./map/config-dev.json:/usr/share/nginx/html/config.json:ro
|
||||
ports:
|
||||
- 80:80
|
||||
|
||||
networks:
|
||||
sys:
|
||||
@@ -1,39 +0,0 @@
|
||||
services:
|
||||
redis:
|
||||
image: redis:7
|
||||
restart: always
|
||||
networks:
|
||||
- sys
|
||||
|
||||
cc:
|
||||
image: 10.5.1.10:5000/prod/cc
|
||||
restart: always
|
||||
environment:
|
||||
Redis__ConnectionString: "redis:6379"
|
||||
ports:
|
||||
- 8080:8080
|
||||
networks:
|
||||
- sys
|
||||
depends_on:
|
||||
- redis
|
||||
|
||||
hm:
|
||||
image: 10.5.1.10:5000/prod/hm
|
||||
restart: always
|
||||
environment:
|
||||
CommunicationConfiguration__CommunicationControlIP: "cc"
|
||||
networks:
|
||||
- sys
|
||||
depends_on:
|
||||
- cc
|
||||
|
||||
map:
|
||||
image: 10.5.1.10:5000/prod/map
|
||||
restart: always
|
||||
volumes:
|
||||
- ./map/config-prod.json:/usr/share/nginx/html/config.json:ro
|
||||
ports:
|
||||
- 80:80
|
||||
|
||||
networks:
|
||||
sys:
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"API": "http://10.5.1.12:8080/api/v1/client"
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"API": "http://10.5.1.11:8080/api/v1/client"
|
||||
}
|
||||
@@ -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>
|
||||
@@ -44,11 +44,9 @@ internal class Program
|
||||
|
||||
app.UseExceptionHandler();
|
||||
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
}
|
||||
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
|
||||
app.UseCors(corsPolicyName);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"Redis": {
|
||||
"ConnectionString": "localhost:6379",
|
||||
"ConnectionString": "kpi-demo.redis.cache.windows.net:6380,password=9Q72KUy4sNUShczfk09f1WVEj504TrzVeAzCaGyo744=,ssl=True,abortConnect=False",
|
||||
"PublishChannel": "HiveChannel"
|
||||
},
|
||||
"RedisKeys": {
|
||||
|
||||
Reference in New Issue
Block a user