Как развернуть приложение Heroku с помощью скрипта Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как развернуть приложение Heroku с помощью скрипта Python?

Сообщение Anonymous »

Код: Выделить всё

def run_command(command: str) -> str:
try:
process = subprocess.run(
command, capture_output=True, text=True, shell=True, check=True
)
return process.stdout.strip()
except subprocess.CalledProcessError as e:
logger.error(f"Command failed: {command}")
logger.error(f"Error output: {e.stderr}")
raise HerokuAppCreationError(f"Command failed: {e.stderr}")

def create_heroku_app(bot_name: str, github_repo: str, branch: str, heroku_conn: heroku3.api.Heroku):
logger.info(f"Starting Heroku app creation process for bot: {bot_name}")

original_cwd = os.getcwd()  # Save the original current working directory

heroku_api_key = os.environ.get('HEROKU_API_KEY')
if not heroku_api_key:
logger.error("Heroku API key not found in environment variables")
raise ValueError("Heroku API key not found in environment variables")

logger.info("Heroku API Key is set")

app_name = f"bot-{bot_name}-{str(uuid4())[:8]}"
logger.info(f"Generated app name: {app_name}")

temp_dir = 'temp'
repo_name = github_repo.split('/')[-1]
repo_path = os.path.join(temp_dir, repo_name)
logger.info(f"Temporary directory path: {temp_dir}")
logger.info(f"Repository path: {repo_path}")

try:
# Create Heroku app
logger.info(f"Attempting to create Heroku app: {app_name}")
app = heroku_conn.create_app(name=app_name, region_id_or_name='eu', stack_id_or_name="heroku-22")
logger.info(f"Heroku app created successfully: {app.name}")

# Clone GitHub repo
logger.info(f"Preparing to clone GitHub repository: {github_repo}")
os.makedirs(temp_dir, exist_ok=True)
repo_url = f"[email protected]:{github_repo}.git"
logger.info(f"Cloning repository from URL: {repo_url}")
logger.info(f"Current working directory: {os.getcwd()}")
logger.info(f"Contents of current directory: {os.listdir()}")

clone_command = f"git clone {repo_url} {repo_path}"
logger.info(f"Attempting to clone using subprocess: {clone_command}")
clone_output = run_command(clone_command)
logger.info(f"Git clone output: {clone_output}")

logger.info(f"Contents of repo_path after cloning: {os.listdir(repo_path)}")

# Change directory to repo_path
os.chdir(repo_path)
logger.info(f"Changed working directory to repo_path: {repo_path}")
# Set up Git remote for Heroku using SSH URL
logger.info("Setting up Git remote for Heroku")
add_remote_command = f"heroku git:remote -a {app_name}"
logger.info(f"Adding Heroku remote with command: {add_remote_command}")
add_remote_output = run_command(add_remote_command)
logger.info(f"Add remote output: {add_remote_output}")

# Set the remote URL to use SSH
set_ssh_remote_command = f"git remote set-url heroku [email protected]:{app_name}.git"
logger.info(f"Setting SSH remote URL with command: {set_ssh_remote_command}")
set_ssh_remote_output = run_command(set_ssh_remote_command)
logger.info(f"Set SSH remote URL output: {set_ssh_remote_output}")

# Push to Heroku
logger.info(f"Preparing to push to Heroku.  Branch: {branch}")
push_command = f"git push heroku {branch}:main"
try:
push_output = run_command(push_command)
logger.info(f"Git push output: {push_output}")
logger.info("Deployed to Heroku successfully")
except HerokuAppCreationError as e:
logger.error(f"Failed to push to Heroku: {str(e)}")
raise

# Get app info
app_url = app.web_url
logger.info(f"Heroku app URL: {app_url}")

return app_name, app_url

except Exception as e:
logger.exception(f"Unexpected error occurred while creating Heroku app: {str(e)}")
if os.path.exists(temp_dir):
os.chdir(original_cwd)  # Ensure we're not in the temp directory before deleting
logger.info(f"Cleaning up temporary directory: {temp_dir}")
if os.name == 'nt':  # Windows
logger.info("Detected Windows OS, using appropriate cleanup command")
subprocess.run(f"rmdir /s /q {temp_dir}", shell=True)
else:  # Unix-like
logger.info("Detected Unix-like OS, using appropriate cleanup command")
shutil.rmtree(temp_dir)
logger.info("Cleaned up temporary directory")
return None, None

finally:
os.chdir(original_cwd)  # Restore the original working directory
logger.info("Finished Heroku app creation process")

Код: Выделить всё

