강의 06/16: 형상관리 (1) 신정규 2016년 10월 19일
형상관리 협업을 가능하게 한 발전
형상 관리 도구 (SCM) ▪ Software Configuration Management Tools ▪ Version Control System (VCS) ▪ 프로그램, 문서 및 모든 종류의 컨텐트의 변경 이력을 관리하는 시스템 ▪ “Version” “number” ▪ 변경이 될 때 마다 붙는 표지 / 번호 ▪ “Revision” ▪ 새로 변경된 결과물 ▪ 인덱스가 붙음
형상관리도구 요소 형상관리도구 VCS Issue Tracker CI
버전 관리 시스템 ▪ 버전 관리 시스템 (Version Control System) ▪ 과거 및 현재 상태를 모두 저장 ▪ 상태 변화에 따른 모든 중간 단계 저장 ▪ 저장소: 소스 (코드, 문서, 그림 등) 를 저장 ▪ 구조에 따른 구분 ▪ 중앙 집중식: CVS, subversion ▪ 분산식: mercurial, git
버전 관리 시스템 용어 (1) ▪ 저장소 (repository) ▪ 소스 (코드, 문서, 그림 등) 를 저장하는 공간 ▪ 브렌치 (branching / branch) ▪ 코드를 중간에 분기하는 행위 / 분기한 결과 ▪ 리비전 (revision) ▪ 특정 시간 / 특정 브렌치의 어떤 한 상태 ▪ 상태에 해당하는 인덱스를 리비전 번호 (revision number) 라고 함
버전 관리 시스템 용어 (2) ▪ 커밋 (commit) ▪ 저장소에 변경된 컨텐트를 반영하는 행위 ▪ 커밋 로그 (commit log) ▪ 커밋을 할 때 해당 커밋이 어떠한 변경을 했는지 작성한 기록 ▪ 체크아웃 (checkout) ▪ 현재 저장소를 특정한 리비전으로 업데이트 ▪ 태그 (tag) ▪ 특정 리비전을 나중에 찾거나 알아보기 쉽게 붙인 텍스트
중앙 집중식 버전 관리 시스템 ▪ 특징 ▪ 중심이 되는 저장소가 존재 ▪ 메인 트리가 존재함 ▪ 저장소 의존도가 크므로 branching 을 쉽게 하지 않음 ▪ 중요한 기능 단위 / 개발 단위로만 branching ▪ 의존성 문제로 한 번 만든 브렌치는 쉽게 없애지 않음 ▪ 연속된 숫자를 인덱스로 사용 ▪ 예) 3125 ▪ 대표적인 오픈소스 VCS ▪ CVS, Subversion
분산식 버전 관리 시스템 ▪ 특징 ▪ 중심이 되는 저장소가 존재하지 않음 ▪ Branching / merging이 매우 자유로움 ▪ 새로운 코드를 만들거나 수정할 때 branching을 하는 것이 일반적임 ▪ 고유의 리비전 인덱스를 사용 ▪ 예) 315a2baab56dc69bdd2ba653cfa2a69a8ff0e92c ▪ 대표적인 오픈소스 VCS ▪ Mercurial, git
git ▪ https://git-scm.com
이슈 트래커 ▪ 이슈 트래커 (Issue tracker) ▪ VCS와 연동하여 VCS에 관련한 다양한 작업 담당 ▪ 작업 분담 / 이슈 관리 / 변경 이력 추적 / 문서화 ▪ 오픈소스 이슈 트래커 ▪ Trac (http://trac.edgewall.org) ▪ GitLab (https://gitlab.com/groups/gitlab-org) ▪ Bugzilla (https://www.bugzilla.org) ▪ Redmine (http://www.redmine.org) ▪ Jira (https://atlassian.com/software/jira) ▪ 이슈 트래킹 서비스 ▪ Github (https://github.com) ▪ Bitbucket (https://bitbucket.org) ▪ Codebase (https://www.codebasehq.com) ▪ SourceForge (https://sourceforge.net)
Trac
지속적 통합 도구 ▪ 지속적 통합 Continuous Integration (CI) ▪ 코드의 변경 내용을 확인하고, 서비스를 계속 최신 상태로 유지 ▪ 최근 리비전의 무결성을 확인 ▪ 코드 오류 검사 ▪ 단위 테스트 (Unit test) / 기능 테스트 (functional test) ▪ 코드의 호환성 검사 ▪ 무결성 결과 보고 ▪ 오픈소스 CI ▪ Jenkins (https://jenkins.io) ▪ Python Buildbot ▪ Travis CI (http://travis-ci.org) ▪ Strider (https://github.com/Strider- CD/strider) ▪ Apache Continuum (https://continuum.apache.org) - 은퇴!
Jenkins
지속적 통합 도구 ▪ VCS, IT, CI 연동 ▪ 예) git – github – travis CI ▪ 예) subversion – trac – jenkins ▪ 예) Travis CI : 설정한 .travis.yml 을 git 프로젝트의 루트에 넣음 ▪ 환경 변수 설정 ▪ 브렌치 지정 ▪ 빌드 매트릭스 (build matrix) 구성 ▪ 데이터 스토어 소프트웨어 / 환경 지정
오늘의 Learn by run:
Learn by run: git basics ▪ Git 기본 강의 (1/2) ▪ 강의 진행자: 한홍근 (OSS 개발자 포럼 / git 세미나 강사) ▪ 준비작업: 통합 학습 환경 ▪ https://www.codeonweb.com 로그인 ▪ https://codeonweb.com/course/@oss-basics-hu 에 가입
임무 #3 ▪ 임무 #2에서 작성한 프로그램을 개선하기 ▪ 다음의 요건을 모두 만족해야 합니다. ▪ 1번 이상의 branch ▪ 3번 이상의 commit ▪ master 가 아닌 branch에서 커밋 ▪ 커밋 로그는 반드시 해당하는 issue / milestone이 있어야 합니다. ▪ 1번 이상의 merge (master 가 아닌 작업 branch를 다시 master로 merge) ▪ 마감: 10월 25일 23시 59분
Next is... 7/16: Mid-term @inureyes Questions? inureyes@gmail.com OR https://www.codeonweb.com/circle/@oss-basics-hu

