From glean-pack
Sets up GitHub Actions CI/CD for Glean connectors: PR indexing tests, staging validation, search quality checks via Node/TypeScript scripts.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin glean-packThis skill is limited to using the following tools:
Set up CI/CD for Glean custom connectors: test document transforms on every PR, validate indexing against staging, and monitor search quality.
Deploys Glean custom connectors as scheduled jobs on Cloud Run, AWS Lambda, Fly.io, or GitHub Actions for periodic indexing syncs.
Configures GitHub Actions for Algolia CI/CD: integration tests against real indices, index settings validation, and reindexing triggers on deploy.
Reviews DataHub connector implementations against 22 golden standards for compliance, code quality, silent failures, test coverage, type design, and merge readiness. Use for PR reviews, code audits, or standards verification.
Share bugs, ideas, or general feedback.
Set up CI/CD for Glean custom connectors: test document transforms on every PR, validate indexing against staging, and monitor search quality.
name: Glean Connector CI
on:
pull_request:
paths: ['src/connectors/**']
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20' }
- run: npm ci && npm test
index-staging:
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && node src/connectors/run.js
env:
GLEAN_DOMAIN: ${{ secrets.GLEAN_DOMAIN_STAGING }}
GLEAN_INDEXING_TOKEN: ${{ secrets.GLEAN_INDEXING_TOKEN_STAGING }}
search-quality:
needs: index-staging
runs-on: ubuntu-latest
steps:
- run: |
# Verify key searches return expected results
node scripts/search-quality-check.js
env:
GLEAN_DOMAIN: ${{ secrets.GLEAN_DOMAIN_STAGING }}
GLEAN_CLIENT_TOKEN: ${{ secrets.GLEAN_CLIENT_TOKEN_STAGING }}
// scripts/search-quality-check.ts
const queries = [
{ query: 'onboarding', expectDatasource: 'wiki', minResults: 1 },
{ query: 'deployment process', expectDatasource: 'confluence', minResults: 1 },
];
for (const q of queries) {
const results = await glean.search(q.query, { datasource: q.expectDatasource });
if (results.results.length < q.minResults) {
throw new Error(`Search quality fail: "${q.query}" returned ${results.results.length} results`);
}
}