Compare commits

..

7 Commits

Author SHA1 Message Date
troogs
aea858a1ef Add GitHub Actions workflow for building and pushing Docker images
All checks were successful
Build And Push Docker Image / docker (push) Successful in 1m50s
2026-04-10 21:17:51 +02:00
troogs
85c90e4657 Add DOTNET_ROLL_FORWARD environment variable to build workflow
All checks were successful
Build And Release / release (push) Successful in 1m26s
2026-04-10 20:56:12 +02:00
troogs
840ecedbd0 Add GitHub Actions workflow for build and release process
Some checks failed
Build And Release / release (push) Failing after 1m8s
2026-04-10 20:52:03 +02:00
troogs
916c3142d4 Remove unused Blazorise script reference and add kill-port script for managing listening processes 2026-04-10 05:48:37 +02:00
troogs
f9426679ea Add tasks.json for managing FoodsharingSiegen.Server build and debug tasks 2026-04-10 05:48:29 +02:00
troogs
a68994d00b Add launch configuration for debugging FoodsharingSiegen.Server 2026-04-10 05:48:14 +02:00
troogs
fcda568905 Add app.db to .gitignore to prevent tracking of database file 2026-04-10 05:48:06 +02:00
8 changed files with 234 additions and 2 deletions

View File

@@ -0,0 +1,56 @@
name: Build And Push Docker Image
on:
push:
tags:
- "image"
workflow_dispatch:
jobs:
docker:
runs-on: ubuntu-latest
env:
DOTNET_ROLL_FORWARD: Major
REGISTRY: git.beging.de
BASE_IMAGE: git.beging.de/troogs/fs-onboarding-server
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup .NET SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: "9.0.x"
- name: Publish server project
run: dotnet publish ./FoodsharingSiegen.Server/FoodsharingSiegen.Server.csproj -c Release -o ./Publish/Server
- name: Login to Gitea registry
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login "${{ env.REGISTRY }}" -u "${{ secrets.REGISTRY_USERNAME }}" --password-stdin
- name: Determine next timestamp tag
shell: bash
run: |
TODAY="$(date -u +%Y%m%d)"
i=1
while docker manifest inspect "${BASE_IMAGE}:${TODAY}-${i}" > /dev/null 2>&1; do
i=$((i + 1))
done
DATE_TAG="${TODAY}-${i}"
echo "DATE_TAG=${DATE_TAG}" >> "$GITHUB_ENV"
echo "Using image tag: ${DATE_TAG}"
- name: Build docker image
run: |
docker build \
-f ./Docker/dockerfile.server \
-t "${{ env.BASE_IMAGE }}:latest" \
-t "${{ env.BASE_IMAGE }}:${{ env.DATE_TAG }}" \
.
- name: Push docker images
run: |
docker push "${{ env.BASE_IMAGE }}:latest"
docker push "${{ env.BASE_IMAGE }}:${{ env.DATE_TAG }}"

50
.gitea/workflows/test.yml Normal file
View File

@@ -0,0 +1,50 @@
name: Build And Release
on:
push:
tags:
- "v*"
workflow_dispatch:
inputs:
tag_name:
description: "Tag for the release (for example: v1.0.0)"
required: true
type: string
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
env:
RELEASE_TAG: ${{ github.event.inputs.tag_name || github.ref_name }}
DOTNET_ROLL_FORWARD: Major
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup .NET SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: "9.0.x"
- name: Restore dependencies
run: dotnet restore FoodsharingSiegen.sln
- name: Publish server build
run: dotnet publish ./FoodsharingSiegen.Server/FoodsharingSiegen.Server.csproj -c Release -o ./artifacts/publish
- name: Create zip package
run: |
cd artifacts
zip -r FoodsharingSiegen.Server-${{ env.RELEASE_TAG }}.zip publish
- name: Create release and upload artifact
uses: https://gitea.com/actions/gitea-release-action@v1
with:
files: artifacts/FoodsharingSiegen.Server-${{ env.RELEASE_TAG }}.zip
tag_name: ${{ env.RELEASE_TAG }}
name: Release ${{ env.RELEASE_TAG }}
target_commitish: ${{ github.sha }}
token: ${{ github.token }}

