Codebasis als Dateien ins Arbeitsrepo statt als Gitlink

QuellCode/CentronERP war nur als Gitlink (Submodul-Referenz auf 79c1142)
getrackt, ohne .gitmodules und ohne erreichbares Remote. Der
Untersuchungsgegenstand der Versuchsreihe war damit nicht reproduzierbar
gesichert: Ein Klon haette ein leeres Verzeichnis erhalten, und die Belege
der 3.287 Anforderungen waeren nicht ueberpruefbar gewesen.

Umstellung:
- Historie nach c:\DEV\CentronERP_git_snapshot_79c1142 ausgelagert
  (vollstaendig lesbar, enthaelt 79c1142 und Vorgaenger 89ccfd6)
- Gitlink aus dem Index entfernt
- Dateiinhalt aufgenommen: 24.557 Dateien, rund 333 MB

Die verschachtelte .gitignore der Codebasis gilt weiter, Build-Artefakte
bleiben ausgeschlossen. Details in Versuche/Versuch_01/_Codebasis-Nachweis.md
This commit is contained in:
Christoph Schwörer
2026-08-26 07:43:51 +02:00
parent 18edae75b6
commit f045b99a25
24664 changed files with 5846716 additions and 1 deletions
+32
View File
@@ -0,0 +1,32 @@
FROM mcr.microsoft.com/dotnet/sdk:10.0.201-alpine3.23 AS base
RUN mkdir build
WORKDIR /build
COPY ./ ./
ARG dx_license
RUN mkdir -p $HOME/.config/DevExpress && \
echo "$dx_license" > $HOME/.config/DevExpress/DevExpress_License.txt
RUN dotnet publish "./src/nexus/CentronNexus.Host/CentronNexus.Host.csproj" -c release --self-contained true -o ./app
FROM mcr.microsoft.com/dotnet/runtime:10.0.5-alpine3.23
RUN apk update && apk upgrade
RUN apk add --no-cache icu-data-full icu-libs
RUN apk add --no-cache tzdata
ENV TZ=Europe/Berlin
RUN apk add --no-cache fontconfig
RUN apk add ttf-dejavu && \
apk add msttcorefonts-installer && \
apk add ttf-dejavu && \
update-ms-fonts && \
fc-cache -f
RUN ln -s /usr/lib/libfontconfig.so.1 /usr/lib/libfontconfig.so && \
ln -s /lib/libuuid.so.1 /usr/lib/libuuid.so.1 && \
ln -s /lib/libc.musl-x86_64.so.1 /usr/lib/libc.musl-x86_64.so.1
ENV DOTNET_RUNNING_IN_CONTAINER=true
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
COPY --from=base /build/app /app
WORKDIR app
+21
View File
@@ -0,0 +1,21 @@
Note, that folder c-entron-api and c-entron-nexus folders are provided by mitteldeutsche-it and are only here for
documentation purposes. Once the setup is running they can be removed
``` bash
# build docker image
docker build -t centron.azurecr.io/centron_nexus$version -f docker/Dockerfile .
docker build -t centron.azurecr.io/c-entron_webservice:$VERSION_alpine3.19 -f docker/c-entron-webservice/Dockerfile .
# login into azure and azure container registry to upload the image
az login
az acr login --name centron
docker push centron.azurecr.io/c-entron_webservice:$VERSION_alpine3.19
```
## Neues Tocken anlege=
``` bash
# neues token in der registry anlegen
az acr token create -r centron --scope-map customer --output json --name ANWENDER_ODER_KUNDE
```
@@ -0,0 +1,11 @@
#FROM debian:12-slim
FROM mcr.microsoft.com/dotnet/runtime:8.0.8-alpine3.19
ENV DEBIAN_FRONTEND="noninteractive"
ADD app /app
#COPY install.sh .
#RUN ls
#RUN ./install.sh
USER root
WORKDIR /app
EXPOSE 80
#ENTRYPOINT [ "/app/Centron.Host.Console" ]
@@ -0,0 +1,14 @@
# ! /bin/bash
echo "mkdir"
mkdir docker/c-entron-api/app
echo "build app"
#dotnet build ./src/webservice/Centron.Host.Console/Centron.Host.Console.csproj -o ./docker/c-entron-api/app
cd docker/c-entron-api/
echo "build docker"
ls
sudo docker build . -t webservice:debian-last
#sudo docker build . -t webservice -f ./docker/docker-marcel/Dockerfile --progress plain
#rm -rf docker/c-entron-api/app
echo "done"
@@ -0,0 +1,11 @@
apt-get update
apt-get -y upgrade
apt-get install -y curl gnupg wget
wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
apt-get update && apt-get install -y aspnetcore-runtime-8.0
apt-get install -y libc6 libicu-dev libfontconfig1 libjpeg62-turbo
apt-get clean
/app/Centron.Host.Console configure 80 'https://api.c-entron.de/' 'Server=localhost; Database=Centron; User Id=SA; Password=SA!password'
@@ -0,0 +1,13 @@
##!/bin/bash
if [ -f /var/opt/mssql/data/Centron.mdf ]; then
echo 'Database exists, will not import backup'
/opt/mssql/bin/sqlservr
else
echo 'Database Centron.mdf not found, importing backup'
/opt/mssql/bin/sqlservr & \
until /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U SA -P ${MSSQL_SA_PASSWORD} -Q 'RESTORE DATABASE CentronDemo01 FROM DISK = "/var/opt/mssql/backup/DB.bak" WITH MOVE "CentronLeerDB" TO "/var/opt/mssql/data/Centron.mdf", MOVE "CentronLeerDB_Log" TO "/var/opt/mssql/data/Centron.ldf"'; \
do \
sleep 2; \
done
fi
wait
@@ -0,0 +1,14 @@
FROM ruby:3.3.8-alpine3.22
RUN apk update && apk upgrade
RUN apk --no-cache --update add build-base ruby ruby-dev sqlite sqlite-libs sqlite-dev gcompat \
&& gem install etc --no-document \
&& gem install json --no-document \
&& gem install sqlite3 --version="~> 1.3" --no-document --platform ruby \
&& gem install mailcatcher:0.10.0 --no-document \
&& apk del --rdepends --purge build-base
EXPOSE 1025 1080
ENTRYPOINT ["mailcatcher"]
CMD ["--foreground", "--ip", "0.0.0.0"]
@@ -0,0 +1,2 @@
FROM mcr.microsoft.com/mssql/server:2022-CU14-ubuntu-22.04
COPY ./tests/Centron.Tests.EndToEnd/Infrastructure/DatabaseBackup.bak /var/opt/mssql/backup/DatabaseBackup.bak
@@ -0,0 +1,29 @@
FROM node:20-alpine AS node
FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine
RUN apk add --no-cache bash sudo shadow
COPY --from=node /usr/local/bin /usr/local/bin
COPY --from=node /usr/local/lib/node_modules /usr/local/lib/node_modules
LABEL "com.azure.dev.pipelines.agent.handler.node.path"="/usr/local/bin/node"
RUN apk add --no-cache icu-data-full icu-libs
RUN apk add --no-cache tzdata
RUN apk add --no-cache fontconfig
RUN apk add ttf-dejavu && \
apk add msttcorefonts-installer && \
apk add ttf-dejavu && \
update-ms-fonts && \
fc-cache -f
RUN ln -s /usr/lib/libfontconfig.so.1 /usr/lib/libfontconfig.so && \
ln -s /lib/libuuid.so.1 /usr/lib/libuuid.so.1 && \
ln -s /lib/libc.musl-x86_64.so.1 /usr/lib/libc.musl-x86_64.so.1
ENV LD_LIBRARY_PATH=/usr/lib
ENV TZ=Europe/Berlin
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
RUN mkdir /app
WORKDIR /app
@@ -0,0 +1,56 @@
FROM mcr.microsoft.com/dotnet/sdk:10.0.201-alpine3.23 AS base
ARG centron_version
ARG centron_git_commit
ENV CENTRON_VERSION=$centron_version
ENV CENTRON_GIT_COMMIT=$centron_git_commit
RUN apk add --no-cache sed
RUN mkdir build
WORKDIR /build
COPY ./ ./
RUN rm -f src/webservice/Centron.Host.Console/app.config
RUN ls src/webservice/Centron.Host.Console/
RUN mv src/webservice/Centron.Host.Console/additional.props.docker src/webservice/Centron.Host.Console/additional.props
RUN cat Directory.Build.props
### be carefull, the following replacement does not consider the xml structure. It does a stupid search and replace
RUN sed -i "s/<Version>1.0.0.0<\/Version>/<Version>${CENTRON_VERSION}<\/Version>/" ./Directory.Build.props
RUN sed -i "s/<GitCommitId><\/GitCommitId>/<GitCommitId>${CENTRON_GIT_COMMIT}<\/GitCommitId>/" ./Directory.Build.props
RUN cat Directory.Build.props
ARG dx_license
RUN mkdir -p $HOME/.config/DevExpress && \
echo "$dx_license" > $HOME/.config/DevExpress/DevExpress_License.txt
RUN dotnet publish "./src/webservice/Centron.Host.Console/Centron.Host.Console.csproj" -c release --self-contained true -o ./app
### build finished
FROM mcr.microsoft.com/dotnet/runtime:10.0.5-alpine3.23
ARG centron_version
ARG centron_git_commit
ENV CENTRON_VERSION=$centron_version
ENV CENTRON_GIT_COMMIT=$centron_git_commit
RUN apk add --no-cache icu-data-full icu-libs
RUN apk add --no-cache tzdata
RUN apk add --no-cache fontconfig
RUN apk add ttf-dejavu && \
apk add msttcorefonts-installer && \
apk add ttf-dejavu && \
update-ms-fonts && \
fc-cache -f
RUN ln -s /usr/lib/libfontconfig.so.1 /usr/lib/libfontconfig.so && \
ln -s /lib/libuuid.so.1 /usr/lib/libuuid.so.1 && \
ln -s /lib/libc.musl-x86_64.so.1 /usr/lib/libc.musl-x86_64.so.1
ENV LD_LIBRARY_PATH=/usr/lib
ENV TZ=Europe/Berlin
ENV DOTNET_RUNNING_IN_CONTAINER=true
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
COPY --from=base /build/app /app
#RUN /app/Centron.Host.Console configure 1234 'https://api.c-entron.de/' 'Server=docker-centron_db_1; Database=Centron; User Id=SA; Password=SA!password'
WORKDIR app
@@ -0,0 +1,5 @@
docker login centron.azurecr.io
docker compose up
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<WebServiceConfig>
<WebServiceAddress>http://localhost:1234/CentronService</WebServiceAddress>
<PublicWebServiceAddress></PublicWebServiceAddress>
<WebServiceCertificateFilePath></WebServiceCertificateFilePath>
<WebServiceCertificatePassword></WebServiceCertificatePassword>
<ActiveDirectoryAuthEnabled>false</ActiveDirectoryAuthEnabled>
<ActiveDirectoryUrl></ActiveDirectoryUrl>
<ActiveDirectoryName></ActiveDirectoryName>
<ActiveDirectoryCertificateHash></ActiveDirectoryCertificateHash>
<DatabaseConnectionString>
</DatabaseConnectionString>
<DatabaseConnectionStringPlain>
Server=db; Database=Centron; User Id=SA; Password=SA!password
</DatabaseConnectionStringPlain>
<UseIncreasedThreadPool>true</UseIncreasedThreadPool>
<ActivateHelpPage>false</ActivateHelpPage>
<ExecuteServices>false</ExecuteServices>
<ProxyAddress></ProxyAddress>
<ProxyPort />
<ProxyUsername />
<ProxyPassword></ProxyPassword>
<TwoFactorAuthEnabled>false</TwoFactorAuthEnabled>
<TwoFactorAuthType>RadiusServer</TwoFactorAuthType>
<RadiusServerAddress></RadiusServerAddress>
<RadiusServerSecret></RadiusServerSecret>
<RadiusServerConnectionTimeoutInSeconds>30</RadiusServerConnectionTimeoutInSeconds>
<RadiusServerNasIdentifier></RadiusServerNasIdentifier>
<RadiusServerNasIpAddress></RadiusServerNasIpAddress>
<MailTwoFactorAuthSenderAddress></MailTwoFactorAuthSenderAddress>
<MailTwoFactorAuthTimeoutInSeconds>120</MailTwoFactorAuthTimeoutInSeconds>
<TwoFactorValidDurationInDays>0</TwoFactorValidDurationInDays>
<SecretKey>J+ImFI4YsgTyIpOk/ixavJb6gz1hG/w+A9jVJE0pkXA=</SecretKey>
</WebServiceConfig>
@@ -0,0 +1,59 @@
{
"NLog": {
"autoReload": true,
"Targets": {
"async": true,
"ConsoleTarget": {
"type": "Console",
"layout": "${longdate}|${level:uppercase=true}|${logger}|${message}${onException:inner=${newline}${exception:format=toString:maxInnerExceptionLevel=10}}"
},
"CsvFileTarget": {
"type": "File",
"fileName": "${specialfolder:folder=CommonApplicationData}/c-entron software gmbh/CentronNexus/Logs/logs-${date:format=yyyy.MM.dd}.csv",
"layout": "${longdate},${level:uppercase=true},${logger},${message}${onException:inner=${newline}${exception:format=toString:maxInnerExceptionLevel=10}}"
}
},
"Rules": [
{
"logger": "*",
"minLevel": "Warn",
"writeTo": "ConsoleTarget"
}
]
},
"Host": {
"Url": "http://localhost:8050",
"LinuxCertificatePath": "",
"LinuxCertificatePassword": ""
},
"DetailedErrors": true,
"CentronWebService": {
"Url": "http://webservice:1234/CentronService"
},
"CustomerPortal": {
"Port": null
},
"WebAccount": {
"HomePageUrl": "https://de.wikipedia.org/"
},
"Notifications": {
"SecretKey": "J+ImFI4YsgTyIpOk/ixavJb6gz1hG/w+A9jVJE0pkXA="
},
"Branding": {
"Logo": "img/logos/logo.png",
"LoginLogo": "img/logos/sb_logo_big.png",
"LoginLogoDarkMode": "img/logos/sb_logo_big.png",
"Favicon": "img/logos/logo.png",
"Title": "c-entron Web",
"ShowLogoWithTitle": true,
"LoginPageText": "Log in to the next experience of ERP",
"LegalNoticeUrl": "https://c-entron.de/impressum/",
"PrivacyPolicyUrl": "https://c-entron.de/datenschutzerklaerung/",
"AgbUrl": "https://c-entron.de/agb/",
"HexColor": "#F09D0B"
},
"TicketCache": {
"CachedMonths": 1200,
"MaxClosedTickets": 100
}
}
@@ -0,0 +1,54 @@
name: centron
services:
db:
image: centron.azurecr.io/centron_db/version2:latest
container_name: db
environment:
MSSQL_SA_PASSWORD: SA!password
networks:
- centron
ports:
- "1433:1433"
webservice:
image: centron.azurecr.io/centron_webservice:latest
command: /app/Centron.Host.Console
container_name: webservice
environment:
HARDWARE_ID: LinuxV1.ZDhiZjhiZjgtMjIwNS00MWQ1LThiMGEtMjM2ZjZhMzc2MGMz
depends_on:
- db
volumes:
- ./WebServiceConfig.xml:/app/WebServiceConfig.xml
ports:
- "4321:1234"
networks:
- centron
restart: on-failure
smtp:
image: centron.azurecr.io/mailcatcher:latest
container_name: centron-smtp-1
ports:
- "1025:1025"
- "1080:1080"
networks:
- centron
nexus:
image: centron.azurecr.io/centron_nexus:latest
command: /app/CentronNexus.Host
container_name: nexus
depends_on:
- webservice
volumes:
- ./appsettings.Production.json:/app/appsettings.Production.json
ports:
- "8050:8050"
networks:
- centron
restart: on-failure
networks:
centron:
driver: bridge
@@ -0,0 +1,5 @@
docker login centron.azurecr.io
docker compose up
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<WebServiceConfig>
<WebServiceAddress>http://localhost:1234/CentronService</WebServiceAddress>
<PublicWebServiceAddress></PublicWebServiceAddress>
<WebServiceCertificateFilePath></WebServiceCertificateFilePath>
<WebServiceCertificatePassword></WebServiceCertificatePassword>
<ActiveDirectoryAuthEnabled>false</ActiveDirectoryAuthEnabled>
<ActiveDirectoryUrl></ActiveDirectoryUrl>
<ActiveDirectoryName></ActiveDirectoryName>
<ActiveDirectoryCertificateHash></ActiveDirectoryCertificateHash>
<DatabaseConnectionString>
</DatabaseConnectionString>
<DatabaseConnectionStringPlain>
Server=db,1433; Database=Centron; User Id=SA; Password=SA!password
</DatabaseConnectionStringPlain>
<UseIncreasedThreadPool>true</UseIncreasedThreadPool>
<ActivateHelpPage>false</ActivateHelpPage>
<ExecuteServices>false</ExecuteServices>
<ProxyAddress></ProxyAddress>
<ProxyPort />
<ProxyUsername />
<ProxyPassword></ProxyPassword>
<TwoFactorAuthEnabled>false</TwoFactorAuthEnabled>
<TwoFactorAuthType>RadiusServer</TwoFactorAuthType>
<RadiusServerAddress></RadiusServerAddress>
<RadiusServerSecret></RadiusServerSecret>
<RadiusServerConnectionTimeoutInSeconds>30</RadiusServerConnectionTimeoutInSeconds>
<RadiusServerNasIdentifier></RadiusServerNasIdentifier>
<RadiusServerNasIpAddress></RadiusServerNasIpAddress>
<MailTwoFactorAuthSenderAddress></MailTwoFactorAuthSenderAddress>
<MailTwoFactorAuthTimeoutInSeconds>120</MailTwoFactorAuthTimeoutInSeconds>
<TwoFactorValidDurationInDays>0</TwoFactorValidDurationInDays>
<SecretKey>ThisIsASecretKey</SecretKey>
</WebServiceConfig>
@@ -0,0 +1,58 @@
{
"NLog": {
"autoReload": true,
"Targets": {
"async": true,
"ConsoleTarget": {
"type": "Console",
"layout": "${longdate}|${level:uppercase=true}|${logger}|${message}${onException:inner=${newline}${exception:format=toString:maxInnerExceptionLevel=10}}"
},
"CsvFileTarget": {
"type": "File",
"fileName": "${specialfolder:folder=CommonApplicationData}/c-entron software gmbh/CentronNexus/Logs/logs-${date:format=yyyy.MM.dd}.csv",
"layout": "${longdate},${level:uppercase=true},${logger},${message}${onException:inner=${newline}${exception:format=toString:maxInnerExceptionLevel=10}}"
}
},
"Rules": [
{
"logger": "*",
"minLevel": "Warn",
"writeTo": "ConsoleTarget"
}
]
},
"Host": {
"Url": "http://localhost:8050/",
"LinuxCertificatePath": "",
"LinuxCertificatePassword": ""
},
"DetailedErrors": true,
"CentronWebService": {
"Url": "http://centron-webservice-1:1234/CentronService"
},
"WebAccount": {
"HomePageUrl": "https://de.wikipedia.org/"
},
"Notifications": {
"SecretKey": ""
},
"Branding": {
"Logo": "img/logos/logo.png",
"LoginLogo": "img/logos/sb_logo_big.png",
"LoginLogoDarkMode": "img/logos/sb_logo_big.png",
"Favicon": "img/logos/logo.png",
"Title": "c-entron Web",
"ShowLogoWithTitle": true,
"LoginPageText": "Log in to the next experience of ERP",
"LegalNoticeUrl": "https://c-entron.de/impressum/",
"PrivacyPolicyUrl": "https://c-entron.de/datenschutzerklaerung/",
"AgbUrl": "https://c-entron.de/agb/",
"HexColor": "#F09D0B"
},
"OIDC": {
"Authority": "https://login.microsoftonline.com/{TENANT ID}/v2.0",
"ClientId": "",
"ClientSecret": "",
"ResponseType": "code"
}
}
@@ -0,0 +1,50 @@
name: centron
services:
db:
image: centron.azurecr.io/centron_db/centron_demo_db:1
container_name: db
environment:
MSSQL_SA_PASSWORD: SA!password
networks:
- centron
ports:
- "1433:1433"
webservice:
image: centron.azurecr.io/c-entron_webservice:local_alpine3.19
command: /app/Centron.Host.Console
container_name: webservice
environment:
HARDWARE_ID:
depends_on:
- db
volumes:
- ./WebServiceConfig.xml:/app/WebServiceConfig.xml
ports:
- "4321:1234"
networks:
- centron
smtp:
image: centron.azurecr.io/mailcatcher:latest
container_name: centron-smtp-1
ports:
- "1025:1025"
- "1080:1080"
networks:
- centron
nexus:
image: centron.azurecr.io/nexus/nexus:alpine_2409
command: /app/CentronNexus
container_name: nexus
depends_on:
- webservice
volumes:
- ./appsettings.json:/app/appsettings.json
ports:
- "8050:8050"
networks:
- centron
networks:
centron:
driver: bridge