Compare commits

...

38 Commits

Author SHA1 Message Date
Ose-Exem
91313e312b Update version.json
dsk-agent-api
product: release-0.1.15

dsk-database-api
product: release-0.1.26
2023-08-17 01:23:57 +00:00
dsk-minchulahn
bf76bea1f0 Merge branch 'main' of github.com:CloudMOA/dsk-version-management into main 2023-08-17 09:57:03 +09:00
dsk-minchulahn
7e8bcabfab Dashboard - tab명 변경 2023-08-17 09:56:55 +09:00
dsk-minchulahn
2658a24aaf Update README.md 2023-08-17 00:31:12 +00:00
Dev2Back-오승은
d6c28c7211 Update version.json
release
database-api, agent-api, app-sender
2023-08-17 09:25:41 +09:00
dsk-minchulahn
b50d46400e Merge branch 'main' of github.com:CloudMOA/dsk-version-management into main 2023-08-16 19:10:56 +09:00
dsk-minchulahn
e260f3b2a9 Dashboard - snow 옵션 제거 2023-08-16 19:10:48 +09:00
dsk-minchulahn
004273c8c7 Update README.md 2023-08-16 09:49:01 +00:00
Dev2Back-오승은
9157709a4a Update version.json
candidate app-sender
2023-08-16 18:44:43 +09:00
dsk-minchulahn
f1e6d17f9e Update README.md 2023-08-16 09:43:32 +00:00
dsk-minchulahn
49a11eb68d Update the latest candidate version of dsk-app-sender to release-0.2.1 2023-08-16 09:41:21 +00:00
Dev2Back-오승은
f4796ace99 Update version.json
candidate dsk-agent-api
2023-08-16 18:39:13 +09:00
dsk-minchulahn
b82dc439d0 Update the latest candidate version of dsk-agent-api to release-0.1.15 2023-08-16 09:37:20 +00:00
dsk-minchulahn
0b02d25e3c Merge branch 'main' of github.com:CloudMOA/dsk-version-management into main 2023-08-16 18:33:51 +09:00
dsk-minchulahn
d2a829c141 Update README.md 2023-08-16 09:33:13 +00:00
dsk-minchulahn
85bacb2d6b Dashboard - git config 설정 2023-08-16 18:32:45 +09:00
dsk-minchulahn
d173a9ee2b Merge branch 'main' of github.com:CloudMOA/dsk-version-management into main 2023-08-16 18:30:24 +09:00
Dev2Back-오승은
0b51ff896d Update version.json 2023-08-16 18:29:26 +09:00
dsk-minchulahn
0bcb19e466 Update the latest candidate version of dsk-database-api to release-0.1.26 2023-08-16 09:24:49 +00:00
dsk-minchulahn
53bcc8581a Merge branch 'main' of github.com:CloudMOA/dsk-version-management into main 2023-08-16 18:03:08 +09:00
dsk-minchulahn
eaab76c411 Update README.md 2023-08-16 08:22:10 +00:00
Dev2Back-오승은
9d113bb375 Update version.json
database-api candidate
2023-08-16 17:18:04 +09:00
dsk-minchulahn
8fb6dc7a7c Update the latest candidate version of dsk-database-api to release-0.1.25 2023-08-16 08:12:13 +00:00
dsk-minchulahn
bd03a6c8fe Merge branch 'main' of github.com:CloudMOA/dsk-version-management into main 2023-08-16 17:10:56 +09:00
dsk-minchulahn
e0f146b937 Dashboard - api url 변경 2023-08-16 17:10:44 +09:00
dsk-minchulahn
0ab399946d Update the latest candidate version of dsk-database-api to release-0.1.24 2023-08-16 07:44:29 +00:00
Dev2Back-오승은
ae30f7c317 Update version.json 2023-08-16 16:33:02 +09:00
dsk-minchulahn
b74ec8f463 Update the latest candidate version of dsk-database-api to release0.1.24 2023-08-16 07:29:44 +00:00
dsk-minchulahn
47c2eb2f17 Merge branch 'main' of github.com:CloudMOA/dsk-version-management into main 2023-08-16 15:55:23 +09:00
dsk-minchulahn
23d373a903 Add git config 2023-08-16 15:55:17 +09:00
dsk-minchulahn
90022851c1 Update README.md 2023-08-16 06:47:02 +00:00
Dev2Back-오승은
7e1636868c Update version.json 2023-08-16 15:42:59 +09:00
dsk-minchulahn
8608743c7f Update README.md 2023-08-16 06:33:41 +00:00
Dev2Back-오승은
f6768361f0 Update version.json 2023-08-16 15:29:10 +09:00
dsk-minchulahn
275cf81d7a Update the latest candidate version of dsk-database-api to release-0.1.23 2023-08-16 06:23:18 +00:00
dsk-minchulahn
79f66bcf3b Add dashboard logging 2023-08-16 14:00:44 +09:00
dsk-minchulahn
72287e3a71 Update README.md 2023-08-14 05:51:10 +00:00
dsk-minchulahn
10e2275519 Update to DataSaker version dsk-23.03.13 2023-08-14 05:47:00 +00:00
7 changed files with 111 additions and 42 deletions

