[SQA] 문서 제작 자동화 Tool

  1. 개요
  2. 요구사항
  3. 메인 화면
  4. Jenkins Job
  5. 동작 방법
  6. 마치며

개요


  • 무사히 PSCM -> Git으로의 이관 작업을 마친 후, SQA (Software Quality Assurance)라는 소프트웨어 품질 보증 기간에 들어섰다.
  • 이러한 SQA 기간 중, 검증 부서에 ISO 설치 파일과 변경 사항 및 Comments가 담긴 문서를 넘겨줬다고 한다.
  • 기존 Tool에서는 PSCM 명령어를 기반으로 작동했기 때문에 Git으로 이관한 이후부터는 Git 명령어를 통해 각 Module Repository를 Diff하여 문서 파일 및 ISO 파일을 넘겨줘야 한다.
  • 이 때, 나는 ISO와 타 부서에서 제작한 스크립트를 통해 만들어진 Diff 문서와 내 Tool에서 변경사항 요약 문서를 JFrog Artifactory에 업로드 하는 Tool을 제작하고자 한다.
  • 회사에서는 각 Module의 정보가 담긴 ini 파일들과 각종 프로그램(7zip, jforg …) 및 배치 파일 등이 담긴 Repository가 있다.
  • 이 Repository를 참고해서 Diff 하고, 또, 프로그램들을 이용하여 압축 해제 및 Artifactory Upload, Download 등의 기능을 구현하고자 한다.

요구사항


  • 주요 데이터가 담긴 Repository를 바라보는 환경 변수를 이용하여 ini, 각종 프로그램(7zip, jfrog …)에 접근한다.
  • 현재 진행중인 SQA 차수 ISO 파일을 JFrog에 해당 차수명 Directory에 Upload 한다.
  • 과거 진행한 SQA와 현재 진행중인 SQA 차수를 입력 받아, JFrog에서 Download하고, 다운 받은 ISO파일을 7zip을 이용해 압축 해제 하여 Diff한다.
    • 위 과정의 지연율이 상당하여, 각 Module의 정보가 담긴 Repository를 이용하여, 각 Module의 Branch, CommitID 등에 접근하여, 타 부서에서 제작한 스크립트를 통해 Diff 한다.
  • 이번 SQA에서 추가 된 Module의 경우 Diff가 불가능하므로, 변경 사항 요약 문서를 제작하여 Added로 나타내고, 다른 변경 사항은 Changed로 나타낸다.
  • Tool을 사용자가 직접 사용할 때도 있지만, Jenkins를 이용하여 사용자는 현재 진행할 SQA 차수와, ISO Build Number만 제공하면 위와 같은 작업을 자동화 하도록 한다.

메인 화면


Jenkins Job


  • 위 에러의 경우 과거 진행한 SQA에는 없었는데 이번 진행한 SQA에 추가된 모듈이나 변경된 모듈의 경우 에러 발생으로 처리하지 못하게 된다.
  • 이러한 경우 정상 동작이므로, 프로그램이 죽는게 아닌 에러 로그만 띄워주고, 다음 작업을 수행하도록 했다.

동작 방법


  • 각 Module 정보와 프로그램이 담긴 Repository를 바라보는 환경 변수가 필요함
  • 사용 PC에는 JFrog 사용자 정보 등록과 같은 초기 세팅이 되어 있어야 함 -> Jenkins를 이용하므로, 따로 세팅 작업 불필요
  • 사용자는 Jenkins에서 ISO Build Number(ISO_PATH)와 현재 진행하는 SQA 차수를 입력 함
  • Jenkins Job에서 자동으로 Tool이 실행 되며, JFrog Artifactory에 현재 진행하는 SQA 차수 Direcotry에 ISO파일과 변경 사항 문서들을 Upload 함

마치며


  • 이번 Tool 제작을 진행하며 7zip, JFrog Artifactory CLI 명령어를 알 게 되었다. 또, Github에서 제공하는 Tag를 직접 만들어보진 못했지만 어떻게 접근하고 사용하는지 알 게 되었다. 뿐만 아니라 Jenkins를 이용하여 Tool을 자동화하는 것도 배울 수 있어 좋은 경험이었던 것 같다. 과거 작성한 [형상 관리 이관 작업] ini file Update Tool 개발에서 개선 사항으로 “Git clone을 수행하지 않고 원하는 Repositry 브렌치의 최신 Commit ID를 가져오는 방법 조사”를 적었었는데 이번 Tool 제작을 진행하며 타 부서에서 제작한 Python 스크립트에서 github Library를 이용해서 사용자 토큰으로 이와 같은 작업을 한 것을 확인했고, 이와 같은 작업을 알 수 있어 큰 도움이 되었다.