Update .woodpecker.yml
This commit is contained in:
146
.woodpecker.yml
146
.woodpecker.yml
@@ -1,71 +1,99 @@
|
||||
skip_clone: true
|
||||
# .woodpecker.yml – uniwersalny dla dowolnej wersji .NET (6.0+)
|
||||
|
||||
when:
|
||||
event: [push, tag]
|
||||
branch: [main]
|
||||
|
||||
steps:
|
||||
add-local-nuget-source:
|
||||
image: mcr.microsoft.com/dotnet/sdk:8.0
|
||||
commands:
|
||||
- dotnet nuget add source http://srv51.mikr.us:20120/nuget/index.json --name local-baget
|
||||
|
||||
clone-manual:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
remote: http://gitea:3000/FA/FA_WEB.git
|
||||
branch: master
|
||||
depth: 1
|
||||
|
||||
restore:
|
||||
image: mcr.microsoft.com/dotnet/sdk:8.0
|
||||
image: mcr.microsoft.com/dotnet/sdk:latest
|
||||
commands:
|
||||
- dotnet restore --no-cache --force
|
||||
depends_on:
|
||||
- clone-manual
|
||||
- add-local-nuget-source
|
||||
|
||||
build:
|
||||
image: mcr.microsoft.com/dotnet/sdk:8.0
|
||||
commands:
|
||||
- dotnet build --no-restore -c Release
|
||||
depends_on:
|
||||
- restore
|
||||
- dotnet restore
|
||||
volumes:
|
||||
- nuget-cache:/root/.nuget/packages
|
||||
|
||||
test:
|
||||
image: mcr.microsoft.com/dotnet/sdk:8.0
|
||||
image: mcr.microsoft.com/dotnet/sdk:latest
|
||||
commands:
|
||||
- dotnet test --no-build -c Release --logger "trx" --results-directory ./test-results
|
||||
depends_on:
|
||||
- build
|
||||
- dotnet test --no-restore --configuration Release --logger "trx" --results-directory /tmp/test-results
|
||||
|
||||
pack-nuget:
|
||||
image: mcr.microsoft.com/dotnet/sdk:8.0
|
||||
build:
|
||||
image: mcr.microsoft.com/dotnet/sdk:latest
|
||||
commands:
|
||||
- dotnet build --no-restore --configuration Release
|
||||
|
||||
deploy:
|
||||
image: mcr.microsoft.com/dotnet/sdk:latest
|
||||
secrets: [baget_api_key, baget_url]
|
||||
volumes:
|
||||
- /opt/deployment:/deploy-host
|
||||
- nuget-cache:/root/.nuget/packages
|
||||
commands:
|
||||
- |
|
||||
for proj in $(find . -name "*DataModel.csproj"); do
|
||||
echo "Packaging $proj"
|
||||
dotnet pack "$proj" --no-build -c Release -o ./nuget-packages
|
||||
done
|
||||
when:
|
||||
branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||
event: push
|
||||
path:
|
||||
include:
|
||||
- "**/*DataModel.csproj"
|
||||
depends_on:
|
||||
- test # opcjonalnie, dodaj jeśli chcesz zależności
|
||||
set -euo pipefail
|
||||
|
||||
publish-api:
|
||||
image: mcr.microsoft.com/dotnet/sdk:8.0
|
||||
commands:
|
||||
- |
|
||||
for proj in $(find . -name "*API.csproj"); do
|
||||
proj_name=$(basename "$proj" .csproj)
|
||||
echo "Publishing $proj"
|
||||
dotnet publish "$proj" --no-build -c Release -o ./publish/$proj_name
|
||||
echo "=== Informacje o projekcie ==="
|
||||
echo "Repo: ${CI_REPO_NAME}"
|
||||
echo "Commit: ${CI_COMMIT_SHA:0:8}"
|
||||
echo "Branch/Tag: ${CI_COMMIT_REF}"
|
||||
echo "SDK version: $(dotnet --version)"
|
||||
|
||||
# Odczytujemy tylko metadane typu projektu
|
||||
PROJECT_TYPE=$(dotnet msbuild -getProperty:ProjectType -noLogo 2>/dev/null || echo "Unknown")
|
||||
DEPLOY_TO_CENTRAL=$(dotnet msbuild -getProperty:DeployToCentral -noLogo 2>/dev/null || echo "false")
|
||||
|
||||
echo "ProjectType: $PROJECT_TYPE"
|
||||
echo "DeployToCentral: $DEPLOY_TO_CENTRAL"
|
||||
|
||||
case "$PROJECT_TYPE" in
|
||||
DataModel)
|
||||
echo "→ Pakowanie i publikacja do BaGet"
|
||||
dotnet pack --no-build --configuration Release -o /tmp/nupkg
|
||||
|
||||
for pkg in /tmp/nupkg/*.nupkg; do
|
||||
dotnet nuget push "$pkg" \
|
||||
--api-key "${BAGET_API_KEY}" \
|
||||
--source "${BAGET_URL}" \
|
||||
--skip-duplicate
|
||||
done
|
||||
when:
|
||||
branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||
event: push
|
||||
path:
|
||||
include:
|
||||
- "**/*API.csproj"
|
||||
depends_on:
|
||||
- test # opcjonalnie
|
||||
echo "Publikacja NuGet zakończona."
|
||||
;;
|
||||
|
||||
ConsoleApp|Api|Blazor)
|
||||
if [[ "$DEPLOY_TO_CENTRAL" != "true" ]]; then
|
||||
echo "DeployToCentral=false – pomijam deploy."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "→ Publikacja $PROJECT_TYPE"
|
||||
|
||||
PUBLISH_ARGS="--no-build -c Release -o /tmp/publish"
|
||||
|
||||
if [[ "$PROJECT_TYPE" == "ConsoleApp" ]]; then
|
||||
RID=$(dotnet msbuild -getProperty:RuntimeIdentifier -noLogo 2>/dev/null || echo "linux-x64")
|
||||
SELF_CONTAINED=$(dotnet msbuild -getProperty:SelfContained -noLogo 2>/dev/null || echo "true")
|
||||
SINGLE_FILE=$(dotnet msbuild -getProperty:PublishSingleFile -noLogo 2>/dev/null || echo "true")
|
||||
PUBLISH_ARGS="$PUBLISH_ARGS --self-contained $SELF_CONTAINED -r $RID -p:PublishSingleFile=$SINGLE_FILE"
|
||||
else
|
||||
TRIMMED=$(dotnet msbuild -getProperty:PublishTrimmed -noLogo 2>/dev/null || echo "true")
|
||||
PUBLISH_ARGS="$PUBLISH_ARGS -p:PublishTrimmed=$TRIMMED"
|
||||
fi
|
||||
|
||||
dotnet publish $PUBLISH_ARGS
|
||||
|
||||
TARGET_DIR="/deploy-host/$PROJECT_TYPE/${CI_REPO_NAME}"
|
||||
mkdir -p "$TARGET_DIR"
|
||||
cp -r /tmp/publish/* "$TARGET_DIR/"
|
||||
find "$TARGET_DIR" -type f \( -name "*.dll" -o -name "*.exe" -o -perm /111 \) -exec chmod +x {} \; 2>/dev/null || true
|
||||
|
||||
echo "Deploy zakończony → $TARGET_DIR"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Nieznany ProjectType – brak akcji."
|
||||
;;
|
||||
esac
|
||||
|
||||
volumes:
|
||||
- name: nuget-cache
|
||||
temp: {}
|
||||
Reference in New Issue
Block a user