@@ -62,6 +62,134 @@ jobs:
6262 cache-from : type=gha
6363 cache-to : type=gha,mode=max
6464
65+ - name : Set up Node.js for frontend development
66+ uses : actions/setup-node@v4
67+ with :
68+ node-version : ' 20'
69+ cache : ' npm'
70+ cache-dependency-path : ' **/package-lock.json'
71+
72+ - name : Install additional development tools
73+ run : |
74+ # Install common development tools that Copilot agents might need
75+ echo "Installing additional tools for Copilot agent environment..."
76+
77+ # Install Azure CLI for cloud operations
78+ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
79+
80+ # Install GitHub CLI for repository operations
81+ type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
82+ curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
83+ sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
84+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
85+ sudo apt update && sudo apt install gh -y
86+
87+ # Install EF Core tools globally
88+ dotnet tool install --global dotnet-ef
89+
90+ - name : Validate development tools
91+ run : |
92+ echo "🔍 Validating installed tools..."
93+ echo "Azure CLI: $(az --version | head -1 || echo 'Not available')"
94+ echo "GitHub CLI: $(gh --version | head -1 || echo 'Not available')"
95+ echo "EF Core CLI: $(dotnet ef --version || echo 'Not available')"
96+ echo "Node.js: $(node --version || echo 'Not available')"
97+ echo "npm: $(npm --version || echo 'Not available')"
98+
99+ - name : Create Copilot instructions file
100+ run : |
101+ mkdir -p .github
102+ cat << 'EOF' > .github/copilot-instructions.md
103+ # GitHub Copilot Instructions for EssentialCSharp.Web
104+
105+ This is an ASP.NET Core 9.0 web application with the following characteristics:
106+
107+ ## Project Structure
108+ - **EssentialCSharp.Web**: Main web application using ASP.NET Core, Razor Pages, Identity
109+ - **EssentialCSharp.Chat**: Console application for AI chat functionality using Semantic Kernel
110+ - **EssentialCSharp.Chat.Shared**: Shared libraries between projects
111+ - **EssentialCSharp.Web.Tests**: xUnit integration tests
112+ - **EssentialCSharp.Chat.Tests**: xUnit unit tests
113+
114+ ## Key Technologies
115+ - .NET 9.0 with C# 13
116+ - ASP.NET Core with Razor Pages
117+ - Entity Framework Core with SQL Server
118+ - ASP.NET Core Identity for authentication
119+ - Microsoft Semantic Kernel for AI integration
120+ - Azure OpenAI for chat functionality
121+ - Docker containerization
122+ - Azure Application Insights for telemetry
123+ - GitHub and Microsoft OAuth authentication
124+
125+ ## Development Patterns
126+ - Use centralized package management (Directory.Packages.props)
127+ - Follow Repository pattern for data access
128+ - Use dependency injection throughout
129+ - Implement proper error handling and logging
130+ - Include comprehensive integration tests
131+ - Use async/await patterns consistently
132+
133+ ## Build and Test Commands
134+ ```bash
135+ # Restore packages
136+ dotnet restore
137+
138+ # Build solution
139+ dotnet build --configuration Release --no-restore
140+
141+ # Run tests
142+ dotnet test --no-build --configuration Release
143+
144+ # Run specific project
145+ dotnet run --project EssentialCSharp.Web
146+ ```
147+
148+ ## Docker
149+ - Dockerfile in EssentialCSharp.Web/ directory
150+ - Multi-stage build with .NET 9 runtime
151+ - Requires ACCESS_TO_NUGET_FEED build arg for private packages
152+
153+ ## Configuration
154+ - Uses appsettings.json + user secrets + environment variables
155+ - Key secrets: GitHub/Microsoft OAuth, database connection, AI endpoints
156+ - See README.md for required configuration values
157+
158+ ## AI Integration
159+ - Uses Azure OpenAI through Semantic Kernel
160+ - Vector database with PostgreSQL + pgvector
161+ - Chat functionality in EssentialCSharp.Chat project
162+ - Embedding generation and retrieval
163+ EOF
164+
165+ - name : Test Copilot agent environment
166+ run : |
167+ echo "🧪 Testing Copilot agent environment capabilities..."
168+
169+ # Test basic .NET commands
170+ dotnet --list-sdks
171+ dotnet --list-runtimes
172+
173+ # Test EF Core tools
174+ dotnet ef --help > /dev/null && echo "✅ EF Core tools working"
175+
176+ # Test that we can create a simple project (cleanup afterwards)
177+ cd /tmp
178+ dotnet new console -n TestCopilotEnv
179+ cd TestCopilotEnv
180+ dotnet build
181+ cd ..
182+ rm -rf TestCopilotEnv
183+ echo "✅ Project creation and build test passed"
184+
185+ # Test Docker functionality
186+ docker --version
187+ echo "✅ Docker available"
188+
189+ # Test that our solution is properly restored and built
190+ cd ${{ github.workspace }}
191+ echo "✅ Solution build completed successfully"
192+
65193 - name : Display environment information
66194 run : |
67195 echo "✅ Environment setup complete for GitHub Copilot agents"
@@ -70,9 +198,13 @@ jobs:
70198 echo "🐳 Docker Status: Ready"
71199 echo "📂 Repository: ${{ github.repository }}"
72200 echo "🔧 This environment is configured for:"
73- echo " - .NET 9.0 development"
201+ echo " - .NET 9.0 development with C# 13 "
74202 echo " - ASP.NET Core web applications"
75- echo " - Entity Framework"
203+ echo " - Entity Framework with SQL Server "
76204 echo " - Semantic Kernel AI integration"
205+ echo " - Azure OpenAI and vector databases"
77206 echo " - Docker containerization"
78- echo " - NuGet package management (public and private feeds)"
207+ echo " - Azure CLI and GitHub CLI tools"
208+ echo " - NuGet package management (public and private feeds)"
209+ echo " - Node.js for frontend tooling"
210+ echo "📖 Copilot instructions created at .github/copilot-instructions.md"
0 commit comments