Recent deliveries tab 추가
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
import streamlit as st
|
import streamlit as st
|
||||||
from datetime import datetime
|
|
||||||
from streamlit_js_eval import streamlit_js_eval
|
from streamlit_js_eval import streamlit_js_eval
|
||||||
from settings import *
|
from settings import *
|
||||||
from sidebar import show_sidebar
|
from sidebar import show_sidebar
|
||||||
@@ -15,7 +14,7 @@ if __name__=='__main__':
|
|||||||
layout='wide'
|
layout='wide'
|
||||||
)
|
)
|
||||||
|
|
||||||
tab1, tab2 = st.tabs(["DataSaker", "Releases"])
|
tab1, tab2, tab3 = st.tabs(["DataSaker", "Releases", "Recent Deliveries"])
|
||||||
|
|
||||||
with tab1:
|
with tab1:
|
||||||
st.header('DataSaker')
|
st.header('DataSaker')
|
||||||
@@ -48,13 +47,22 @@ if __name__=='__main__':
|
|||||||
st.write(st.session_state['data_editor']['edited_rows'])
|
st.write(st.session_state['data_editor']['edited_rows'])
|
||||||
|
|
||||||
with tab2:
|
with tab2:
|
||||||
releases = get_github_releases()
|
releases = get_releases()
|
||||||
for release in releases:
|
for release in releases:
|
||||||
st.write(f"### {release['name']}")
|
st.write(f"### {release['name']}")
|
||||||
st.write(release['html_url'])
|
st.write(release['html_url'])
|
||||||
st.write(datetime.strptime(release['published_at'], "%Y-%m-%dT%H:%M:%SZ"))
|
st.write(convert_utc_to_korea_time(release['published_at']))
|
||||||
# st.write(datetime.strptime(release['published_at'], "%Y-%m-%dT%H:%M:%SZ").strftime('%Y-%m-%d %H:%M:%S'))
|
|
||||||
st.write(release['body'].replace('#', ''))
|
st.write(release['body'].replace('#', ''))
|
||||||
st.divider()
|
st.divider()
|
||||||
|
|
||||||
|
with tab3:
|
||||||
|
deliveries = get_delivery()
|
||||||
|
|
||||||
|
for delivery in deliveries:
|
||||||
|
st.write(f"#### {delivery['guid']}")
|
||||||
|
st.write(f"{convert_utc_to_korea_time(delivery['delivered_at'])}")
|
||||||
|
st.write(f"Delivery ID: {delivery['id']}")
|
||||||
|
|
||||||
|
st.divider()
|
||||||
|
|
||||||
show_sidebar(df, edited_df)
|
show_sidebar(df, edited_df)
|
||||||
@@ -1,10 +1,13 @@
|
|||||||
import os, json, requests, subprocess
|
import os, json, requests, subprocess
|
||||||
|
from datetime import datetime, timedelta
|
||||||
from git import Repo
|
from git import Repo
|
||||||
|
|
||||||
repo = Repo('.')
|
repo = Repo('.')
|
||||||
file_path = './version.json'
|
file_path = './version.json'
|
||||||
api_url = 'https://api.github.com/repos/cloudmoa/dsk-version-management/releases'
|
release_url = 'https://api.github.com/repos/cloudmoa/dsk-version-management/releases'
|
||||||
|
delivery_url = 'https://api.github.com/repos/CloudMOA/dsk-version-management/hooks/412710389/deliveries'
|
||||||
github_token = os.environ.get('GITHUB_TOKEN')
|
github_token = os.environ.get('GITHUB_TOKEN')
|
||||||
|
headers = {'Authorization': f"Bearer {github_token}", 'Accept': 'application/vnd.github.v3+json'}
|
||||||
|
|
||||||
def get_datasaker():
|
def get_datasaker():
|
||||||
return json.load(open(file_path, 'r'))['datasaker']
|
return json.load(open(file_path, 'r'))['datasaker']
|
||||||
@@ -19,11 +22,13 @@ def get_tags():
|
|||||||
latest_tags = sorted(repo.tags, key=lambda t: t.commit.committed_date, reverse=True)
|
latest_tags = sorted(repo.tags, key=lambda t: t.commit.committed_date, reverse=True)
|
||||||
return latest_tags
|
return latest_tags
|
||||||
|
|
||||||
def get_github_releases():
|
def get_releases():
|
||||||
headers = {'Authorization': f'Bearer {github_token}', 'Accept': 'application/vnd.github.v3+json'}
|
releases = requests.get(release_url, headers=headers).json()
|
||||||
releases = requests.get(api_url, headers=headers).json()
|
|
||||||
return releases
|
return releases
|
||||||
|
|
||||||
|
def get_delivery():
|
||||||
|
return requests.get(delivery_url, headers=headers).json()
|
||||||
|
|
||||||
def get_user_name_list():
|
def get_user_name_list():
|
||||||
users = ['', 'dsk-minchulahn', 'Ose-Exem', 'deukjin', 'pparkssi3']
|
users = ['', 'dsk-minchulahn', 'Ose-Exem', 'deukjin', 'pparkssi3']
|
||||||
return users
|
return users
|
||||||
@@ -34,7 +39,7 @@ def get_user_email(username):
|
|||||||
elif username == 'deukjin': return 'djkim@ex-em.com'
|
elif username == 'deukjin': return 'djkim@ex-em.com'
|
||||||
elif username == 'pparkssi3': return 'pparkssi@ex-em.com'
|
elif username == 'pparkssi3': return 'pparkssi@ex-em.com'
|
||||||
else: return ''
|
else: return ''
|
||||||
|
|
||||||
def set_git_config(username, email):
|
def set_git_config(username, email):
|
||||||
subprocess.run(["git", "config", "--global", "user.name", username], check=True)
|
subprocess.run(["git", "config", "--global", "user.name", username], check=True)
|
||||||
subprocess.run(["git", "config", "--global", "user.email", email], check=True)
|
subprocess.run(["git", "config", "--global", "user.email", email], check=True)
|
||||||
@@ -61,16 +66,24 @@ def git_push(commit_message, extended_description):
|
|||||||
repo.git.add('version.json')
|
repo.git.add('version.json')
|
||||||
|
|
||||||
if len(repo.index.diff(repo.head.commit)) > 0:
|
if len(repo.index.diff(repo.head.commit)) > 0:
|
||||||
repo.index.commit(f'{commit_message}\n\n{extended_description}')
|
repo.index.commit(f"{commit_message}\n\n{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):
|
||||||
headers = {'Authorization': f'Bearer {github_token}', 'Accept': 'application/vnd.github.v3+json'}
|
publish_release_data = {
|
||||||
release_data = {
|
|
||||||
'tag_name': selected_tag,
|
'tag_name': selected_tag,
|
||||||
'name': release_title,
|
'name': release_title,
|
||||||
'body': release_describe,
|
'body': release_describe,
|
||||||
'draft': False,
|
'draft': False,
|
||||||
'prerelease': False
|
'prerelease': False
|
||||||
}
|
}
|
||||||
return requests.post(api_url, json=release_data, headers=headers)
|
return requests.post(release_url, json=publish_release_data, headers=headers)
|
||||||
|
|
||||||
|
def redeliver(delivery_id):
|
||||||
|
redeliver_url = f"{delivery_url}/{delivery_id}/attempts"
|
||||||
|
return requests.post(redeliver_url, headers=headers)
|
||||||
|
|
||||||
|
def convert_utc_to_korea_time(utc_time_str):
|
||||||
|
utc_time = datetime.fromisoformat(utc_time_str[:-1])
|
||||||
|
korea_time = utc_time + timedelta(hours=9)
|
||||||
|
return korea_time.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
@@ -49,21 +49,22 @@ def show_sidebar(df, edited_df):
|
|||||||
st.session_state.push_button_disabled = True
|
st.session_state.push_button_disabled = True
|
||||||
|
|
||||||
if st.button(key='push', label='Commit changes', disabled=st.session_state.push_button_disabled):
|
if st.button(key='push', label='Commit changes', disabled=st.session_state.push_button_disabled):
|
||||||
if selected_user_name and commit_message:
|
with st.spinner('RUNNING...'):
|
||||||
if diff_remote_head():
|
if selected_user_name and commit_message:
|
||||||
if df.equals(edited_df):
|
if diff_remote_head():
|
||||||
logger.warning(f'Git Push - No changes have been made | {selected_user_name}')
|
if df.equals(edited_df):
|
||||||
st.warning('No changes have been made', icon='⚠️')
|
logger.warning(f'Git Push - No changes have been made | {selected_user_name}')
|
||||||
|
st.warning('No changes have been made', icon='⚠️')
|
||||||
|
else:
|
||||||
|
set_version_json(edited_df)
|
||||||
|
git_push(commit_message, extended_description)
|
||||||
|
logger.info(f'Git Push - Success | {selected_user_name}')
|
||||||
|
st.success('Success', icon='✅')
|
||||||
|
time.sleep(1)
|
||||||
|
streamlit_js_eval(js_expressions='parent.window.location.reload()')
|
||||||
else:
|
else:
|
||||||
set_version_json(edited_df)
|
logger.error(f'Git Push - Updates were rejected because the tip of your current branch is behind | {selected_user_name}')
|
||||||
git_push(commit_message, extended_description)
|
st.error('Updates were rejected because the tip of your current branch is behind', icon='🚨')
|
||||||
logger.info(f'Git Push - Success | {selected_user_name}')
|
|
||||||
st.success('Success', icon='✅')
|
|
||||||
time.sleep(1)
|
|
||||||
streamlit_js_eval(js_expressions='parent.window.location.reload()')
|
|
||||||
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.divider()
|
st.divider()
|
||||||
|
|
||||||
@@ -90,16 +91,36 @@ def show_sidebar(df, edited_df):
|
|||||||
|
|
||||||
if st.button(key='release', label='Publish release', disabled=st.session_state.release_button_disabled):
|
if st.button(key='release', label='Publish release', disabled=st.session_state.release_button_disabled):
|
||||||
if selected_tag and release_title and release_describe:
|
if selected_tag and release_title and release_describe:
|
||||||
response = publish_release(selected_tag, release_title, release_describe)
|
with st.spinner('RUNNING...'):
|
||||||
|
publish_release_response = publish_release(selected_tag, release_title, release_describe)
|
||||||
|
|
||||||
|
if publish_release_response.status_code == 201:
|
||||||
|
logger.info(f'Publish Release - Release created successfully')
|
||||||
|
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: {publish_release_response.status_code}')
|
||||||
|
logger.error(f'Response: {publish_release_response.text}')
|
||||||
|
st.error(f'Failed to create release. Status code: {publish_release_response.status_code}\n\n Response: {publish_release_response.text}', icon='🚨')
|
||||||
|
|
||||||
|
st.divider()
|
||||||
|
|
||||||
|
st.subheader('Redeliver')
|
||||||
|
with st.expander('Redeliver'):
|
||||||
|
delivery_id = st.text_input('Delivery ID', value='')
|
||||||
|
|
||||||
|
if st.button(key='redeliver', label='Redeliver'):
|
||||||
|
with st.spinner('RUNNING...'):
|
||||||
|
redeliver_response = redeliver(delivery_id)
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
if response.status_code == 201:
|
if redeliver_response.status_code == 202:
|
||||||
logger.info(f'Publish Release - Release created successfully')
|
logger.info(f'Re Deliver - Success')
|
||||||
st.success('Release created successfully', icon='✅')
|
st.success('successfully', icon='✅')
|
||||||
git_pull()
|
|
||||||
streamlit_js_eval(js_expressions='parent.window.location.reload()')
|
streamlit_js_eval(js_expressions='parent.window.location.reload()')
|
||||||
else:
|
else:
|
||||||
logger.error(f'Publish Release - Failed to create release. Status code: {response.status_code}')
|
logger.error(f'ReDeliver - Failed to redeliver. Status code: {redeliver_response.status_code}')
|
||||||
logger.error(f'Response: {response.text}')
|
logger.error(f'Response: {redeliver_response.text}')
|
||||||
st.error(f'Failed to create release. Status code: {response.status_code}\n\n Response: {response.text}', icon='🚨')
|
st.error(f'Failed to redeliver. Status code: {redeliver_response.status_code}\n\n Response: {redeliver_response.text}', icon='🚨')
|
||||||
|
|
||||||
st.divider()
|
|
||||||
Reference in New Issue
Block a user