Fixed bug with angle brackets
This commit is contained in:
parent
e6671faf0b
commit
49673554ee
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
__pycache__/
|
||||
.testenvs
|
6
constant.py
Normal file
6
constant.py
Normal file
@ -0,0 +1,6 @@
|
||||
ICON = {
|
||||
"failure": "🔴",
|
||||
"cancelled": "⚪",
|
||||
"success": "🟢",
|
||||
}
|
||||
|
46
environments.py
Normal file
46
environments.py
Normal file
@ -0,0 +1,46 @@
|
||||
class Environment:
|
||||
'''Class containing all the necessary variables for building and sending notification'''
|
||||
def __init__(
|
||||
self,
|
||||
chat_id,
|
||||
token,
|
||||
status,
|
||||
commit,
|
||||
include_commit_info,
|
||||
docker_tags,
|
||||
custom_message,
|
||||
github_workflow,
|
||||
github_repository,
|
||||
github_sha,
|
||||
github_actor,
|
||||
tag
|
||||
):
|
||||
self.chat_id = chat_id
|
||||
self.token = token
|
||||
self.status = status
|
||||
self.commit = self.__fix_commit_message(commit)
|
||||
self.include_commit_info = include_commit_info
|
||||
self.docker_tags = docker_tags
|
||||
self.custom_message = custom_message
|
||||
self.github_workflow = github_workflow
|
||||
self.github_repository = github_repository
|
||||
self.github_sha = github_sha
|
||||
self.github_actor = github_actor
|
||||
self.tag = tag
|
||||
|
||||
def get_link(self):
|
||||
'''Get link for sending message'''
|
||||
return f'https://api.telegram.org/bot{self.token}/sendMessage'
|
||||
def get_commit_link(self):
|
||||
'''Get link to commit'''
|
||||
return f'https://github.com/{self.github_repository}/commit/{self.github_sha}'
|
||||
def __fix_commit_message(self, message):
|
||||
'''Replacing unsupported characters'''
|
||||
replace_dict = {'<':'(', '>':')', '\n':'\n '}
|
||||
result = ''.join(i if i not in replace_dict else replace_dict[i] for i in message)
|
||||
return result
|
||||
def get_version(self):
|
||||
'''GITHUB_REF contain "refs/tags/v0.0.2" or "refs/heads/main". If second part is "tags",
|
||||
return tag with version number, else - None'''
|
||||
tags = self.tag.split("/")
|
||||
return tags[2] if tags[1] == "tags" else None
|
39
main.py
Normal file
39
main.py
Normal file
@ -0,0 +1,39 @@
|
||||
import os
|
||||
from message import Message
|
||||
from environments import Environment
|
||||
|
||||
chat_id = os.getenv('INPUT_CHAT_ID')
|
||||
if chat_id == "":
|
||||
raise SystemExit('Variable chat_id is required. Exit.')
|
||||
token = os.getenv('INPUT_TOKEN')
|
||||
if token == "":
|
||||
raise SystemExit('Variable chat_id is required. Exit.')
|
||||
status = os.getenv('INPUT_STATUS')
|
||||
commit = os.getenv('INPUT_COMMIT_MESSAGE')
|
||||
include_commit_info = os.getenv('INPUT_INCLUDE_COMMIT_INFO')
|
||||
docker_tags = os.getenv('INPUT_DOCKER_TAGS')
|
||||
custom_message = os.getenv('INPUT_MESSAGE')
|
||||
#GitHub environment variables
|
||||
github_workflow = os.getenv('GITHUB_WORKFLOW')
|
||||
github_repository = os.getenv('GITHUB_REPOSITORY')
|
||||
github_sha = os.getenv('GITHUB_SHA')
|
||||
github_actor = os.getenv('GITHUB_ACTOR')
|
||||
tag = os.getenv('GITHUB_REF')
|
||||
|
||||
envs = Environment(
|
||||
chat_id,
|
||||
token,
|
||||
status,
|
||||
commit,
|
||||
include_commit_info,
|
||||
docker_tags,
|
||||
custom_message,
|
||||
github_workflow,
|
||||
github_repository,
|
||||
github_sha,
|
||||
github_actor,
|
||||
tag
|
||||
)
|
||||
message = Message(envs)
|
||||
|
||||
message.send_message()
|
43
message.py
Normal file
43
message.py
Normal file
@ -0,0 +1,43 @@
|
||||
import requests
|
||||
import constant
|
||||
import environments
|
||||
|
||||
class Message:
|
||||
'''A class that builds and sends messages'''
|
||||
def __init__(self, envs: environments.Environment):
|
||||
self.envs = envs
|
||||
|
||||
def __build_message(self):
|
||||
'''Building message from different parts'''
|
||||
message = f'''{constant.ICON[self.envs.status]} {self.envs.status}: <b>{self.envs.github_workflow}</b>\n
|
||||
Repository: <b>{self.envs.github_repository}</b>'''
|
||||
|
||||
version = self.envs.get_version()
|
||||
if version is not None:
|
||||
message = f'''{message}
|
||||
Version: <b>{version}</b>'''
|
||||
|
||||
if self.envs.docker_tags is not None:
|
||||
message = f'''{message}
|
||||
Docker image tags: <b>{self.envs.docker_tags}</b>'''
|
||||
|
||||
if self.envs.include_commit_info == "true":
|
||||
message = f'''{message}
|
||||
Author: <b>{self.envs.github_actor}</b>
|
||||
Commit message: <b>{self.envs.commit}</b>
|
||||
<a href="{self.envs.get_commit_link()}">See changes</a>'''
|
||||
|
||||
return message
|
||||
|
||||
def send_message(self):
|
||||
'''Sending message to telegram chat'''
|
||||
message = self.__build_message() if self.envs.custom_message is None else self.envs.custom_message
|
||||
parameters = {
|
||||
'chat_id': self.envs.chat_id,
|
||||
'text': message,
|
||||
'parse_mode': 'HTML',
|
||||
'disable_web_page_preview': True
|
||||
}
|
||||
|
||||
request = requests.get(self.envs.get_link(), params = parameters)
|
||||
request.raise_for_status()
|
@ -1,75 +0,0 @@
|
||||
import os
|
||||
import requests
|
||||
|
||||
chat_id = os.getenv('INPUT_CHAT_ID')
|
||||
if chat_id == "":
|
||||
raise SystemExit('Variable chat_id is required. Exit.')
|
||||
token = os.getenv('INPUT_TOKEN')
|
||||
if token == "":
|
||||
raise SystemExit('Variable chat_id is required. Exit.')
|
||||
status = os.getenv('INPUT_STATUS')
|
||||
commit = os.getenv('INPUT_COMMIT_MESSAGE')
|
||||
include_commit_info = os.getenv('INPUT_INCLUDE_COMMIT_INFO')
|
||||
docker_tags = os.getenv('INPUT_DOCKER_TAGS')
|
||||
custom_message = os.getenv('INPUT_MESSAGE')
|
||||
|
||||
|
||||
link=f'https://api.telegram.org/bot{token}/sendMessage'
|
||||
|
||||
icon = {
|
||||
"failure": "🔴",
|
||||
"cancelled": "⚪",
|
||||
"success": "🟢",
|
||||
}
|
||||
|
||||
#GitHub environment variables
|
||||
github_workflow = os.getenv('GITHUB_WORKFLOW')
|
||||
github_repository = os.getenv('GITHUB_REPOSITORY')
|
||||
github_sha = os.getenv('GITHUB_SHA')
|
||||
github_actor = os.getenv('GITHUB_ACTOR')
|
||||
tag = os.getenv('GITHUB_REF')
|
||||
|
||||
commit_link = f'https://github.com/{github_repository}/commit/{github_sha}'
|
||||
|
||||
def get_version(tag_string):
|
||||
'''GITHUB_REF contain "refs/tags/v0.0.2" or "refs/heads/main". If second part is "tags",
|
||||
return tag with version number, else - None'''
|
||||
tags = tag_string.split("/")
|
||||
return tags[2] if tags[1] == "tags" else None
|
||||
|
||||
def build_message():
|
||||
'''Building message from different parts'''
|
||||
message = f'''{icon[status]} {status}: <b>{github_workflow}</b>\n
|
||||
Repository: <b>{github_repository}</b>'''
|
||||
|
||||
version = get_version(tag)
|
||||
if version is not None:
|
||||
message = f'''{message}
|
||||
Version: <b>{version}</b>'''
|
||||
|
||||
if docker_tags != "":
|
||||
message = f'''{message}
|
||||
Docker image tags: <b>{docker_tags}</b>'''
|
||||
|
||||
if include_commit_info == "true":
|
||||
message = f'''{message}
|
||||
Author: <b>{github_actor}</b>
|
||||
Commit message: <b>{commit}</b>
|
||||
<a href="{commit_link}">See changes</a>'''
|
||||
|
||||
return message
|
||||
|
||||
def send_message():
|
||||
'''Sending message to telegram chat'''
|
||||
message = build_message() if custom_message == "" else custom_message
|
||||
parameters = {
|
||||
'chat_id': chat_id,
|
||||
'text': message,
|
||||
'parse_mode': 'HTML',
|
||||
'disable_web_page_preview': True
|
||||
}
|
||||
|
||||
request = requests.get(link, params = parameters)
|
||||
request.raise_for_status()
|
||||
|
||||
send_message()
|
Loading…
x
Reference in New Issue
Block a user