kookmin-sw / 2018-cap1-6 Goto Github PK
View Code? Open in Web Editor NEW국민대 2018 캡스톤 GET팀 - Git Watcher
Home Page: https://github.com/kookmin-sw/2018-cap1-6
국민대 2018 캡스톤 GET팀 - Git Watcher
Home Page: https://github.com/kookmin-sw/2018-cap1-6
Python으로 짜여진 Git inspector를 AWS Lambda에 올리기 전에, 간단한 Python 코드를 AWS Lambda에 올려 테스트해 본다.
프론트엔드 웹 페이지까지 서버리스로 하기 위한 방법.
아니면 다른 방법이 있을까?
최종 목표는 일단 모든 이슈에 대해서 title과 내용을 뽑아내는 것.
추가로 등록 일자와 최종 수정 일자도.
pygit2 라이브러리 분석하기
http://www.pygit2.org/index.html
현재는 그냥 가설이지만,
lambda 단에서 repo압축하지 말고 바로 분석하게 해서 나온 json파일을 s3나 dynamoDB에 저장하게 커스터마이징 한다면,
front단에서는 그냥 json만 가져와서 보여주면 되기 때문에 나은 설계가 될 것 같다.
git inspector 코드가 어떤 식으로 구성되어 있는지 살펴보기
현재 Lambda에 Post 방식으로 요청을 보내서 결과값 맞게 나오는 것 확인 완료
Post 방식으로 요청을 보내는 html 파일 만들어서 테스트를 수행할 예정
AWS Lambda를 실행시키는 Signal을 보낼 수 있도록 하는 API 찾기
기존의 gitinspector의 디폴트 출력은 txt. 이것을 txt에서 html로 수정
-> ./gitinspector/format.py
html파일을 만들어 주는 부분들을 django의 templates 폴더에 파일을 생성해서 그곳에 작성하게 수정.
-> ./gitinspector/gitinspector.py의 process 함수 부분
-> format.output_header , format.output_footer , 7개의 outputable.output 함수들의 수정이 필요
-> 그 중 하나인 format.output_header 수정 부분. 기존에는 그냥 print함수로 되어있던 것을 파일을 만들어 그곳에 내용을 적게 했다. 나머지 8개의 함수들도 이와 같이 수정
-> 기존에는 주석처리 한 것처럼 터미널 명령어를 통해 분석했었지만 지금은 git.main() 처럼 실행해서 분석 가능
람다 코드상에서 설치할 수 있다면 사용이 가능할 것이다.
분석이 가능하다면 .git만 남겨두고 다 지워서 용량 줄이기.
gitinspector가 오류가 난다.
S3에 새로운 파일 들어오면 다운받아서 분석하는 서버 만들기
UnicodeEncodeError: 'ascii' codec can't encode characters in position 62-64: ordinal not in range(128)
OS locale 설정 문제가 아닐까 추측 중.
[2018-03-23 14:36:32,916][ERROR] Source IP 192.30.252.36 is not allowed
Source IP 192.30.252.36 is not allowed: Exception
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 158, in lambda_handler
raise Exception('Source IP %s is not allowed' % event['context']['source-ip'])
Exception: Source IP 192.30.252.36 is not allowed
우리 팀 repository에 대해서 이런 오류 발생.
어디에서 ip를 허용할 수 있을까?
3월 15일 오후 3시까지 제출
어떤 기능을 추가할지는 추후 논의
docker 이미지로 ec2에 올려보기
계획서 발표회에서 안내받은 평가 내용을 4월 13일 전까지 수정한다.
해당 프로젝트에서는 깃허브의 사용법을 알려주는 프로그램을 서버리스 플랫폼으로 구축한다고 했는데, 다른 방식의 시스템과 비교했을때 어떤 비교 우위가 있는지 얘기해주면 좋을듯 합니다.
Use Case Model 이 본 시스템의 내용을 다 반영하고 있지 않습니다. 예를 들자면, Actor로 Contributor 가 추가 되어야 합니다. 비기능적인 요구 사항은 좀더 구체적으로 measure 가능하도록 적어주세요. 본 시스템의 핵심 기술 내용인 Monitoring 기술에 대한 조사 분석 내용이 필요합니다.
github의 SSH 전송 방식이 변경되어, 공개키를 교환하지 못 하는 현상이 발생함.
Failed to start SSH session: Unable to exchange encryption keys: GitError Traceback (most recent call last): File "/var/task/lambda_function.py", line 158, in lambda_handler repo = create_repo(repo_path, remote_url, creds) File "/var/task/lambda_function.py", line 64, in create_repo repo = clone_repository(remote_url, repo_path, callbacks=creds ) File "/var/task/pygit2/__init__.py", line 255, in clone_repository check_error(err) File "/var/task/pygit2/errors.py", line 64, in check_error raise GitError(message) GitError: Failed to start SSH session: Unable to exchange encryption keys
같은 에러를 겪은 사람의 issue.
aws-quickstart/quickstart-git2s3#15
SSH를 돌리는 라이브러리 libssh2의 lambda runtime 버전이 1.4인데, 이번 github 업데이트로 1.8 버전을 사용해야 한다고 함.
람다의 runtime 환경을 바꾸어야 할 텐데, 어디서 그 설정을 할 수 있는지 조사 중.
clone한 repo 잘 가리키게 하기(람다의 tmp 폴더에 있는)
/tmp/zesow/webhooktest2/branch/master
AWS S3에 저장된 zip파일을 Listing하고 Git inspector가 분석할 수 있도록 파일을 다운로드하는 python code를 작성한다.
boto3, botocore를 활용하여 AWS S3 버킷에 접근하여 파일을 다운로드한다.
결과적으로, python 코드가 존재하는 디렉토리에 '다운로드성공2.zip'이라는 파일명으로 파일이 저장된다.
Key 값에는 경로에 해당하는 prefix가 모두 포함되어야 함에 주의한다.
S3 버킷 내부의 파일 중에서도, kookmin-sw 폴더 내부의 파일만 리스팅하도록 코드를 작성했다.
결과화면
사용자에게 저장 중인 zip파일의 리스트를 제공해 줄 때 사용할 수 있을 것으로 예상된다.
그런데, branch에 저장된 zip파일의 정보까지 제공되어 수정이 필요할 것으로 보인다.
https://api.github.com/repos/kookmin-sw/2018-cap1-6/issues?state=all
all 파라미터를 줘도 다 가져오지 않음.
tmp 폴더라고 하는데 정확히 어떤 파일이 저장되는지 파악하기.
전체 git repository에서 한 번의 commit당 일어난 코드 line의 변화와 유저의 한 번의 commit당 일어난 코드의 변화를 비교한다.
각 유저별로 한 번의 commit당 코드에서 몇 줄의 변화가 일어났는가를 나타낸다.
전체 git repository에서 한 번의 commit당 일어난 코드 line의 변화와 Author's Average lines의 비율을 나타낸다. 1보다 높으면 평균 라인 변화보다 많은 변화가 일어났음을 나타내고 1보다 낮으면 평균 라인 변화보다 적은 변화가 일어났음을 나타낸다.
점수 산정식을 만들어서 1보다 높은 사람에게는 상대적으로 높은 점수가 주어지고 1보다 낮은 사람에게는 상대적으로 낮은 점수가 주어지는 방식으로 가면 되지 않을까 싶다.
프로젝트에 쓰일 Git inspector에 어떤 기능이 있는지 명확히 파악한다.
새로 .zip파일 들어올 때 마다 알림 받기.
Git Watcher 시연을 하기 위해, Capstone Design에 참여하는 팀들의 Repository에 Webhook을 걸 수 있도록 공지하기 위한 승인받기.
'ref': KeyError
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 168, in lambda_handler
branch_name = event['body-json']['ref'].replace('refs/heads/', '')
KeyError: 'ref'
json에 ref가 없다는 말 같다.
04/12 까지 중간 보고서를 마무리하여 제출한다.
04/09 중간 보고서 초안 업로드.
단순 clone이 아니라 어떤 방법을 썼는지 우선 파악 중.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.