RyZ commited on
Commit
3bb4e96
·
1 Parent(s): 083898e

feat: git clone private repository inside Kaggle notebook with GH_TOKEN secret support

Browse files
Files changed (1) hide show
  1. scripts/build_kaggle_deploy.py +33 -6
scripts/build_kaggle_deploy.py CHANGED
@@ -27,10 +27,12 @@ def build_deploy_dir():
27
  "metadata": {},
28
  "outputs": [],
29
  "source": [
30
- "# 1. System/GPU Information Check\n",
31
  "import torch\n",
32
  "import sys\n",
33
  "import os\n",
 
 
34
  "\n",
35
  "print(\"=== Kaggle GPU & System Check ===\")\n",
36
  "print(f\"Python Version: {sys.version}\")\n",
@@ -41,30 +43,55 @@ def build_deploy_dir():
41
  "else:\n",
42
  " print(\"WARNING: GPU is not active. Please enable GPU in the Kaggle settings for optimal performance.\")\n",
43
  "\n",
44
- "# 2. Check Kaggle secrets\n",
45
  "print(\"\\n=== Kaggle Secrets Validation ===\")\n",
 
46
  "try:\n",
47
  " from kaggle_secrets import UserSecretsClient\n",
48
  " user_secrets = UserSecretsClient()\n",
49
  " db_url = user_secrets.get_secret(\"DATABASE_URL\")\n",
50
  " rabbitmq_url = user_secrets.get_secret(\"RABBITMQ_URL\")\n",
 
51
  " print(f\"DATABASE_URL secret: {'FOUND' if db_url else 'MISSING'}\")\n",
52
  " print(f\"RABBITMQ_URL secret: {'FOUND' if rabbitmq_url else 'MISSING'}\")\n",
 
53
  "except Exception as e:\n",
54
  " print(f\"Warning: Could not check secrets: {e}\")\n",
55
  "\n",
56
- "# 3. Install Package dependencies\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  "print(\"\\n=== Installing Clean Architecture Package ===\")\n",
58
- "import subprocess\n",
59
  "try:\n",
60
- " # Installs the local code in editable mode with all optional dependencies\n",
61
  " subprocess.check_call([sys.executable, \"-m\", \"pip\", \"install\", \"-e\", \".[all]\"])\n",
62
  " print(\"Package & dependencies installed successfully.\")\n",
63
  "except Exception as e:\n",
64
  " print(f\"Error installing package dependencies: {e}\")\n",
65
  " sys.exit(1)\n",
66
  "\n",
67
- "# 4. Start the Message Consumer\n",
68
  "print(\"\\n=== Launching Consumer Daemon ===\")\n",
69
  "try:\n",
70
  " subprocess.check_call([sys.executable, \"-m\", \"src.interface.consumer.run_consumer\"])\n",
 
27
  "metadata": {},
28
  "outputs": [],
29
  "source": [
30
+ "# 1. GPU & CUDA Check\n",
31
  "import torch\n",
32
  "import sys\n",
33
  "import os\n",
34
+ "import subprocess\n",
35
+ "import shutil\n",
36
  "\n",
37
  "print(\"=== Kaggle GPU & System Check ===\")\n",
38
  "print(f\"Python Version: {sys.version}\")\n",
 
43
  "else:\n",
44
  " print(\"WARNING: GPU is not active. Please enable GPU in the Kaggle settings for optimal performance.\")\n",
45
  "\n",
46
+ "# 2. Load Kaggle User Secrets\n",
47
  "print(\"\\n=== Kaggle Secrets Validation ===\")\n",
48
+ "gh_token = None\n",
49
  "try:\n",
50
  " from kaggle_secrets import UserSecretsClient\n",
51
  " user_secrets = UserSecretsClient()\n",
52
  " db_url = user_secrets.get_secret(\"DATABASE_URL\")\n",
53
  " rabbitmq_url = user_secrets.get_secret(\"RABBITMQ_URL\")\n",
54
+ " gh_token = user_secrets.get_secret(\"GH_TOKEN\")\n",
55
  " print(f\"DATABASE_URL secret: {'FOUND' if db_url else 'MISSING'}\")\n",
56
  " print(f\"RABBITMQ_URL secret: {'FOUND' if rabbitmq_url else 'MISSING'}\")\n",
57
+ " print(f\"GH_TOKEN secret: {'FOUND' if gh_token else 'MISSING'}\")\n",
58
  "except Exception as e:\n",
59
  " print(f\"Warning: Could not check secrets: {e}\")\n",
60
  "\n",
61
+ "# 3. Clone Repository (Since Kaggle CLI only uploads the notebook itself)\n",
62
+ "print(\"\\n=== Cloning Repository ===\")\n",
63
+ "repo_dir = \"/kaggle/working/ETL-Ingestion\"\n",
64
+ "if os.path.exists(repo_dir):\n",
65
+ " print(f\"Removing existing repository directory at {repo_dir}...\")\n",
66
+ " shutil.rmtree(repo_dir)\n",
67
+ "\n",
68
+ "if gh_token:\n",
69
+ " print(\"Cloning private repository using GH_TOKEN...\")\n",
70
+ " clone_url = f\"https://x-access-token:{gh_token}@github.com/FP-KKA/ETL-Ingestion.git\"\n",
71
+ "else:\n",
72
+ " print(\"WARNING: GH_TOKEN secret not found. Attempting public clone...\")\n",
73
+ " clone_url = \"https://github.com/FP-KKA/ETL-Ingestion.git\"\n",
74
+ "\n",
75
+ "try:\n",
76
+ " subprocess.check_call([\"git\", \"clone\", clone_url, repo_dir])\n",
77
+ " print(\"Repository cloned successfully.\")\n",
78
+ "except Exception as e:\n",
79
+ " print(f\"Error cloning repository: {e}\")\n",
80
+ " sys.exit(1)\n",
81
+ "\n",
82
+ "# 4. Change Directory & Install Dependencies\n",
83
+ "os.chdir(repo_dir)\n",
84
+ "print(f\"Changed working directory to: {os.getcwd()}\")\n",
85
+ "\n",
86
  "print(\"\\n=== Installing Clean Architecture Package ===\")\n",
 
87
  "try:\n",
 
88
  " subprocess.check_call([sys.executable, \"-m\", \"pip\", \"install\", \"-e\", \".[all]\"])\n",
89
  " print(\"Package & dependencies installed successfully.\")\n",
90
  "except Exception as e:\n",
91
  " print(f\"Error installing package dependencies: {e}\")\n",
92
  " sys.exit(1)\n",
93
  "\n",
94
+ "# 5. Launch Consumer Daemon\n",
95
  "print(\"\\n=== Launching Consumer Daemon ===\")\n",
96
  "try:\n",
97
  " subprocess.check_call([sys.executable, \"-m\", \"src.interface.consumer.run_consumer\"])\n",