This repository was archived by the owner on Apr 17, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup-github-app.sh
More file actions
executable file
·186 lines (159 loc) · 5.72 KB
/
Copy pathsetup-github-app.sh
File metadata and controls
executable file
·186 lines (159 loc) · 5.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#!/bin/bash
# GitHub App Setup Helper Script
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}=========================================================${NC}"
echo -e "${BLUE} GitHub App Setup Helper for github-package ${NC}"
echo -e "${BLUE}=========================================================${NC}"
echo -e "${GREEN}This script will guide you through setting up a GitHub App${NC}"
echo -e "${YELLOW}Please have your browser ready to create the App on GitHub${NC}"
echo ""
# Step 1: Direct user to create the app
echo -e "${BLUE}Step 1: Create GitHub App${NC}"
echo -e "Please go to: ${GREEN}https://github.com/settings/apps/new${NC}"
echo -e "Or for an organization: ${GREEN}https://github.com/organizations/YOUR_ORG/settings/apps/new${NC}"
echo ""
echo -e "${YELLOW}Use these settings:${NC}"
echo " - App name: github-package-scanner (or your choice)"
echo " - Homepage URL: https://github.com/YOUR_USERNAME/github-package"
echo " - Webhook: ${RED}Uncheck 'Active'${NC}"
echo ""
echo -e "${YELLOW}Repository permissions:${NC}"
echo " - Contents: Read"
echo " - Issues: Read"
echo " - Pull requests: Read"
echo " - Metadata: Read (automatically selected)"
echo ""
echo -e "${YELLOW}Account permissions:${NC}"
echo " - Email addresses: Read (optional)"
echo " - Profile: Read"
echo ""
echo -e "${YELLOW}Where can this GitHub App be installed?${NC}"
echo " - Choose 'Any account' for public repos"
echo " - Choose 'Only on this account' for private use"
echo ""
read -p "Press Enter after creating the App..."
# Step 2: Get App ID
echo -e "${BLUE}Step 2: Enter your App ID${NC}"
echo -e "Find this on your App's settings page"
read -p "App ID: " APP_ID
# Step 3: Generate and get private key
echo -e "${BLUE}Step 3: Private Key${NC}"
echo -e "1. On your App settings page, scroll to 'Private keys' section"
echo -e "2. Click 'Generate a private key'"
echo -e "3. Save the downloaded .pem file"
echo ""
read -p "Enter the full path to your downloaded .pem file: " PEM_FILE
if [ ! -f "$PEM_FILE" ]; then
echo -e "${RED}Error: File not found: $PEM_FILE${NC}"
exit 1
fi
# Step 4: Install the App
echo -e "${BLUE}Step 4: Install the App${NC}"
echo -e "1. Go to your App's settings page"
echo -e "2. Click 'Install App' in the left sidebar"
echo -e "3. Choose the account/organization"
echo -e "4. Select 'All repositories' or specific ones"
echo -e "5. After installation, look at the URL:"
echo -e " ${YELLOW}https://github.com/settings/installations/{INSTALLATION_ID}${NC}"
echo ""
read -p "Enter the Installation ID from the URL: " INSTALLATION_ID
# Step 5: Create or update .env file
echo -e "${BLUE}Step 5: Updating environment configuration${NC}"
# Backup existing .env if it exists
if [ -f ".env" ]; then
cp .env .env.backup-$(date +%Y%m%d-%H%M%S)
echo -e "${GREEN}Backed up existing .env file${NC}"
fi
# Read the private key content
PRIVATE_KEY_CONTENT=$(cat "$PEM_FILE")
# Create .env.template if it doesn't exist
if [ ! -f ".env.template" ]; then
cat > .env.template << 'EOF'
# GitHub Authentication (choose one method)
## Option 1: GitHub App (recommended for production)
GITHUB_APP_ID=
GITHUB_INSTALLATION_ID=
GITHUB_PRIVATE_KEY=
## Option 2: Personal Access Token
# GITHUB_TOKEN=
# Google Cloud Storage Configuration
GCS_BUCKET_NAME=your-bucket-name
GCS_ACCESS_KEY_ID=your-access-key
GCS_SECRET_ACCESS_KEY=your-secret-key
GCS_ENDPOINT=https://storage.googleapis.com
GCS_REGION=auto
# Optional Configuration
PORT=8080
NODE_ENV=production
AUTO_START_PROCESSING=true
LOG_LEVEL=info
LOCAL_MONITORING=true
# GCP Deployment (for deploy script)
PROJECT_ID=your-gcp-project-id
REGION=us-central1
EOF
echo -e "${GREEN}Created .env.template for reference${NC}"
fi
# Update or create .env file
echo -e "${YELLOW}Updating .env file with GitHub App credentials...${NC}"
# Check if .env exists and has GitHub App settings
if [ -f ".env" ]; then
# Remove old GitHub App settings if they exist
grep -v "^GITHUB_APP_ID=" .env | grep -v "^GITHUB_INSTALLATION_ID=" | grep -v "^GITHUB_PRIVATE_KEY=" > .env.tmp
mv .env.tmp .env
fi
# Add new GitHub App settings
{
echo "# GitHub App Authentication"
echo "GITHUB_APP_ID=$APP_ID"
echo "GITHUB_INSTALLATION_ID=$INSTALLATION_ID"
echo "GITHUB_PRIVATE_KEY=\"$PRIVATE_KEY_CONTENT\""
echo ""
} >> .env
echo -e "${GREEN}GitHub App configuration added to .env${NC}"
# Step 6: Test configuration
echo -e "${BLUE}Step 6: Testing configuration${NC}"
# Source the .env file
set -a
source .env
set +a
# Quick test with Node.js
node -e "
const config = {
appId: process.env.GITHUB_APP_ID,
installationId: process.env.GITHUB_INSTALLATION_ID,
privateKey: process.env.GITHUB_PRIVATE_KEY
};
if (config.appId && config.installationId && config.privateKey) {
console.log('✅ GitHub App configuration looks good!');
console.log('App ID:', config.appId);
console.log('Installation ID:', config.installationId);
console.log('Private Key:', config.privateKey.substring(0, 50) + '...');
} else {
console.error('❌ Missing configuration');
process.exit(1);
}
"
if [ $? -eq 0 ]; then
echo -e "${GREEN}=========================================================${NC}"
echo -e "${GREEN}✅ GitHub App setup complete!${NC}"
echo -e "${GREEN}=========================================================${NC}"
echo ""
echo -e "${YELLOW}Next steps:${NC}"
echo "1. Test locally: npm start"
echo "2. Deploy to Cloud Run: ./deploy-to-cloud-run.sh"
echo ""
echo -e "${BLUE}Your App benefits:${NC}"
echo " - Higher rate limits (5000 requests/hour)"
echo " - Better security and permissions"
echo " - No more permission errors for public repos"
echo " - Production-ready authentication"
else
echo -e "${RED}Configuration test failed. Please check your settings.${NC}"
exit 1
fi