Files
PLDpro.Web/.gitea/workflows/dotnet-deploy.yml
Erik 35037b607f
Some checks failed
Build & Deploy PLDpro.Web Test to 192.168.1.100 / build-and-deploy (push) Failing after 33s
.gitea/workflows/dotnet-deploy.yml aktualisiert
2026-01-19 15:13:02 +00:00

107 lines
3.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Build & Deploy PLDpro.Web Test to 192.168.1.100
on:
push:
branches: [ "main" ] # ggf. anpassen (z. B. "master" oder Release-Branch)
workflow_dispatch: # manueller Start
env:
DOTNET_VERSION: '10.0.x' # oder 7.0.x je nach Projekt
PROJECT_PATH: 'Pldpro.Web/Pldpro.Web.csproj'
RUNTIME: 'linux-x64'
PUBLISH_DIR: 'artifacts/publish'
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Host override setzen
run: |
echo "192.168.1.200 gitea.pldpro.at" >> /etc/hosts
- name: Checkout
uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Restore
run: dotnet restore "${{ env.PROJECT_PATH }}"
- name: Build
run: dotnet build "${{ env.PROJECT_PATH }}" -c Release --no-restore
# --- Publish: self-contained (empfohlen) ---
- name: Publish (self-contained)
run: |
dotnet publish "${{ env.PROJECT_PATH }}" \
-c Release \
-r "${{ env.RUNTIME }}" \
--self-contained true \
-o "${{ env.PUBLISH_DIR }}"
- name: Prepare SSH key & known_hosts
env:
SSH_HOST: ${{ vars.SSH_HOST }}
SSH_PORT: ${{ vars.SSH_PORT }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
run: |
install -m 700 -d ~/.ssh
echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_deploy
chmod 600 ~/.ssh/id_deploy
# Host-Key hinzufügen (sicherer als StrictHostKeyChecking=no)
PORT="${SSH_PORT:-22}"
ssh-keyscan -p "${PORT}" -H "${SSH_HOST}" >> ~/.ssh/known_hosts
- name: Remove previous installed version
env:
SSH_USER: ${{ vars.SSH_USER }}
SSH_HOST: ${{ vars.SSH_HOST }}
SSH_PORT: ${{ vars.SSH_PORT }}
REMOTE_DIR: ${{ vars.REMOTE_DIR }}
run: |
ssh -i ~/.ssh/id_deploy -p "${SSH_PORT:-22}" "${SSH_USER}@${SSH_HOST}" "rm -rf '${REMOTE_DIR}'"
- name: Create remote directory
env:
SSH_USER: ${{ vars.SSH_USER }}
SSH_HOST: ${{ vars.SSH_HOST }}
SSH_PORT: ${{ vars.SSH_PORT }}
REMOTE_DIR: ${{ vars.REMOTE_DIR }}
run: |
ssh -i ~/.ssh/id_deploy -p "${SSH_PORT:-22}" "${SSH_USER}@${SSH_HOST}" "mkdir -p '${REMOTE_DIR}'"
- name: Deploy via SCP
env:
SSH_USER: ${{ vars.SSH_USER }}
SSH_HOST: ${{ vars.SSH_HOST }}
SSH_PORT: ${{ vars.SSH_PORT }}
REMOTE_DIR: ${{ vars.REMOTE_DIR }}
run: |
scp -i ~/.ssh/id_deploy -P "${SSH_PORT:-22}" -r "${{ env.PUBLISH_DIR }}/"* "${SSH_USER}@${SSH_HOST}:${REMOTE_DIR}/"
# -------- Option A: Neustart per systemd (empfohlen) --------
# Benötigt: secrets.SERVICE_NAME (z. B. "myapp.service")
- name: Systemd daemon-reload
run: |
ssh -tt -i ~/.ssh/id_deploy -p "${{ vars.SSH_PORT || 22 }}" "${{ vars.SSH_USER }}@${{ vars.SSH_HOST }}" \
"/usr/bin/sudo -n /usr/bin/systemctl daemon-reload"
- name: Restart service
env:
SERVICE_NAME: ${{ vars.SERVICE_NAME }}
run: |
ssh -tt -i ~/.ssh/id_deploy -p "${{ vars.SSH_PORT || 22 }}" "${{ vars.SSH_USER }}@${{ vars.SSH_HOST }}" \
"/usr/bin/sudo -n /usr/bin/systemctl restart '${SERVICE_NAME}'"
- name: Status (no pager)
env:
SERVICE_NAME: ${{ vars.SERVICE_NAME }}
run: |
ssh -tt -i ~/.ssh/id_deploy -p "${{ vars.SSH_PORT || 22 }}" "${{ vars.SSH_USER }}@${{ vars.SSH_HOST }}" \
"/usr/bin/systemctl status --no-pager '${SERVICE_NAME}'"