LetsTryGPT/agent4-implementation
0
1#!/bin/bash2 3# Setup GitHub Secrets for agent4-implementation4# This script uses the GitHub API to set repository secrets5 6set -e7 8REPO="NovusAevum/agent4-implementation"9GITHUB_TOKEN="${GITHUB_TOKEN:-}"10 11if [ -z "$GITHUB_TOKEN" ]; then12 echo "โ Error: GITHUB_TOKEN environment variable is not set"13 echo "Please set it with: export GITHUB_TOKEN='your_token_here'"14 exit 115fi16 17echo "๐ Setting up GitHub Secrets for $REPO..."18 19# Function to encrypt and set a secret20set_secret() {21 local secret_name=$122 local secret_value=$223 24 echo "Setting $secret_name..."25 26 # Get public key27 response=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \28 "https://api.github.com/repos/$REPO/actions/secrets/public-key")29 30 key_id=$(echo "$response" | jq -r '.key_id')31 public_key=$(echo "$response" | jq -r '.key')32 33 # Encrypt the secret using Python and libsodium34 encrypted=$(python3 << EOF35import base6436import json37from nacl import encoding, public38 39def encrypt_secret(public_key: str, secret_value: str) -> str:40 public_key_bytes = base64.b64decode(public_key)41 public_key_obj = public.PublicKey(public_key_bytes)42 sealed_box = public.SealedBox(public_key_obj)43 encrypted = sealed_box.encrypt(secret_value.encode("utf-8"))44 return base64.b64encode(encrypted).decode("utf-8")45 46print(encrypt_secret("$public_key", "$secret_value"))47EOF48)49 50 # Set the secret51 curl -s -X PUT \52 -H "Authorization: token $GITHUB_TOKEN" \53 -H "Content-Type: application/json" \54 -d "{\"encrypted_value\":\"$encrypted\",\"key_id\":\"$key_id\"}" \55 "https://api.github.com/repos/$REPO/actions/secrets/$secret_name" > /dev/null56 57 echo "โ
$secret_name set successfully"58}59 60# Install PyNaCl if not present61if ! python3 -c "import nacl" 2>/dev/null; then62 echo "๐ฆ Installing PyNaCl..."63 pip3 install PyNaCl --quiet64fi65 66# Set all secrets from environment variables67HF_TOKEN_VALUE="${HF_TOKEN:-}"68HF_USERNAME_VALUE="${HF_USERNAME:-LetsTryGPT}"69VERCEL_KEY_VALUE="${VERCEL_AI_GATEWAY_API_KEY:-}"70 71if [ -z "$HF_TOKEN_VALUE" ]; then72 echo "โ ๏ธ Warning: HF_TOKEN not set, skipping..."73else74 set_secret "HF_TOKEN" "$HF_TOKEN_VALUE"75fi76 77set_secret "HF_USERNAME" "$HF_USERNAME_VALUE"78 79if [ -z "$VERCEL_KEY_VALUE" ]; then80 echo "โ ๏ธ Warning: VERCEL_AI_GATEWAY_API_KEY not set, skipping..."81else82 set_secret "VERCEL_AI_GATEWAY_API_KEY" "$VERCEL_KEY_VALUE"83fi84 85echo ""86echo "๐ All secrets configured successfully!"87echo ""88echo "Configured secrets:"89echo " - HF_TOKEN"90echo " - HF_USERNAME"91echo " - VERCEL_AI_GATEWAY_API_KEY"92echo ""93echo "Note: You may need to add additional secrets for Vercel deployment:"94echo " - VERCEL_TOKEN"95echo " - VERCEL_ORG_ID"96echo " - VERCEL_PROJECT_ID"97 