2024-10-06T17:47:14.787486+00:00 app[worker.1]: INFO:service:Starting Heroku app creation process for bot: chapman
2024-10-06T17:47:14.787537+00:00 app[worker.1]: INFO:service:Heroku API Key is set
2024-10-06T17:47:14.787558+00:00 app[worker.1]: INFO:service:Generated app name: bot-chapman-941b996a
2024-10-06T17:47:14.787582+00:00 app[worker.1]: INFO:service:Temporary directory path: temp
2024-10-06T17:47:14.787600+00:00 app[worker.1]: INFO:service:Repository path: temp/og-ai-bots
2024-10-06T17:47:14.787618+00:00 app[worker.1]: INFO:service:Attempting to create Heroku app: bot-chapman-941b996a
2024-10-06T17:47:15.069882+00:00 app[worker.1]: INFO:service:Heroku app created successfully: bot-chapman-941b996a
2024-10-06T17:47:15.069898+00:00 app[worker.1]: INFO:service:Preparing to clone GitHub repository: riz3e/og-ai-bots
2024-10-06T17:47:15.070096+00:00 app[worker.1]: INFO:service:Cloning repository from URL: [email protected]:riz3e/og-ai-bots.git
2024-10-06T17:47:15.070120+00:00 app[worker.1]: INFO:service:Current working directory: /app/main/bots
2024-10-06T17:47:15.070186+00:00 app[worker.1]: INFO:service:Contents of current directory: ['redis_conn.py', 'schemas.py', 'main_bots.py', 'telegram_bot.py', 'worker.py', '__init__.py', 'service.py', 'test.py', 'requirements.txt', 'chat_service.py', 'temp']
2024-10-06T17:47:15.070209+00:00 app[worker.1]: INFO:service:Attempting to clone using subprocess: git clone [email protected]:riz3e/og-ai-bots.git temp/og-ai-bots
2024-10-06T17:47:16.118541+00:00 app[worker.1]: INFO:service:Git clone output:
2024-10-06T17:47:16.118681+00:00 app[worker.1]: INFO:service:Contents of repo_path after cloning: ['whatsapp_bot.py', '.git', 'main_bots.py', 'telegram_bot.py', 'Procfile', 'package-lock.json', '.gitignore', 'service.py', 'requirements.txt', 'chat_service.py', 'package.json']
2024-10-06T17:47:16.118721+00:00 app[worker.1]: INFO:service:Changed working directory to repo_path: temp/og-ai-bots
2024-10-06T17:47:16.118750+00:00 app[worker.1]: INFO:service:Setting up Git remote for Heroku
2024-10-06T17:47:16.118779+00:00 app[worker.1]: INFO:service:Adding Heroku remote with command: heroku git:remote -a bot-chapman-941b996a
2024-10-06T17:47:17.405989+00:00 app[worker.1]: INFO:service:Add remote output: set git remote heroku to https://git.heroku.com/bot-chapman-941b996a.git
2024-10-06T17:47:17.406015+00:00 app[worker.1]: INFO:service:Setting SSH remote URL with command: git remote set-url heroku [email protected]:bot-chapman-941b996a.git
2024-10-06T17:47:17.408566+00:00 app[worker.1]: INFO:service:Set SSH remote URL output:
2024-10-06T17:47:17.408594+00:00 app[worker.1]: INFO:service:Preparing to push to Heroku.  Branch: main
2024-10-06T17:56:01.100495+00:00 app[worker.1]: ERROR:service:Command failed: git push heroku main:main
2024-10-06T17:56:01.100510+00:00 app[worker.1]: ERROR:service:Error output: ssh: connect to host heroku.com port 22: Network is unreachable
2024-10-06T17:56:01.100511+00:00 app[worker.1]: fatal: Could not read from remote repository.
2024-10-06T17:56:01.100513+00:00 app[worker.1]:
2024-10-06T17:56:01.100513+00:00 app[worker.1]: Please make sure you have the correct access rights
2024-10-06T17:56:01.100514+00:00 app[worker.1]: and the repository exists.
2024-10-06T17:56:01.100514+00:00 app[worker.1]:
2024-10-06T17:56:01.100543+00:00 app[worker.1]: ERROR:service:Failed to push to Heroku: Command failed: ssh: connect to host heroku.com port 22: Network is unreachable
2024-10-06T17:56:01.100543+00:00 app[worker.1]: fatal: Could not read from remote repository.
2024-10-06T17:56:01.100543+00:00 app[worker.1]:
2024-10-06T17:56:01.100543+00:00 app[worker.1]: Please make sure you have the correct access rights
2024-10-06T17:56:01.100544+00:00 app[worker.1]: and the repository exists.
2024-10-06T17:56:01.100544+00:00 app[worker.1]:
2024-10-06T17:56:01.101223+00:00 app[worker.1]: ERROR:service:Unexpected error occurred while creating Heroku app: Command failed: ssh: connect to host heroku.com port 22: Network is unreachable
KEY Heroku API KEY установлен в env, также установлен ключ git SSH


Подробнее здесь: https://stackoverflow.com/questions/790 ... hon-script
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как развернуть приложение Heroku с помощью скрипта Python?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как развернуть приложение Heroku с помощью скрипта Python?
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как развернуть приложение Python (flask) и приложение React + базу данных Mongodb на Heroku?
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Как развернуть пакет Node-PHP-Runner Node JS в Heroku
    Anonymous » » в форуме Php
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Развернуть Spring-Boot 3.1 на Heroku с Tomcat 10.1
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»