View File

@@ -1,22 +1,22 @@
# DataSaker # DataSaker
### dsk-23.03.12 ### dsk-23.03.13
# Service Version # Service Version
| Type | Name | Candidate Version | Release Version | Product Version | | Type | Name | Candidate Version | Release Version | Product Version |
|:--------:|:------------------------------|:-------------------:|:-----------------:|:-----------------:| |:--------:|:------------------------------|:-------------------:|:-----------------:|:-----------------:|
| front | dsk-ui | release-0.2.22 | release-0.2.22 | release-0.2.22 | | front | dsk-ui | release-0.2.22 | release-0.2.22 | release-0.2.22 |
| api | dsk-agent-api | release-0.1.14 | release-0.1.14 | release-0.1.14 | | api | dsk-agent-api | release-0.1.15 | release-0.1.15 | release-0.1.14 |
| api | dsk-agentmanager-api | release-0.1.6 | release-0.1.6 | release-0.1.6 | | api | dsk-agentmanager-api | release-0.1.6 | release-0.1.6 | release-0.1.6 |
| api | dsk-alert-api | release-0.1.17 | release-0.1.17 | release-0.1.17 | | api | dsk-alert-api | release-0.1.17 | release-0.1.17 | release-0.1.17 |
| api | dsk-apm-api | release-0.1.15 | release-0.1.15 | release-0.1.15 | | api | dsk-apm-api | release-0.1.15 | release-0.1.15 | release-0.1.15 |
| api | dsk-chart-api | release-0.2.8 | release-0.2.8 | release-0.2.8 | | api | dsk-chart-api | release-0.2.8 | release-0.2.8 | release-0.2.8 |
| api | dsk-dashboard-api | release-0.1.16 | release-0.1.16 | release-0.1.16 | | api | dsk-dashboard-api | release-0.1.16 | release-0.1.16 | release-0.1.16 |
| api | dsk-database-api | release-0.1.22 | release-0.1.22 | release-0.1.22 | | api | dsk-database-api | release-0.1.26 | release-0.1.26 | release-0.1.22 |
| api | dsk-infrastructure-api | release-0.1.15 | release-0.1.15 | release-0.1.15 | | api | dsk-infrastructure-api | release-0.1.15 | release-0.1.15 | release-0.1.15 |
| api | dsk-log-api | release-0.1.12 | release-0.1.12 | release-0.1.12 | | api | dsk-log-api | release-0.1.12 | release-0.1.12 | release-0.1.12 |
| api | dsk-notification-api | release-0.2.6 | release-0.2.6 | release-0.2.6 | | api | dsk-notification-api | release-0.2.6 | release-0.2.6 | release-0.2.6 |
| api | dsk-usergate-api | release-0.1.13 | release-0.1.13 | release-0.1.13 | | api | dsk-usergate-api | release-0.1.13 | release-0.1.13 | release-0.1.13 |
| api | dsk-app-sender | release-0.2.0 | release-0.2.0 | release-0.2.0 | | api | dsk-app-sender | release-0.2.1 | release-0.2.1 | release-0.2.0 |
| api | dsk-backoffice | | | | | api | dsk-backoffice | | | |
| api | dsk-metering-batch | | release-0.0.3 | | | api | dsk-metering-batch | | release-0.0.3 | |
| api | dsk-metering-blocking-batch | | | | | api | dsk-metering-blocking-batch | | | |

