Skip to content

Commit d0de798

Browse files
Add Copilot configuration validation workflow
Co-authored-by: rezwana-karim <126201034+rezwana-karim@users.noreply.github.com>
1 parent 22c5b75 commit d0de798

1 file changed

Lines changed: 156 additions & 0 deletions

File tree

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
name: Copilot Configuration Validation
2+
3+
on:
4+
push:
5+
branches: [ "main", "develop" ]
6+
paths:
7+
- '.github/copilot-instructions.md'
8+
- '.copilot/**'
9+
- '.github/copilot-mcp.json'
10+
pull_request:
11+
branches: [ "main" ]
12+
paths:
13+
- '.github/copilot-instructions.md'
14+
- '.copilot/**'
15+
- '.github/copilot-mcp.json'
16+
17+
jobs:
18+
validate-copilot-config:
19+
runs-on: ubuntu-latest
20+
name: Validate Copilot Configuration
21+
22+
steps:
23+
- name: Checkout
24+
uses: actions/checkout@v4
25+
26+
- name: Setup Node.js
27+
uses: actions/setup-node@v4
28+
with:
29+
node-version: 20
30+
cache: 'npm'
31+
32+
- name: Install dependencies
33+
run: npm ci
34+
35+
- name: Validate configuration files exist
36+
run: |
37+
echo "Checking for required Copilot configuration files..."
38+
39+
# Check for repository instructions
40+
if [ ! -f ".github/copilot-instructions.md" ]; then
41+
echo "❌ Missing .github/copilot-instructions.md"
42+
exit 1
43+
else
44+
echo "✅ Found .github/copilot-instructions.md"
45+
fi
46+
47+
# Check for custom instructions
48+
if [ ! -f ".copilot/instructions.md" ]; then
49+
echo "❌ Missing .copilot/instructions.md"
50+
exit 1
51+
else
52+
echo "✅ Found .copilot/instructions.md"
53+
fi
54+
55+
# Check for development environment config
56+
if [ ! -f ".copilot/dev-environment.yml" ]; then
57+
echo "❌ Missing .copilot/dev-environment.yml"
58+
exit 1
59+
else
60+
echo "✅ Found .copilot/dev-environment.yml"
61+
fi
62+
63+
# Check for MCP configuration
64+
if [ ! -f ".github/copilot-mcp.json" ]; then
65+
echo "❌ Missing .github/copilot-mcp.json"
66+
exit 1
67+
else
68+
echo "✅ Found .github/copilot-mcp.json"
69+
fi
70+
71+
- name: Validate JSON configuration files
72+
run: |
73+
echo "Validating JSON configuration files..."
74+
75+
# Validate MCP configuration JSON
76+
if ! jq empty .github/copilot-mcp.json; then
77+
echo "❌ Invalid JSON in .github/copilot-mcp.json"
78+
exit 1
79+
else
80+
echo "✅ Valid JSON in .github/copilot-mcp.json"
81+
fi
82+
83+
- name: Validate YAML configuration files
84+
run: |
85+
echo "Validating YAML configuration files..."
86+
87+
# Install yq for YAML validation
88+
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
89+
sudo chmod +x /usr/local/bin/yq
90+
91+
# Validate development environment YAML
92+
if ! yq eval . .copilot/dev-environment.yml > /dev/null; then
93+
echo "❌ Invalid YAML in .copilot/dev-environment.yml"
94+
exit 1
95+
else
96+
echo "✅ Valid YAML in .copilot/dev-environment.yml"
97+
fi
98+
99+
- name: Validate project still builds
100+
run: |
101+
echo "Ensuring project builds successfully with current configuration..."
102+
npm run build
103+
104+
- name: Validate linting passes
105+
run: |
106+
echo "Ensuring linting passes with current configuration..."
107+
npm run lint
108+
109+
- name: Check configuration completeness
110+
run: |
111+
echo "Checking configuration completeness..."
112+
113+
# Check if copilot-instructions.md contains required sections
114+
if ! grep -q "## Project Overview" .github/copilot-instructions.md; then
115+
echo "❌ Missing Project Overview section in copilot-instructions.md"
116+
exit 1
117+
fi
118+
119+
if ! grep -q "Technology Stack" .github/copilot-instructions.md; then
120+
echo "❌ Missing Technology Stack section in copilot-instructions.md"
121+
exit 1
122+
fi
123+
124+
if ! grep -q "Development Guidelines" .github/copilot-instructions.md; then
125+
echo "❌ Missing Development Guidelines section in copilot-instructions.md"
126+
exit 1
127+
fi
128+
129+
# Check if custom instructions contain key principles
130+
if ! grep -q "Design Engineering Principles" .copilot/instructions.md; then
131+
echo "❌ Missing Design Engineering Principles in .copilot/instructions.md"
132+
exit 1
133+
fi
134+
135+
if ! grep -q "Technology Preferences" .copilot/instructions.md; then
136+
echo "❌ Missing Technology Preferences in .copilot/instructions.md"
137+
exit 1
138+
fi
139+
140+
# Check if MCP config has required structure
141+
if ! jq -e '.mcp.servers' .github/copilot-mcp.json > /dev/null; then
142+
echo "❌ Missing MCP servers configuration"
143+
exit 1
144+
fi
145+
146+
if ! jq -e '.context' .github/copilot-mcp.json > /dev/null; then
147+
echo "❌ Missing context configuration in MCP"
148+
exit 1
149+
fi
150+
151+
echo "✅ All configuration completeness checks passed"
152+
153+
- name: Report validation success
154+
run: |
155+
echo "🎉 All Copilot configuration validation checks passed!"
156+
echo "The repository is properly configured for GitHub Copilot coding agent."

0 commit comments

Comments
 (0)