Skip to main content

signaloid-cli github

Manage GitHub integration with Signaloid.

Synopsis

signaloid-cli github <command> [options]

Description

The github command group allows you to manage GitHub account integration with Signaloid. This integration enables:

  • Connecting Signaloid to your GitHub account
  • Accessing private repositories
  • Building and running code from GitHub repos
  • Automated CI/CD workflows
  • Repository management through Signaloid

Commands

  • status - Display current GitHub integration status
  • connect - Create or update GitHub integration
  • disconnect - Remove GitHub integration
  • proxy - Proxy GitHub API requests
  • repos - List accessible GitHub repositories
  • branches - List repository branches

GitHub Integration

Authentication

To integrate GitHub with Signaloid, you need:

  1. GitHub Username - Your GitHub account username
  2. Personal Access Token (PAT) - A GitHub token with appropriate permissions

Required Permissions

Your GitHub Personal Access Token should have:

  • repo - Full control of private repositories
  • read:org - Read organization membership (if using org repos)

Creating a GitHub PAT

  1. Go to GitHub Settings → Developer settings → Personal access tokens
  2. Click "Generate new token"
  3. Select required scopes (repo, read:org)
  4. Generate and copy the token

Common Workflows

Initial Setup

# 1. Check current GitHub integration status
signaloid-cli github status

# 2. Connect GitHub account
signaloid-cli github connect \
--username myusername \
--token ghp_abc123xyz...

# 3. Verify connection
signaloid-cli github repos

Repository Integration

# 1. List accessible repos
signaloid-cli github repos

# 2. Connect a repository to Signaloid
signaloid-cli repos connect \
--url https://github.com/myusername/myrepo

# 3. List branches
signaloid-cli github branches \
--owner myusername \
--repo myrepo

# 4. Create build from repository
signaloid-cli builds create:repo \
--repo-id <repo-id> \
--branch main

CI/CD Automation

#!/bin/bash
# Automated build on push

REPO_ID="repo-abc123"
BRANCH="main"

# Get latest commit
COMMIT=$(signaloid-cli github branches \
--owner myusername \
--repo myrepo | \
jq -r '.[] | select(.name == "main") | .commit.sha')

# Create build
BUILD_ID=$(signaloid-cli builds create:repo \
--repo-id $REPO_ID \
--commit $COMMIT | \
jq -r '.BuildID')

# Wait for build
signaloid-cli builds watch --build-id $BUILD_ID

# Run task if build succeeds
if [ $? -eq 0 ]; then
signaloid-cli tasks create --build-id $BUILD_ID
fi

GitHub API Proxy

The proxy command allows you to make GitHub API requests through Signaloid:

# Get user information
signaloid-cli github proxy --path user

# List repositories
signaloid-cli github proxy --path user/repos

# Get repository details
signaloid-cli github proxy --path repos/owner/name

# List branches
signaloid-cli github proxy --path repos/owner/name/branches

Complete Integration Example

#!/bin/bash

# 1. Connect GitHub
echo "Connecting GitHub account..."
signaloid-cli github connect \
--username myusername \
--token $GITHUB_TOKEN

# 2. Verify connection
echo "Verifying connection..."
signaloid-cli github status

# 3. List available repos
echo "Available repositories:"
signaloid-cli github repos | jq -r '.[].full_name'

# 4. Connect specific repo to Signaloid
echo "Connecting repository..."
REPO_RESPONSE=$(signaloid-cli repos connect \
--url https://github.com/myusername/myproject \
--branch main)

REPO_ID=$(echo $REPO_RESPONSE | jq -r '.RepositoryID')
echo "Repository connected: $REPO_ID"

# 5. Create build from repo
echo "Creating build..."
BUILD_ID=$(signaloid-cli builds create:repo \
--repo-id $REPO_ID | jq -r '.BuildID')

# 6. Watch build progress
signaloid-cli builds watch --build-id $BUILD_ID

# 7. Run task
TASK_ID=$(signaloid-cli tasks create \
--build-id $BUILD_ID | jq -r '.TaskID')

# 8. Get results
signaloid-cli tasks watch --task-id $TASK_ID
signaloid-cli tasks output --task-id $TASK_ID

Multiple Accounts

You can manage GitHub integration for different users:

# Check another user's GitHub status (requires permissions)
signaloid-cli github status --user-id user-xyz

# Connect GitHub for specific user
signaloid-cli github connect \
--user-id user-xyz \
--username their-github-username \
--token their-github-token

Security Considerations

Token Storage

  • Tokens are securely stored in Signaloid's infrastructure
  • Never commit tokens to version control
  • Rotate tokens periodically

Token Scope

  • Use minimum required permissions
  • Create separate tokens for different purposes
  • Revoke unused tokens

Best Practices

# Store token in environment variable
export GITHUB_TOKEN="ghp_..."

# Use in command
signaloid-cli github connect \
--username myusername \
--token "$GITHUB_TOKEN"

# Clear token from environment when done
unset GITHUB_TOKEN

Troubleshooting

Connection Issues

# Check current status
signaloid-cli github status

# Reconnect with updated token
signaloid-cli github connect \
--username myusername \
--token $NEW_TOKEN

# Test connection with repo list
signaloid-cli github repos

Repository Access

# Verify repo is accessible
signaloid-cli github proxy \
--path repos/owner/name

# Check if token has correct permissions
signaloid-cli github proxy --path user | jq '.scopes'

Exit Codes

CodeDescription
0Success
1Error (authentication failed, invalid token, API error)

See Also