Coder Social home page Coder Social logo

kookmin-sw / 2018-cap1-6 Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 2.0 71.29 MB

국민대 2018 캡스톤 GET팀 - Git Watcher

Home Page: https://github.com/kookmin-sw/2018-cap1-6

Python 77.81% C++ 0.23% C 3.02% HTML 12.62% JavaScript 1.87% CSS 4.25% Roff 0.14% TeX 0.06%
aws-apigateway aws-ec2 aws-lambda aws-s3 git-watcher

2018-cap1-6's People

Contributors

gychoics avatar hohyunjun avatar msyhu avatar one10004 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

phs6417 hohyunjun

2018-cap1-6's Issues

Git inspector 실행 후에 메뉴 선택해서 분석

1. 로컬 폴더 분석

1-1. 메뉴에서 1번 선택

image

1-2. 로컬 폴더의 경로 입력

image

1-3. 실행 결과

image
-> 클론 과정 없이 분석 진행

2. 압축된 로컬 파일 분석

2-1. 메뉴에서 2번 선택

image

2-2. 압축파일의 경로와 파일 이름 입력

image

2-3. 압축 해제 된 폴더 생성

image

2-4. 실행 결과

image
-> 클론 과정 없이 분석 진행

3. Git 주소 분석

3-1 메뉴에서 3번 선택

image

3-2 Git 주소 입력

image

3-3. 실행 결과

-> 이전과 같은 방식으로 클론한 뒤에 분석 진행

github issue 받아오기.

최종 목표는 일단 모든 이슈에 대해서 title과 내용을 뽑아내는 것.
추가로 등록 일자와 최종 수정 일자도.

계획서 발표회 준비

  1. Readme.md 에 프로젝트 개요 및 팀 소개
  2. 계획서 발표 슬라이드쇼(.ppsx) 만들기 - 200초 미만
  3. 계획서 발표 슬라이드 파일 PDF로 만들기, 페이지 당 슬라이드 1개
  4. 수행 계획서 파일 만들기(PDF)
  • 모든 파일은 깃허브 레포지토리에 올려야 함

gitinspector 디폴트 출력 수정 후 모듈로 만들어서 ec2에서 실행

gitinspector 수정

  • 기존의 gitinspector의 디폴트 출력은 txt. 이것을 txt에서 html로 수정
    image
    -> ./gitinspector/format.py

  • html파일을 만들어 주는 부분들을 django의 templates 폴더에 파일을 생성해서 그곳에 작성하게 수정.
    image
    -> ./gitinspector/gitinspector.py의 process 함수 부분
    -> format.output_header , format.output_footer , 7개의 outputable.output 함수들의 수정이 필요
    -> 그 중 하나인 format.output_header 수정 부분. 기존에는 그냥 print함수로 되어있던 것을 파일을 만들어 그곳에 내용을 적게 했다. 나머지 8개의 함수들도 이와 같이 수정
    image

gitinspector 모듈화

  • 두 번의 명령으로 모듈화 가능
    -> python3 setup.py sdist
    -> sudo python3 setup.py install
  • 다음과 같이 모듈화 된 gitinspector를 사용 가능
    image
    -> ./ttests/gitwatcher/views.py

image
-> 기존에는 주석처리 한 것처럼 터미널 명령어를 통해 분석했었지만 지금은 git.main() 처럼 실행해서 분석 가능

ec2 에서 unicodeEncodeError 발생

UnicodeEncodeError: 'ascii' codec can't encode characters in position 62-64: ordinal not in range(128)

OS locale 설정 문제가 아닐까 추측 중.

git-to-s3에서 허용되지 않은 ip 오류 발생

