Refactor compare-view component to use observables for data loading, enhancing performance and responsiveness. Update compare service interfaces and methods for improved delta computation. Modify audit log component to handle optional event properties gracefully. Optimize Monaco editor worker loading to reduce bundle size. Introduce shared SCSS mixins for consistent styling across components. Add Gitea test instance setup and NuGet package publishing test scripts for CI/CD validation. Update documentation paths and ensure all references are accurate.
This commit is contained in:
181
devops/scripts/test-package-publish.sh
Normal file
181
devops/scripts/test-package-publish.sh
Normal file
@@ -0,0 +1,181 @@
|
||||
#!/bin/bash
|
||||
# test-package-publish.sh - Test NuGet package publishing to local Gitea
|
||||
# Sprint: SPRINT_20251226_004_CICD
|
||||
#
|
||||
# Prerequisites:
|
||||
# - Docker running
|
||||
# - Gitea test instance running (docker compose -f devops/compose/docker-compose.gitea-test.yaml up -d)
|
||||
# - GITEA_TEST_TOKEN environment variable set
|
||||
# - GITEA_TEST_OWNER environment variable set (default: stellaops)
|
||||
#
|
||||
# Usage:
|
||||
# export GITEA_TEST_TOKEN="your-access-token"
|
||||
# ./test-package-publish.sh # Test with sample package
|
||||
# ./test-package-publish.sh --module Authority # Test specific module
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
|
||||
# Configuration
|
||||
GITEA_URL="${GITEA_TEST_URL:-http://localhost:3000}"
|
||||
GITEA_OWNER="${GITEA_TEST_OWNER:-stellaops}"
|
||||
GITEA_TOKEN="${GITEA_TEST_TOKEN:-}"
|
||||
TEST_MODULE=""
|
||||
DRY_RUN=false
|
||||
|
||||
# Colors
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[0;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Parse arguments
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--module)
|
||||
TEST_MODULE="$2"
|
||||
shift 2
|
||||
;;
|
||||
--dry-run)
|
||||
DRY_RUN=true
|
||||
shift
|
||||
;;
|
||||
--help)
|
||||
echo "Usage: $0 [OPTIONS]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " --module MODULE Test specific module (e.g., Authority)"
|
||||
echo " --dry-run Validate without pushing"
|
||||
echo " --help Show this help message"
|
||||
echo ""
|
||||
echo "Environment Variables:"
|
||||
echo " GITEA_TEST_URL Gitea URL (default: http://localhost:3000)"
|
||||
echo " GITEA_TEST_OWNER Package owner (default: stellaops)"
|
||||
echo " GITEA_TEST_TOKEN Access token with package:write scope"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "=== Package Publishing Test ==="
|
||||
echo "Gitea URL: $GITEA_URL"
|
||||
echo "Owner: $GITEA_OWNER"
|
||||
echo "Dry Run: $DRY_RUN"
|
||||
|
||||
# Check prerequisites
|
||||
if [[ -z "$GITEA_TOKEN" && "$DRY_RUN" == "false" ]]; then
|
||||
echo -e "${RED}ERROR: GITEA_TEST_TOKEN environment variable is required${NC}"
|
||||
echo "Generate a token at: $GITEA_URL/user/settings/applications"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if Gitea is running
|
||||
if ! curl -s "$GITEA_URL/api/healthz" >/dev/null 2>&1; then
|
||||
echo -e "${YELLOW}WARNING: Gitea not reachable at $GITEA_URL${NC}"
|
||||
echo "Start it with: docker compose -f devops/compose/docker-compose.gitea-test.yaml up -d"
|
||||
if [[ "$DRY_RUN" == "false" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# NuGet source URL
|
||||
NUGET_SOURCE="$GITEA_URL/api/packages/$GITEA_OWNER/nuget/index.json"
|
||||
echo "NuGet Source: $NUGET_SOURCE"
|
||||
echo ""
|
||||
|
||||
# Create a test package
|
||||
TEST_DIR="$REPO_ROOT/out/package-test"
|
||||
mkdir -p "$TEST_DIR"
|
||||
|
||||
# If no module specified, use a simple test
|
||||
if [[ -z "$TEST_MODULE" ]]; then
|
||||
echo "=== Creating Test Package ==="
|
||||
|
||||
# Create a minimal test package
|
||||
TEST_PROJ_DIR="$TEST_DIR/StellaOps.PackageTest"
|
||||
mkdir -p "$TEST_PROJ_DIR"
|
||||
|
||||
cat > "$TEST_PROJ_DIR/StellaOps.PackageTest.csproj" <<'EOF'
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<PackageId>StellaOps.PackageTest</PackageId>
|
||||
<Version>0.0.1-test</Version>
|
||||
<Authors>StellaOps</Authors>
|
||||
<Description>Test package for registry validation</Description>
|
||||
<PackageLicenseExpression>AGPL-3.0-or-later</PackageLicenseExpression>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
EOF
|
||||
|
||||
cat > "$TEST_PROJ_DIR/Class1.cs" <<'EOF'
|
||||
namespace StellaOps.PackageTest;
|
||||
public class TestClass { }
|
||||
EOF
|
||||
|
||||
echo "Building test package..."
|
||||
dotnet pack "$TEST_PROJ_DIR/StellaOps.PackageTest.csproj" -c Release -o "$TEST_DIR/packages"
|
||||
|
||||
PACKAGE_FILE=$(find "$TEST_DIR/packages" -name "*.nupkg" | head -1)
|
||||
else
|
||||
echo "=== Packing Module: $TEST_MODULE ==="
|
||||
|
||||
# Find the module's main project
|
||||
MODULE_PROJ=$(find "$REPO_ROOT/src" -path "*/$TEST_MODULE/*" -name "StellaOps.$TEST_MODULE.csproj" | head -1)
|
||||
|
||||
if [[ -z "$MODULE_PROJ" ]]; then
|
||||
echo -e "${RED}ERROR: Module project not found for $TEST_MODULE${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Project: $MODULE_PROJ"
|
||||
dotnet pack "$MODULE_PROJ" -c Release -p:Version=0.0.1-test -o "$TEST_DIR/packages"
|
||||
|
||||
PACKAGE_FILE=$(find "$TEST_DIR/packages" -name "*.nupkg" | head -1)
|
||||
fi
|
||||
|
||||
if [[ -z "$PACKAGE_FILE" ]]; then
|
||||
echo -e "${RED}ERROR: No package file created${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Package created: $PACKAGE_FILE"
|
||||
echo ""
|
||||
|
||||
if [[ "$DRY_RUN" == "true" ]]; then
|
||||
echo -e "${YELLOW}=== DRY RUN: Skipping push ===${NC}"
|
||||
echo "Package validated successfully!"
|
||||
echo ""
|
||||
echo "To push manually:"
|
||||
echo " dotnet nuget push \"$PACKAGE_FILE\" \\"
|
||||
echo " --source $NUGET_SOURCE \\"
|
||||
echo " --api-key YOUR_TOKEN"
|
||||
else
|
||||
echo "=== Pushing Package ==="
|
||||
if dotnet nuget push "$PACKAGE_FILE" \
|
||||
--source "$NUGET_SOURCE" \
|
||||
--api-key "$GITEA_TOKEN" \
|
||||
--skip-duplicate; then
|
||||
echo ""
|
||||
echo -e "${GREEN}SUCCESS: Package pushed to Gitea registry${NC}"
|
||||
echo "View at: $GITEA_URL/$GITEA_OWNER/-/packages"
|
||||
else
|
||||
echo ""
|
||||
echo -e "${RED}FAILED: Package push failed${NC}"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== Cleanup ==="
|
||||
rm -rf "$TEST_DIR"
|
||||
echo "Test directory cleaned up"
|
||||
echo ""
|
||||
echo -e "${GREEN}Done!${NC}"
|
||||
Reference in New Issue
Block a user