import git import html import os import requests github_event_before = os.getenv('GITHUB_EVENT_BEFORE') github_sha = os.getenv('GITHUB_SHA') github_repository = os.getenv('GITHUB_REPOSITORY') github_ref = os.getenv('GITHUB_REF') telegram_ci_bot_token = os.getenv('TELEGRAM_CI_BOT_TOKEN') telegram_ci_channel_id = os.getenv('TELEGRAM_CI_CHANNEL_ID') telegram_team_group_id = os.getenv('TELEGRAM_TEAM_GROUP_ID') artifact_directory = os.getenv('ARTIFACT_DIRECTORY') def send_message_to_ci_channel(message): data = { 'chat_id': telegram_ci_channel_id, 'parse_mode': 'HTML', 'text': message, 'disable_web_page_preview': 'true' } requests.post( url = f'https://api.telegram.org/bot{telegram_ci_bot_token}/sendMessage', data = data ) def send_document_to_ci_channel(document): data = { 'chat_id': telegram_ci_channel_id, } files = { 'document': document } requests.post( url = f'https://api.telegram.org/bot{telegram_ci_bot_token}/sendDocument', data = data, files = files ) def send_silent_message_to_team_group(message): data = { 'chat_id': telegram_team_group_id, 'parse_mode': 'HTML', 'text': message, 'disable_web_page_preview': 'true', 'disable_notification': 'true' } requests.post( url = f'https://api.telegram.org/bot{telegram_ci_bot_token}/sendMessage', data = data ) repository = git.Repo('.') commits_range = f'{github_event_before}...{github_sha}' commits = list(repository.iter_commits(commits_range)) overview_link = f'https://github.com/{github_repository}/compare/{commits_range}' overview_link_tag = f'''{len(commits)} new commit{'s' if len(commits) > 1 else ''}''' message = f'''🔨 {overview_link_tag} to lawnchair:{github_ref}:\n''' for commit in reversed(commits): commit_message = commit.message.split('\n')[0] commit_link = f'https://github.com/{github_repository}/commit/{commit.hexsha}' commit_link_tag = f'{repository.git.rev_parse(commit.hexsha, short=7)}' encoded_message = html.escape(commit_message) message += f'\n• {commit_link_tag}: {encoded_message}' send_message_to_ci_channel(message=message) send_silent_message_to_team_group(message=message) with open(f'{artifact_directory}/{os.listdir(artifact_directory)[0]}', 'rb') as apk: send_document_to_ci_channel(document=apk)