[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를 허용할 수 있을까?

점수화 회의

Github 사용자가 얼마나 효율적으로 Github를 사용했는지를 점수화할 Rule에 어떤 것이 있을지에 대해 논의한다.

  • 각 커밋 별로 너무 적은 코드 변화 수(+10 ~ -10)는 제외
  • 사용자가 커밋을 꾸준히 했는지, 한꺼번에 몰아서 했는지
  • 한 명이 몇 개의 파일에 기여
  • % of changes가 유저 별로 골고루 나누어져 있는가

image

계획서 평가 내용 반영하여 수정하기

계획서 발표회에서 안내받은 평가 내용을 4월 13일 전까지 수정한다.

  1. 해당 프로젝트에서는 깃허브의 사용법을 알려주는 프로그램을 서버리스 플랫폼으로 구축한다고 했는데, 다른 방식의 시스템과 비교했을때 어떤 비교 우위가 있는지 얘기해주면 좋을듯 합니다.

  2. Use Case Model 이 본 시스템의 내용을 다 반영하고 있지 않습니다. 예를 들자면, Actor로 Contributor 가 추가 되어야 합니다. 비기능적인 요구 사항은 좀더 구체적으로 measure 가능하도록 적어주세요. 본 시스템의 핵심 기술 내용인 Monitoring 기술에 대한 조사 분석 내용이 필요합니다.

html의 한 부분이 수정되지 않는 문제 발생

html의 첫 번째 분석 부분이 바뀌지 않고 계속해서 나타남

image
-> s3에서 kookmin-sw/2018-cap1-6의 master 브랜치를 가져와서 분석한 결과

image
-> s3에서 kookmin-sw/2018-cap1-5의 master 브랜치를 가져와서 분석한 결과

Github에서 repository clone 해 오는 과정에 인증문제 발생.

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 환경을 바꾸어야 할 텐데, 어디서 그 설정을 할 수 있는지 조사 중.

점수화 하기.

  • 팀별 점수
    = [유효 commit 수 ] * [CPW] + [개설된 issue 개수] * 10 + [contributor 수] * 10 + [branch수] * 20
  • 개인별 점수
    = (개인별 커밋 + 이슈 수) / ( 전체 커밋 + 이슈 수) * 100

점수화 논의내용 정리

20180519_143451

  1. Frontend 에 추가 정보 붙이기
  • 개인별 issue 개설 / comment 횟수를 원래 있던 표 옆에 열을 추가해 넣는다.
    image
  • 팀 점수 / 개인 점수
    image
  1. Backend 점수화 구현하기
  • 개인평가
    (개인별 커밋 + 이슈 + 이슈 Comment / 전체 커밋 + 이슈 + 이슈 Comment) *100
  • 팀 평가
    [유효 commit 수 ] * [CPW] + [개설된 issue + Comment 개수] * 10 + [contributor 수] * 10 + [branch수] * 20 - [abs(파일 별 커밋 횟수 평균 - 파일 별 커밋 횟수 중간값)] * 5

S3에서 zip파일 다운로드 및 파일 리스팅하는 Python code 작성

AWS S3에 저장된 zip파일을 Listing하고 Git inspector가 분석할 수 있도록 파일을 다운로드하는 python code를 작성한다.

S3로부터 다운로드

boto3, botocore를 활용하여 AWS S3 버킷에 접근하여 파일을 다운로드한다.
image
결과적으로, python 코드가 존재하는 디렉토리에 '다운로드성공2.zip'이라는 파일명으로 파일이 저장된다.
image

Key 값에는 경로에 해당하는 prefix가 모두 포함되어야 함에 주의한다.

S3 버킷에 있는 파일 리스팅

S3 버킷 내부의 파일 중에서도, kookmin-sw 폴더 내부의 파일만 리스팅하도록 코드를 작성했다.
image
결과화면
image
사용자에게 저장 중인 zip파일의 리스트를 제공해 줄 때 사용할 수 있을 것으로 예상된다.
그런데, branch에 저장된 zip파일의 정보까지 제공되어 수정이 필요할 것으로 보인다.

회의의 4번 Code의 변화 비율

image

전체 git repository에서 한 번의 commit당 일어난 코드 line의 변화와 유저의 한 번의 commit당 일어난 코드의 변화를 비교한다.

Author's Average lines

각 유저별로 한 번의 commit당 코드에서 몇 줄의 변화가 일어났는가를 나타낸다.

Percentage

전체 git repository에서 한 번의 commit당 일어난 코드 line의 변화와 Author's Average lines의 비율을 나타낸다. 1보다 높으면 평균 라인 변화보다 많은 변화가 일어났음을 나타내고 1보다 낮으면 평균 라인 변화보다 적은 변화가 일어났음을 나타낸다.

결론

점수 산정식을 만들어서 1보다 높은 사람에게는 상대적으로 높은 점수가 주어지고 1보다 낮은 사람에게는 상대적으로 낮은 점수가 주어지는 방식으로 가면 되지 않을까 싶다.

git-to-s3에서 ref keyerror 발생

'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가 없다는 말 같다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.