OSS SW Basics Lecture 06: Software Configuration Management

  • 1.
  • 2.
  • 3.
    형상 관리 도구(SCM) ▪ Software Configuration Management Tools ▪ Version Control System (VCS) ▪ 프로그램, 문서 및 모든 종류의 컨텐트의 변경 이력을 관리하는 시스템 ▪ “Version” “number” ▪ 변경이 될 때 마다 붙는 표지 / 번호 ▪ “Revision” ▪ 새로 변경된 결과물 ▪ 인덱스가 붙음
  • 4.
  • 5.
    버전 관리 시스템 ▪버전 관리 시스템 (Version Control System) ▪ 과거 및 현재 상태를 모두 저장 ▪ 상태 변화에 따른 모든 중간 단계 저장 ▪ 저장소: 소스 (코드, 문서, 그림 등) 를 저장 ▪ 구조에 따른 구분 ▪ 중앙 집중식: CVS, subversion ▪ 분산식: mercurial, git
  • 6.
    버전 관리 시스템용어 (1) ▪ 저장소 (repository) ▪ 소스 (코드, 문서, 그림 등) 를 저장하는 공간 ▪ 브렌치 (branching / branch) ▪ 코드를 중간에 분기하는 행위 / 분기한 결과 ▪ 리비전 (revision) ▪ 특정 시간 / 특정 브렌치의 어떤 한 상태 ▪ 상태에 해당하는 인덱스를 리비전 번호 (revision number) 라고 함
  • 7.
    버전 관리 시스템용어 (2) ▪ 커밋 (commit) ▪ 저장소에 변경된 컨텐트를 반영하는 행위 ▪ 커밋 로그 (commit log) ▪ 커밋을 할 때 해당 커밋이 어떠한 변경을 했는지 작성한 기록 ▪ 체크아웃 (checkout) ▪ 현재 저장소를 특정한 리비전으로 업데이트 ▪ 태그 (tag) ▪ 특정 리비전을 나중에 찾거나 알아보기 쉽게 붙인 텍스트
  • 8.
    중앙 집중식 버전관리 시스템 ▪ 특징 ▪ 중심이 되는 저장소가 존재 ▪ 메인 트리가 존재함 ▪ 저장소 의존도가 크므로 branching 을 쉽게 하지 않음 ▪ 중요한 기능 단위 / 개발 단위로만 branching ▪ 의존성 문제로 한 번 만든 브렌치는 쉽게 없애지 않음 ▪ 연속된 숫자를 인덱스로 사용 ▪ 예) 3125 ▪ 대표적인 오픈소스 VCS ▪ CVS, Subversion
  • 9.
    분산식 버전 관리시스템 ▪ 특징 ▪ 중심이 되는 저장소가 존재하지 않음 ▪ Branching / merging이 매우 자유로움 ▪ 새로운 코드를 만들거나 수정할 때 branching을 하는 것이 일반적임 ▪ 고유의 리비전 인덱스를 사용 ▪ 예) 315a2baab56dc69bdd2ba653cfa2a69a8ff0e92c ▪ 대표적인 오픈소스 VCS ▪ Mercurial, git
  • 10.
  • 11.
    이슈 트래커 ▪ 이슈트래커 (Issue tracker) ▪ VCS와 연동하여 VCS에 관련한 다양한 작업 담당 ▪ 작업 분담 / 이슈 관리 / 변경 이력 추적 / 문서화 ▪ 오픈소스 이슈 트래커 ▪ Trac (http://trac.edgewall.org) ▪ GitLab (https://gitlab.com/groups/gitlab-org) ▪ Bugzilla (https://www.bugzilla.org) ▪ Redmine (http://www.redmine.org) ▪ Jira (https://atlassian.com/software/jira) ▪ 이슈 트래킹 서비스 ▪ Github (https://github.com) ▪ Bitbucket (https://bitbucket.org) ▪ Codebase (https://www.codebasehq.com) ▪ SourceForge (https://sourceforge.net)
  • 12.
  • 13.
    지속적 통합 도구 ▪지속적 통합 Continuous Integration (CI) ▪ 코드의 변경 내용을 확인하고, 서비스를 계속 최신 상태로 유지 ▪ 최근 리비전의 무결성을 확인 ▪ 코드 오류 검사 ▪ 단위 테스트 (Unit test) / 기능 테스트 (functional test) ▪ 코드의 호환성 검사 ▪ 무결성 결과 보고 ▪ 오픈소스 CI ▪ Jenkins (https://jenkins.io) ▪ Python Buildbot ▪ Travis CI (http://travis-ci.org) ▪ Strider (https://github.com/Strider- CD/strider) ▪ Apache Continuum (https://continuum.apache.org) - 은퇴!
  • 14.
  • 15.
    지속적 통합 도구 ▪VCS, IT, CI 연동 ▪ 예) git – github – travis CI ▪ 예) subversion – trac – jenkins ▪ 예) Travis CI : 설정한 .travis.yml 을 git 프로젝트의 루트에 넣음 ▪ 환경 변수 설정 ▪ 브렌치 지정 ▪ 빌드 매트릭스 (build matrix) 구성 ▪ 데이터 스토어 소프트웨어 / 환경 지정
  • 16.
  • 17.
    Learn by run:git basics ▪ Git 기본 강의 (1/2) ▪ 강의 진행자: 한홍근 (OSS 개발자 포럼 / git 세미나 강사) ▪ 준비작업: 통합 학습 환경 ▪ https://www.codeonweb.com 로그인 ▪ https://codeonweb.com/course/@oss-basics-hu 에 가입
  • 18.
    임무 #3 ▪ 임무#2에서 작성한 프로그램을 개선하기 ▪ 다음의 요건을 모두 만족해야 합니다. ▪ 1번 이상의 branch ▪ 3번 이상의 commit ▪ master 가 아닌 branch에서 커밋 ▪ 커밋 로그는 반드시 해당하는 issue / milestone이 있어야 합니다. ▪ 1번 이상의 merge (master 가 아닌 작업 branch를 다시 master로 merge) ▪ 마감: 10월 25일 23시 59분
  • 19.
    Next is... 7/16: Mid-term @inureyes Questions?inureyes@gmail.com OR https://www.codeonweb.com/circle/@oss-basics-hu