전체 글 146

Jenkins Master-Slave 노드 설정

팀에서 하나의 서버에서 젠킨스를 운용했었는데, 점차 Job들이 많이 생기고 사용자가 늘어나면서 많은 부하가 걸리게 되었다. 가령 누군가 빌드를 돌리고 있으면 다른 자동화 작업이 빌드 Job이 끝날때까지 pending 되었다. 이를 해결하기 위해 젠킨스에서 마스터와 슬레이브 정책을 사용할 수 있다는것을 알게 되었고, 이에 대해 정리하고자 한다. 마스터와 슬레이브 노드를 분류하여, 마스터 노드에서는 SCM 툴(gerrit, bitbucket 등)에서 폴링(트리거) 또는 결과를 report하는 용도로 사용하고 실제 부하가 걸리는 작업들은 모두 슬레이브 노드에서 실행하게 한다. 따라서 마스터 노드는 단순히 스케쥴링하고 로드 밸런싱하는 역할을 하고 실제 부하가 걸리는 작업들은 슬레이브 노드로 적절히 분산할 수 있..

DevOps/Jenkins 2018.07.27

Jenkins - Gerrit 연동

Jenkins - Gerrit 연동 Gerrit에 Commit이 올라오거나 이벤트가 발생할 때, Jenkins에서 이를 Trigger하여 특정 액션을 취할 수 있다. Gerrit에서 Stream Event로 받을 수 있는 Event 종류 Patchset added Change merged Change abandoned Comment added Gerrit 설정 - Gerrit Stream Events 설정 필요, Projects => Access에서 확인가능 - Global Capabilities에서 Stream Events 권한을 허용하자. * Jenkins가 아니라 Local pc에서 Stream event를 수신하고자 한다면, 아래 명령으로 확인가능하다. 특정 이벤트가 발생하면 커맨트에 로그 확인가..

DevOps/Jenkins 2018.07.18

파이썬 윈도우 자동화 - pywinauto

윈도우 GUI 자동화 라이브러리 pywinauto 패키지 설치 $ pip install pywinauto 소스코드 from pywinauto import Application, Desktop os.system( "TASKKILL /F /IM 실행파일.exe" ) dlg = Desktop( backend ="win32" ).window( title = "타이틀명" ) dlg.wait('ready', timeout=20) dlg.set_focus() dlg.Next.Click() 이 패키지를 통해서 윈도우에서 여러가지 자동화 프로그램을 만들 수 있을듯 매크로를 만들거나 윈도우 프로그램 테스트 자동화하기 위해 사용함 https://pywinauto.readthedocs.io/en/latest/

Programming/Python 2018.07.18

코드 품질 분석기

코드품질 분석기 개발 기록 인턴기간(2015. 08 ~ 2015. 12)에 적용했던 코드 품질 분석기를 기록해본다. 1. How 정적분석 (Static Analysis) 동적 테스팅으로 찾기 힘든 결함 발견 테스팅 실행 전 조기결함 발견 높은 복잡도 측정치와 같은 매트릭을 계산하여 의심스러운 양상에 대한 조기 경보 코딩룰 (Coding Rule) 소스코드 스타일의 통일성을 갖기 위함 소스코드 가독성 향상 유지보수 용이 SWMD (SW Module Design) SW 모듈간의 의존성 관리로 모듈의 독립성 확보 모듈 단위 독립적/병렬적 개발, 테스트를 통한 R&D 효율화 재작업을 최소화하여 제품 Lead time을 단축 Technical Dept: 빠르지만 지저분한 방식으로 일하면, 회계에서 말하는 부채와 ..

소스코드 시각화 (Call graph)

소스코드 시각화 1. Why? - 소스코드 Call-graph와 복잡도 분석 및 시각화 도모 - 소스코드 변경시 HLD/SRS 문서 업데이트 2. Call graph 2.1 Install Tools Egypt (Egypt is a very lightweight approach that only requires one to build to software with the -fdump-rtl-expand GCC option set. $ perl Makefile.PL $ make $ make install Graphviz (Graphviz is open source graph visualization software) $ sudo apt-get install graphviz 2.2 Rebuild the cod..

개발할때 수정한 함수명 추출 (Git diff)

개발자가 수정한 함수명을 추출하기 위해 사용했던 방법에 대해 기록해본다. (더 효율적인 방법이 있을 것 같지만..) 사용한 방법 $ git diff HEAD HEAD~ | grep -E '^(@@)' | grep "(" | sed 's/@@.*@@//' | sed 's/(.*//' | awk -F " " '' | uniq 세부설명 1. git diff HEAD HEAD~ : 최신 commit과 그 전 commit에 대해 diff 추출 2. grep -E '^(@@)' : @@로 시작하는 부분에 대해 추출 ㄴ 함수명이 포함 된 부분은 @@로 시작되기 때문에.. 3. grep "(" : ( 를 포함하는 부분 추출 ㄴ 함수명이 포함되어 있다면 매개변수가 시작하는 "(" 키워드가 포함되어 있기 때문에.. 4. ..

Programming 2018.06.26