Python with Gitlab, Pycharm, Html and Flask

요즘 Python이 대세라고 해서 하나 만들어봤다

길이 길어질까봐 자세하게는 설명은 생략하고자 하니..

혹시 답글로 문의 주시면..아마도..시간 날때 답을 드리지 않을까 생각합니다



이전 글을 보시면 현재 SOA를 운영하며 Gitlab을 사용중인데,

Gitlab 에서 제공하는 API 및 Library를 Python과 연동하여 Html Page에 Flask를 이용 한 Example 이다


<Do It !!>

1. Local PC에 Pycharm Free Version 설치

2. Pycharm에서 Test 이름의 Project 생성

3. 아래와 같이 html 및 .py 파일 생성

4. index.html Source
-> Gitlab Projects 및 Milestone 버튼을 누르면,
   href 를 통하여 index.py(python 프로그램)에서 설정 한
   @app.route('/Projects/'및 @app.route('/Milestone/')
   를 각각 실행 한다

<!doctype html>
<head><title>Gitlab</title>
<meta charset=utf-8> </head>
<body>
<h1>SOA-Gitlab</h1>

<button> <a href="/Projects/">Gitlab Projects</a></button>
<button> <a href="/Milestone/">Milestone</a></button>

</body>

5. project.html Source
-> index.py의 
    return render_template('project.html', len = len(result), result = result)
    를 출력 함
<!doctype html>
<html>
<head>
<title> Gitlab-Project </title>
</head>
<body>
<table border=1>

{%for i in range(0, len)%}
<tr><td>{{result[i]}}</td></tr>
{%endfor%}

</table>

</body>
</html>
6. milestone.html Source
-> index.py의
    return render_template('milestone.html', len=len(final3), result=final3)
    를 출력 함
<!doctype html>
<html>
<head>
<title> Gitlab-Milestone </title>
</head>
<body>
<table border=1>

{%for i in range(0, len)%}
<tr><td>{{result[i]}}</td></tr>
{%endfor%}

</table>
</body>
</html>
7. index.py Source
-> 아래 소스를 기입하면 pycham에서 자동으로 라이브러리(Flask, gitlab 등)를
    install 할 수 있다 (몬가 느낌표 버튼을 누르면 보일꺼 임)
    - Projects 는 Gitlab 의 라이브러리를 사용
    - Milestone 은 일반 API 를 사용
from flask import Flask
from flask import Blueprint, render_template
import requests
import gitlab

app = Flask(__name__)

@app.route('/')
def index():
return render_template('index.html')
###############################################################
@app.route('/Projects/')
def projects():
    #gitlab-host 에 url 및 token 에 알아서 입력하세요
gl = gitlab.Gitlab('gitlab-host', private_token='token')
main = Blueprint('main', __name__, url_prefix='/')
return_imsi = []
result = []

projects = gl.projects.list(all=True)
for project in projects:
print(project.name)

return_imsi = project.name
result.append(return_imsi)

return render_template('project.html', len = len(result), result = result)
###############################################################
@app.route('/Milestone/')
def milestone():
#print(final3)
final3_imsi = ""
final3 = []
    
    #gitlab-host 에 url 및 ?(Project Number) 에 알아서 입력하세요
totalpage = "gitlab-host/api/v4/projects/?/milestones"
    #token 에 알아서 입력하세요
headers = {"PRIVATE-TOKEN": "token", "Content-Type": "application/json"}
response = requests.get(totalpage, headers=headers)
total = response.headers['X-Total-Pages']
# print(total)

for i in range(int(total)):
        #gitlab-host 에 url 및 ?(Project Number) 에 알아서 입력하세요
        #token 에 알아서 입력하세요    
        url_itmes_imsi = "gitlab-host/api/v4/projects/?/milestones?page="
url_items = url_itmes_imsi + str(i + 1)
headers = {"PRIVATE-TOKEN": "token", "Content-Type": "application/json"}
response = requests.get(url_items, headers=headers)

result_imsi = response.json()
# print(result_imsi)
# print(i+1)
final2 = ""

for final in result_imsi:
# print(final['title'])
final2 = final2 + (final['title']) + "|"

# print(final2)
final3_imsi = final3_imsi + final2
# print(final3_imsi)
# final3.append(final2)
final3 = final3_imsi.split('|')

return render_template('milestone.html', len=len(final3), result=final3)
###############################################################
if __name__ == '__main__':
# 서버 실행
app.run(host='localhost', debug=True)

Python 은 별도 App 설치 없이 웹 서버 안에서 실행 되어, 잘 만든다면..
좋을 것 같습니다 :)






이 블로그의 인기 게시물

우리집 인테리어 공개(광명 이편한세상 25평)

소노벨 비발디파크 맛집 바베큐단월620 "캠핑 감성"

SAP Netweaver Developer Studio with PI