1
.gitignore vendored
View File

@@ -5,3 +5,4 @@ riderModule.iml
/_ReSharper.Caches/ /_ReSharper.Caches/
Publish/ Publish/
app.db

19
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,19 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug FoodsharingSiegen.Server",
"type": "dotnet",
"request": "launch",
"projectPath": "${workspaceFolder}/FoodsharingSiegen.Server/FoodsharingSiegen.Server.csproj",
"env": {
"DOTNET_ROLL_FORWARD": "Major"
},
"launchBrowser": true,
"serverReadyAction": {
"action": "openExternally",
"pattern": "\\bNow listening on:\\s+(https?://\\S+)"
}
}
]
}

53
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,53 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Watch FoodsharingSiegen.Server",
"type": "shell",
"command": "dotnet watch --project ./FoodsharingSiegen.Server/FoodsharingSiegen.Server.csproj run",
"isBackground": true,
"problemMatcher": "$msCompile",
"options": {
"statusbar": {
"hide": false,
"label": "Watch Server",
"color": "#3a96ff",
"icon": {
"id": "eye"
},
"running": {
"color": "#f7df06",
"icon": {
"id": "loading~spin"
}
}
}
}
},
{
"label": "Debug FoodsharingSiegen.Server",
"type": "shell",
"command": "dotnet run --project ./FoodsharingSiegen.Server/FoodsharingSiegen.Server.csproj",
"problemMatcher": "$msCompile",
"options": {
"env": {
"DOTNET_ROLL_FORWARD": "Major"
},
"statusbar": {
"hide": false,
"label": "Debug Server",
"color": "#3a96ff",
"icon": {
"id": "debug-start"
},
"running": {
"color": "#f7df06",
"icon": {
"id": "loading~spin"
}
}
}
}
}
]
}

View File

@@ -43,7 +43,6 @@
</div> </div>
<script src="_framework/blazor.server.js"></script> <script src="_framework/blazor.server.js"></script>
<script src="_content/Blazorise/blazorise.js"></script>
<script src="_content/Blazorise.Material/blazorise.material.js?v=1.7.5.0"></script> <script src="_content/Blazorise.Material/blazorise.material.js?v=1.7.5.0"></script>
</body> </body>
</html> </html>

View File

@@ -0,0 +1 @@
20260410

View File

@@ -0,0 +1,53 @@
param(
[int]$Port = 56000
)
$killedAny = $false
# Try modern cmdlet first.
$connections = Get-NetTCPConnection -LocalPort $Port -State Listen -ErrorAction SilentlyContinue
if ($connections) {
$pids = $connections | Select-Object -ExpandProperty OwningProcess -Unique
foreach ($procId in $pids) {
try {
Stop-Process -Id $procId -Force -ErrorAction Stop
Write-Host "Stopped process $procId listening on port $Port."
$killedAny = $true
}
catch {
Write-Warning "Failed to stop process ${procId}: $($_.Exception.Message)"
}
}
}
# Fallback for environments where Get-NetTCPConnection is unavailable.
if (-not $killedAny) {
$netstatLines = netstat -ano | Select-String ":$Port\s"
$listenLines = $netstatLines | Where-Object { $_.Line -match "LISTENING" }
$fallbackPids = @()
foreach ($line in $listenLines) {
$parts = ($line.Line -replace "\s+", " ").Trim().Split(" ")
if ($parts.Length -ge 5) {
$fallbackPids += $parts[-1]
}
}
$fallbackPids = $fallbackPids | Sort-Object -Unique
foreach ($pidText in $fallbackPids) {
if ($pidText -match "^\d+$") {
try {
Stop-Process -Id ([int]$pidText) -Force -ErrorAction Stop
Write-Host "Stopped process $pidText listening on port $Port."
$killedAny = $true
}
catch {
Write-Warning "Failed to stop process ${pidText}: $($_.Exception.Message)"
}
}
}
}
if (-not $killedAny) {
Write-Host "No listening process found on port $Port."
}