33
dashboard/logger.py Normal file
View File

@@ -0,0 +1,33 @@
import os, socket, logging
host = os.environ.get('VERSION_MANAGEMENT_SERVICE_HOST', default='10.10.43.240')
service = os.environ.get('VERSION_MANAGEMENT_SERVICE_PORT', default=31090)
class PrintHandler(logging.Handler):
def emit(self, record):
msg = self.format(record)
print(msg)
def get_sock_name():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, service))
return sock.getsockname()[0]
def setup_logger():
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
log_file='dashboard/version-management.log'
formatter = logging.Formatter(f'%(asctime)s %(levelname)s {get_sock_name()} : %(message)s')
file_handler = logging.FileHandler(log_file)
file_handler.setFormatter(formatter)
print_handler = PrintHandler()
print_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.addHandler(print_handler)
return logger
logger = setup_logger()

View File

@@ -15,7 +15,7 @@ if __name__=='__main__':
layout='wide' layout='wide'
) )
tab1, tab2 = st.tabs(["Deploy DataSaker", "Release Info"]) tab1, tab2 = st.tabs(["DataSaker", "Releases"])
with tab1: with tab1:
st.header('DataSaker') st.header('DataSaker')
@@ -24,7 +24,6 @@ if __name__=='__main__':
col1, col2 = st.columns([7, 3]) col1, col2 = st.columns([7, 3])
with col1: with col1:
st.subheader('Service') st.subheader('Service')
if st.button('Data Reload'): if st.button('Data Reload'):
git_pull() git_pull()
streamlit_js_eval(js_expressions='parent.window.location.reload()') streamlit_js_eval(js_expressions='parent.window.location.reload()')
@@ -41,7 +40,8 @@ if __name__=='__main__':
'candidate_version': st.column_config.TextColumn('Candidate Version', validate=regex), 'candidate_version': st.column_config.TextColumn('Candidate Version', validate=regex),
'release_version': st.column_config.TextColumn('Release Version', validate=regex), 'release_version': st.column_config.TextColumn('Release Version', validate=regex),
'product_version': st.column_config.TextColumn('Product Version', validate=regex) 'product_version': st.column_config.TextColumn('Product Version', validate=regex)
} },
height=800
) )
with col2: with col2:
st.text('Edited Rows') st.text('Edited Rows')

View File

