82 lines
2.7 KiB
YAML
82 lines
2.7 KiB
YAML
name: Weekly KPI Report
|
|
|
|
# Post weekly KPI report to GitHub Discussions every Monday at 9:00 AM UTC
|
|
on:
|
|
schedule:
|
|
- cron: '0 9 * * 1' # Every Monday at 9:00 AM UTC
|
|
workflow_dispatch: # Allow manual trigger
|
|
|
|
jobs:
|
|
generate-and-post-report:
|
|
runs-on: ubuntu-latest
|
|
name: Generate and post weekly KPI report
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '20'
|
|
|
|
- name: Install Dependencies
|
|
run: npm ci
|
|
|
|
- name: Generate and Post KPI Report
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GH_PROJECT_TOKEN }}
|
|
GITHUB_REPOSITORY: ${{ github.repository }}
|
|
run: |
|
|
cat > post-kpi-report.ts << 'EOF'
|
|
import { ProjectsV2Client } from './agents/github/projects-v2.js';
|
|
import { DiscussionsClient } from './agents/github/discussions.js';
|
|
|
|
async function main() {
|
|
const token = process.env.GITHUB_TOKEN!;
|
|
const [owner, repo] = process.env.GITHUB_REPOSITORY!.split('/');
|
|
|
|
// Initialize clients
|
|
const projectsClient = new ProjectsV2Client(token, {
|
|
owner,
|
|
repo,
|
|
projectNumber: parseInt(process.env.GITHUB_PROJECT_NUMBER || '1'),
|
|
});
|
|
|
|
const discussionsClient = new DiscussionsClient(token, {
|
|
owner,
|
|
repo,
|
|
});
|
|
|
|
// Initialize both clients
|
|
await projectsClient.initialize();
|
|
await discussionsClient.initialize();
|
|
|
|
// Generate KPI report
|
|
console.log('📊 Generating KPI report...');
|
|
const kpiData = await projectsClient.generateKPIReport();
|
|
|
|
console.log('KPI Data:', kpiData);
|
|
|
|
// Post to Discussions
|
|
console.log('📝 Posting to GitHub Discussions...');
|
|
const discussion = await discussionsClient.postWeeklyKPIReport(kpiData);
|
|
|
|
console.log(`✓ Posted weekly KPI report: ${discussion.url}`);
|
|
console.log(` Discussion #${discussion.number}: ${discussion.title}`);
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error('Error generating KPI report:', error);
|
|
process.exit(1);
|
|
});
|
|
EOF
|
|
|
|
npx tsx post-kpi-report.ts
|
|
|
|
- name: Summary
|
|
run: |
|
|
echo "### 📊 Weekly KPI Report Posted" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "✓ Successfully generated and posted weekly KPI report to Discussions" >> $GITHUB_STEP_SUMMARY
|
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
echo "View at: https://github.com/${{ github.repository }}/discussions" >> $GITHUB_STEP_SUMMARY
|