-
Notifications
You must be signed in to change notification settings - Fork 0
Add service integration workflow and configuration template #16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
4c83c51
e282eaf
5cc9869
1e4b080
67c7ae1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,249 @@ | ||||||||||||||||||||||||
| name: Service Integrations Check | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Trigger only on manual dispatch by default for safety | ||||||||||||||||||||||||
| # Optionally uncomment 'push' trigger if you want automatic runs on main branch | ||||||||||||||||||||||||
| on: | ||||||||||||||||||||||||
| workflow_dispatch: | ||||||||||||||||||||||||
| inputs: | ||||||||||||||||||||||||
| verbose: | ||||||||||||||||||||||||
| description: 'Enable verbose output' | ||||||||||||||||||||||||
| required: false | ||||||||||||||||||||||||
| default: 'false' | ||||||||||||||||||||||||
| # Uncomment to enable automatic runs on push to main | ||||||||||||||||||||||||
| # push: | ||||||||||||||||||||||||
| # branches: | ||||||||||||||||||||||||
| # - main | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| jobs: | ||||||||||||||||||||||||
| integration-checks: | ||||||||||||||||||||||||
| name: Cross-Platform Integration Checks | ||||||||||||||||||||||||
| runs-on: ubuntu-latest | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| permissions: | ||||||||||||||||||||||||
| contents: read | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| steps: | ||||||||||||||||||||||||
| - name: Checkout repository | ||||||||||||||||||||||||
| uses: actions/checkout@v4 | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| - name: Check Secret Availability | ||||||||||||||||||||||||
| id: secret_check | ||||||||||||||||||||||||
| run: | | ||||||||||||||||||||||||
| echo "::group::Secret Availability Check" | ||||||||||||||||||||||||
| echo "Checking which secrets are configured (values are masked)..." | ||||||||||||||||||||||||
| echo "" | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Function to check if a secret is set | ||||||||||||||||||||||||
| check_secret() { | ||||||||||||||||||||||||
| local secret_name=$1 | ||||||||||||||||||||||||
| local secret_value=$2 | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| if [ -n "$secret_value" ]; then | ||||||||||||||||||||||||
| echo "✓ $secret_name: PRESENT" | ||||||||||||||||||||||||
| echo "${secret_name}_AVAILABLE=true" >> $GITHUB_OUTPUT | ||||||||||||||||||||||||
| else | ||||||||||||||||||||||||
| echo "✗ $secret_name: MISSING" | ||||||||||||||||||||||||
| echo "${secret_name}_AVAILABLE=false" >> $GITHUB_OUTPUT | ||||||||||||||||||||||||
| fi | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Check all secrets | ||||||||||||||||||||||||
| check_secret "OPENAI_API_KEY" "${{ secrets.OPENAI_API_KEY }}" | ||||||||||||||||||||||||
| check_secret "MANYCHAT_API_KEY" "${{ secrets.MANYCHAT_API_KEY }}" | ||||||||||||||||||||||||
| check_secret "BOTBUILDERS_API_KEY" "${{ secrets.BOTBUILDERS_API_KEY }}" | ||||||||||||||||||||||||
| check_secret "MOLTBOOK_API_KEY" "${{ secrets.MOLTBOOK_API_KEY }}" | ||||||||||||||||||||||||
| check_secret "MOLTBOT_API_KEY" "${{ secrets.MOLTBOT_API_KEY }}" | ||||||||||||||||||||||||
| check_secret "OPENCLAW_API_KEY" "${{ secrets.OPENCLAW_API_KEY }}" | ||||||||||||||||||||||||
| check_secret "GITHUB_PAT" "${{ secrets.GITHUB_PAT }}" | ||||||||||||||||||||||||
| check_secret "WEBHOOK_URL" "${{ secrets.WEBHOOK_URL }}" | ||||||||||||||||||||||||
| check_secret "SERVICE_BASE_URL_OPENCLAW" "${{ secrets.SERVICE_BASE_URL_OPENCLAW }}" | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| echo "" | ||||||||||||||||||||||||
| echo "::endgroup::" | ||||||||||||||||||||||||
| env: | ||||||||||||||||||||||||
| # All secrets are accessed through the secrets context and automatically masked | ||||||||||||||||||||||||
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | ||||||||||||||||||||||||
| MANYCHAT_API_KEY: ${{ secrets.MANYCHAT_API_KEY }} | ||||||||||||||||||||||||
| BOTBUILDERS_API_KEY: ${{ secrets.BOTBUILDERS_API_KEY }} | ||||||||||||||||||||||||
| MOLTBOOK_API_KEY: ${{ secrets.MOLTBOOK_API_KEY }} | ||||||||||||||||||||||||
| MOLTBOT_API_KEY: ${{ secrets.MOLTBOT_API_KEY }} | ||||||||||||||||||||||||
| OPENCLAW_API_KEY: ${{ secrets.OPENCLAW_API_KEY }} | ||||||||||||||||||||||||
| GITHUB_PAT: ${{ secrets.GITHUB_PAT }} | ||||||||||||||||||||||||
| WEBHOOK_URL: ${{ secrets.WEBHOOK_URL }} | ||||||||||||||||||||||||
| SERVICE_BASE_URL_OPENCLAW: ${{ secrets.SERVICE_BASE_URL_OPENCLAW }} | ||||||||||||||||||||||||
|
Comment on lines
+63
to
+73
|
||||||||||||||||||||||||
| env: | |
| # All secrets are accessed through the secrets context and automatically masked | |
| OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} | |
| MANYCHAT_API_KEY: ${{ secrets.MANYCHAT_API_KEY }} | |
| BOTBUILDERS_API_KEY: ${{ secrets.BOTBUILDERS_API_KEY }} | |
| MOLTBOOK_API_KEY: ${{ secrets.MOLTBOOK_API_KEY }} | |
| MOLTBOT_API_KEY: ${{ secrets.MOLTBOT_API_KEY }} | |
| OPENCLAW_API_KEY: ${{ secrets.OPENCLAW_API_KEY }} | |
| GITHUB_PAT: ${{ secrets.GITHUB_PAT }} | |
| WEBHOOK_URL: ${{ secrets.WEBHOOK_URL }} | |
| SERVICE_BASE_URL_OPENCLAW: ${{ secrets.SERVICE_BASE_URL_OPENCLAW }} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,104 @@ | ||
| { | ||
| "description": "Example configuration for external service integrations. Copy to services.json and fill in actual values. NEVER commit secrets to version control.", | ||
| "services": { | ||
| "openai": { | ||
| "description": "OpenAI API integration", | ||
| "env_vars": { | ||
| "OPENAI_API_KEY": { | ||
| "description": "OpenAI API key for GPT and other AI services", | ||
| "required": true, | ||
| "example": "sk-..." | ||
| } | ||
| } | ||
| }, | ||
| "manychat": { | ||
| "description": "ManyChat bot platform integration", | ||
| "env_vars": { | ||
| "MANYCHAT_API_KEY": { | ||
| "description": "ManyChat API key for chatbot operations", | ||
| "required": true, | ||
| "example": "mc_..." | ||
| } | ||
| } | ||
| }, | ||
| "botbuilders": { | ||
| "description": "BotBuilders platform integration", | ||
| "env_vars": { | ||
| "BOTBUILDERS_API_KEY": { | ||
| "description": "BotBuilders API key", | ||
| "required": true, | ||
| "example": "bb_..." | ||
| } | ||
| } | ||
| }, | ||
| "moltbook": { | ||
| "description": "Moltbook service integration", | ||
| "env_vars": { | ||
| "MOLTBOOK_API_KEY": { | ||
| "description": "Moltbook API key", | ||
| "required": true, | ||
| "example": "mb_..." | ||
| } | ||
| } | ||
| }, | ||
| "moltbot": { | ||
| "description": "Moltbot service integration", | ||
| "env_vars": { | ||
| "MOLTBOT_API_KEY": { | ||
| "description": "Moltbot API key", | ||
| "required": true, | ||
| "example": "mbot_..." | ||
| } | ||
| } | ||
| }, | ||
| "openclaw": { | ||
| "description": "OpenClaw service integration", | ||
| "env_vars": { | ||
| "OPENCLAW_API_KEY": { | ||
| "description": "OpenClaw API key", | ||
| "required": true, | ||
| "example": "oc_..." | ||
| }, | ||
| "SERVICE_BASE_URL_OPENCLAW": { | ||
| "description": "Base URL for OpenClaw API endpoints", | ||
| "required": false, | ||
| "example": "https://api.openclaw.example.com" | ||
| } | ||
| } | ||
| }, | ||
| "github": { | ||
| "description": "GitHub API integration (beyond current repository)", | ||
| "env_vars": { | ||
| "GITHUB_PAT": { | ||
| "description": "GitHub Personal Access Token for extended API access", | ||
| "required": false, | ||
| "example": "ghp_..." | ||
| } | ||
| } | ||
| }, | ||
| "webhooks": { | ||
| "description": "Webhook configurations", | ||
| "env_vars": { | ||
| "WEBHOOK_URL": { | ||
| "description": "Generic webhook URL for notifications and callbacks", | ||
| "required": false, | ||
| "example": "https://example.com/webhook" | ||
| } | ||
| } | ||
| } | ||
| }, | ||
| "service_base_url_pattern": { | ||
| "description": "For services requiring custom base URLs, use pattern: SERVICE_BASE_URL_<SERVICE_NAME>", | ||
| "examples": [ | ||
| "SERVICE_BASE_URL_OPENCLAW", | ||
| "SERVICE_BASE_URL_MANYCHAT", | ||
| "SERVICE_BASE_URL_MOLTBOOK" | ||
| ] | ||
| }, | ||
| "notes": [ | ||
| "All API keys should be stored in GitHub Secrets for CI/CD workflows", | ||
| "For local development, use .env file (never commit to git)", | ||
| "Required secrets must be configured for integrations workflow to succeed", | ||
| "Optional secrets will cause their respective checks to be skipped if not present" | ||
| ] | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The
verboseinput parameter is defined but never used in the workflow. Either implement the verbose logging functionality or remove this unused input parameter to avoid confusion.