@@ -3,8 +3,8 @@ from git import Repo
repo = Repo('.') repo = Repo('.')
file_path = './version.json' file_path = './version.json'
repo.config_writer().set_value('user', 'name', 'dsk-minchulahn').release() api_url = 'https://api.github.com/repos/cloudmoa/dsk-version-management/releases'
repo.config_writer().set_value('user', 'email', 'minchulahn@ex-em.com').release() github_token = os.environ.get('GITHUB_TOKEN')
def get_datasaker(): def get_datasaker():
return json.load(open(file_path, 'r'))['datasaker'] return json.load(open(file_path, 'r'))['datasaker']
@@ -19,12 +19,25 @@ def get_tags():
return repo.tags return repo.tags
def get_github_releases(): def get_github_releases():
api_url = 'https://api.github.com/repos/cloudmoa/dsk-version-management/releases'
github_token = os.environ.get('GITHUB_TOKEN')
headers = {'Authorization': f'Bearer {github_token}', 'Accept': 'application/vnd.github.v3+json'} headers = {'Authorization': f'Bearer {github_token}', 'Accept': 'application/vnd.github.v3+json'}
releases = requests.get(api_url, headers=headers).json() releases = requests.get(api_url, headers=headers).json()
return releases return releases
def get_user_name_list():
users = ['', 'dsk-minchulahn', 'Ose-Exem', 'deukjin', 'pparkssi3']
return users
def get_user_email(name):
if name == 'dsk-minchulahn': return 'minchulahn@ex-em.com'
elif name == 'Ose-Exem': return 'ose@ex-em.com'
elif name == 'deukjin': return 'djkim@ex-em.com'
elif name == 'pparkssi3': return 'pparkssi@ex-em.com'
else: return ''
def set_git_config(name, email):
repo.config_writer().set_value('user', 'name', name).release()
repo.config_writer().set_value('user', 'email', email).release()
def diff(): def diff():
if len(repo.index.diff(repo.head.commit)) > 0: if len(repo.index.diff(repo.head.commit)) > 0:
return True return True
@@ -51,8 +64,6 @@ def git_push(commit_message, extended_description):
repo.git.push(force=False) repo.git.push(force=False)
def publish_release(selected_tag, release_title, release_describe): def publish_release(selected_tag, release_title, release_describe):
api_url = 'https://api.github.com/repos/cloudmoa/sample-app/releases'
github_token = os.environ.get('GITHUB_TOKEN')
headers = {'Authorization': f'Bearer {github_token}', 'Accept': 'application/vnd.github.v3+json'} headers = {'Authorization': f'Bearer {github_token}', 'Accept': 'application/vnd.github.v3+json'}
release_data = { release_data = {
'tag_name': selected_tag, 'tag_name': selected_tag,

View File

@@ -2,6 +2,12 @@ import json, time
import streamlit as st import streamlit as st
from streamlit_js_eval import streamlit_js_eval from streamlit_js_eval import streamlit_js_eval
from settings import * from settings import *
from logger import logger
if 'push_button_disabled' not in st.session_state:
st.session_state.push_button_disabled = True
if 'release_button_disabled' not in st.session_state:
st.session_state.release_button_disabled = True
def set_extended_description(edited_df): def set_extended_description(edited_df):
json_edited_df = json.loads(edited_df.to_json(orient='records')) json_edited_df = json.loads(edited_df.to_json(orient='records'))
@@ -29,21 +35,32 @@ def show_sidebar(df, edited_df):
with st.sidebar: with st.sidebar:
st.subheader('Git Push') st.subheader('Git Push')
with st.expander('Git Push'): with st.expander('Git Push'):
selected_user_name = st.selectbox('User Name', get_user_name_list(), key='git_user_name')
set_git_config(selected_user_name, get_user_email(selected_user_name))
commit_message = st.text_input('Commit Message', value='Update version.json') commit_message = st.text_input('Commit Message', value='Update version.json')
extended_description = st.text_area('Extended description', value=set_extended_description(edited_df), height=200) extended_description = st.text_area('Extended description', value=set_extended_description(edited_df), height=200)
if st.button(key='push', label='Commit changes'): if selected_user_name and commit_message:
if commit_message: st.session_state.push_button_disabled = False
else:
st.session_state.push_button_disabled = True
if st.button(key='push', label='Commit changes', disabled=st.session_state.push_button_disabled):
if selected_user_name and commit_message:
if diff_remote_head(): if diff_remote_head():
if df.equals(edited_df): if df.equals(edited_df):
logger.warning(f'Git Push - No changes have been made | {selected_user_name}')
st.warning('No changes have been made', icon='⚠️') st.warning('No changes have been made', icon='⚠️')
else: else:
set_version_json(edited_df) set_version_json(edited_df)
git_push(commit_message, extended_description) git_push(commit_message, extended_description)
logger.info(f'Git Push - Success | {selected_user_name}')
st.success('Success', icon='') st.success('Success', icon='')
time.sleep(1) time.sleep(1)
streamlit_js_eval(js_expressions='parent.window.location.reload()') streamlit_js_eval(js_expressions='parent.window.location.reload()')
else: else:
logger.error(f'Git Push - Updates were rejected because the tip of your current branch is behind | {selected_user_name}')
st.error('Updates were rejected because the tip of your current branch is behind', icon='🚨') st.error('Updates were rejected because the tip of your current branch is behind', icon='🚨')
st.divider() st.divider()
@@ -51,7 +68,7 @@ def show_sidebar(df, edited_df):
st.subheader('Draft a new release') st.subheader('Draft a new release')
with st.expander('Draft a new release'): with st.expander('Draft a new release'):
tags = [tag.name for tag in get_tags()] tags = [tag.name for tag in get_tags()]
tags.insert(0, "") tags.insert(0, '')
new_tag = st.text_input('Create a new tag') new_tag = st.text_input('Create a new tag')
if new_tag: if new_tag:
@@ -64,15 +81,23 @@ def show_sidebar(df, edited_df):
release_title = st.text_input('Release title', value=selected_tag) release_title = st.text_input('Release title', value=selected_tag)
release_describe = st.text_area('Describe this release', value='## Production에 변경된 Version') release_describe = st.text_area('Describe this release', value='## Production에 변경된 Version')
if st.button(key='release', label='Publish release'): if selected_tag and release_title and release_describe:
response = publish_release(selected_tag, release_title, release_describe) st.session_state.release_button_disabled = False
else:
st.session_state.release_button_disabled = True
if response.status_code == 201: if st.button(key='release', label='Publish release', disabled=st.session_state.release_button_disabled):
st.success('Release created successfully', icon='') if selected_tag and release_title and release_describe:
git_pull() response = publish_release(selected_tag, release_title, release_describe)
streamlit_js_eval(js_expressions='parent.window.location.reload()')
else: if response.status_code == 201:
st.error(f'Failed to create release. Status code: {response.status_code}', icon='🚨') logger.info(f'Publish Release - Release created successfully')
st.error(f'Response: {response.text}', icon='🚨') st.success('Release created successfully', icon='')
git_pull()
streamlit_js_eval(js_expressions='parent.window.location.reload()')
else:
logger.error(f'Publish Release - Failed to create release. Status code: {response.status_code}')
logger.error(f'Response: {response.text}')
st.error(f'Failed to create release. Status code: {response.status_code}\n\n Response: {response.text}', icon='🚨')
st.divider() st.divider()

View File

View File

@@ -1,5 +1,5 @@
{ {
"datasaker": "dsk-23.03.12", "datasaker": "dsk-23.03.13",
"service": [ "service": [
{ {
"type": "front", "type": "front",
@@ -12,10 +12,10 @@
{ {
"type": "api", "type": "api",
"name": "dsk-agent-api", "name": "dsk-agent-api",
"latest_candidate_version": "release-0.1.14", "latest_candidate_version": "release-0.1.15",
"candidate_version": "release-0.1.14", "candidate_version": "release-0.1.15",
"release_version": "release-0.1.14", "release_version": "release-0.1.15",
"product_version": "release-0.1.14" "product_version": "release-0.1.15"
}, },
{ {
"type": "api", "type": "api",
@@ -60,10 +60,10 @@
{ {
"type": "api", "type": "api",
"name": "dsk-database-api", "name": "dsk-database-api",
"latest_candidate_version": "release-0.1.22", "latest_candidate_version": "release-0.1.26",
"candidate_version": "release-0.1.22", "candidate_version": "release-0.1.26",
"release_version": "release-0.1.22", "release_version": "release-0.1.26",
"product_version": "release-0.1.22" "product_version": "release-0.1.26"
}, },
{ {
"type": "api", "type": "api",
@@ -100,9 +100,9 @@
{ {
"type": "api", "type": "api",
"name": "dsk-app-sender", "name": "dsk-app-sender",
"latest_candidate_version": "release-0.2.0", "latest_candidate_version": "release-0.2.1",
"candidate_version": "release-0.2.0", "candidate_version": "release-0.2.1",
"release_version": "release-0.2.0", "release_version": "release-0.2.1",
"product_version": "release-0.2.0" "product_version": "release-0.2.0"
}, },
{ {