Update .woodpecker.yml
This commit is contained in:
148
.woodpecker.yml
148
.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:
|
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:
|
restore:
|
||||||
image: mcr.microsoft.com/dotnet/sdk:8.0
|
image: mcr.microsoft.com/dotnet/sdk:latest
|
||||||
commands:
|
commands:
|
||||||
- dotnet restore --no-cache --force
|
- dotnet restore
|
||||||
depends_on:
|
volumes:
|
||||||
- clone-manual
|
- nuget-cache:/root/.nuget/packages
|
||||||
- add-local-nuget-source
|
|
||||||
|
|
||||||
build:
|
|
||||||
image: mcr.microsoft.com/dotnet/sdk:8.0
|
|
||||||
commands:
|
|
||||||
- dotnet build --no-restore -c Release
|
|
||||||
depends_on:
|
|
||||||
- restore
|
|
||||||
|
|
||||||
test:
|
test:
|
||||||
image: mcr.microsoft.com/dotnet/sdk:8.0
|
image: mcr.microsoft.com/dotnet/sdk:latest
|
||||||
commands:
|
commands:
|
||||||
- dotnet test --no-build -c Release --logger "trx" --results-directory ./test-results
|
- dotnet test --no-restore --configuration Release --logger "trx" --results-directory /tmp/test-results
|
||||||
depends_on:
|
|
||||||
- build
|
|
||||||
|
|
||||||
pack-nuget:
|
build:
|
||||||
image: mcr.microsoft.com/dotnet/sdk:8.0
|
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:
|
commands:
|
||||||
- |
|
- |
|
||||||
for proj in $(find . -name "*DataModel.csproj"); do
|
set -euo pipefail
|
||||||
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
|
|
||||||
|
|
||||||
publish-api:
|
echo "=== Informacje o projekcie ==="
|
||||||
image: mcr.microsoft.com/dotnet/sdk:8.0
|
echo "Repo: ${CI_REPO_NAME}"
|
||||||
commands:
|
echo "Commit: ${CI_COMMIT_SHA:0:8}"
|
||||||
- |
|
echo "Branch/Tag: ${CI_COMMIT_REF}"
|
||||||
for proj in $(find . -name "*API.csproj"); do
|
echo "SDK version: $(dotnet --version)"
|
||||||
proj_name=$(basename "$proj" .csproj)
|
|
||||||
echo "Publishing $proj"
|
# Odczytujemy tylko metadane typu projektu
|
||||||
dotnet publish "$proj" --no-build -c Release -o ./publish/$proj_name
|
PROJECT_TYPE=$(dotnet msbuild -getProperty:ProjectType -noLogo 2>/dev/null || echo "Unknown")
|
||||||
done
|
DEPLOY_TO_CENTRAL=$(dotnet msbuild -getProperty:DeployToCentral -noLogo 2>/dev/null || echo "false")
|
||||||
when:
|
|
||||||
branch: ${CI_REPO_DEFAULT_BRANCH}
|
echo "ProjectType: $PROJECT_TYPE"
|
||||||
event: push
|
echo "DeployToCentral: $DEPLOY_TO_CENTRAL"
|
||||||
path:
|
|
||||||
include:
|
case "$PROJECT_TYPE" in
|
||||||
- "**/*API.csproj"
|
DataModel)
|
||||||
depends_on:
|
echo "→ Pakowanie i publikacja do BaGet"
|
||||||
- test # opcjonalnie
|
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
|
||||||
|
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