올챙이시절 기록소

빌드시스템의 Table & Procedure 관련정리 본문

2016/8월

빌드시스템의 Table & Procedure 관련정리

allroundplayer 2017. 10. 16. 11:03



mfo_git_talbes.sql

빌드시스템에 필요한 Table과 프로시저 관련정리


1. mfo_tag 테이블은  mfo 제품의 베이스라인을 기록하는 테이블이다


* 베이스라인 : 형상 항목이 하나의 완전한 산출물로 쓰여질 수 있는 상태의 집합


create table mfo_tag     ( mfo_release_ver varchar2(30),
                                mfosql_tag varchar2(30),
                                mfoweb_tag varchar2(30),
                                mfodg_tag varchar2(30),
                                mfonp_tag varchar2(30),
                                mfopg_tag varchar2(30),
                                mforts_tag varchar2(30),
                                mfobuild_tag varchar2(30),
                                corp_info varchar2(4000),
                                constraint pk_mfo_tag primary key(mfo_release_ver)
                                ) ;
--* XmPing은 형상관리가 필요없다 생각되어 제외하였음.
--* mfo_part_ver : ex) mfosql_160526.01_kor_sse : 제품군_total버전_(국가_sub_part_고객사 필요시 추가기재)
--* mfo_release_ver : ex) mfo531_160526.01_exa_sse : 제품군_total버전_(국가_sub_part_고객사 필요시 추가기재)
--* mfodll_tag varchar2(100), mfopjs_tag varchar2(100) 필요시 column add 명령어로 추가, new java pjs 출시시점이라 제외함

3. mfo_tag_part는 형상항목의 리스트를 보여줄 때, 컴포넌트를 개별 설치할 때 빌드 레퍼런스를 참조하고자 사용하며 gitlab srv에 push가 감지되면 기입된다

create table mfo_tag_part(tag_info varchar2(30),
build_ref varchar2(30),
constraint tag_part_uk unique(tag_info)
);
-- * 커스터마이징한 환경구성을 위해 태그를 저장하는 테이블이다.

3. corp_code 는 기업이름을 3자리코드로 명명하는 내역을 기록한 테이블이다

create table corp_code (corp_name varchar2(100),
                         corp_code varchar2(3),
                         constraint pk_mfo_corp_tag primary key(corp_code)) ;

4. runner_stat은 빌드서버가 2개 이상일 때, 통제 하기위해 기록해두는 테이블이다


create table runner_stat (run_comp varchar2(15),
                         total_ver varchar2(30),
                         value number(1)
                         ) ;
-- * unit test를 위해서는 unit_ver(가칭) 칼럼이 추가되어야 하지 않을까 당장 통합 빌드에는 문제 없음
-- * unit test와 comp만 변경하는(4단계 추후 추가) 경우에는 lock 제어를 위해서 runner_stat 테이블을 다시 수정해야함.
-- * 지금은 어떻게 해야할 지 잘 모르겠음)
-- * 161028 해결책이 보였음 하나의 vm에 cpu 및 메모리를 몰빵해주고 최소한의 빌드 동작만 case화 하여 명세 및 실행한다.
## VALUE=
## 1 require
## 2 Compile&Build
## 3 Send File to requirer
## 0 Waiting


5. ipaddress 각 환경의 IP Address에 관한 테이블이며, (IP addr에 대한 하드코딩을 피하여) IP가 변경이 되었을 때에 커버하기 위해 사용한다


create table ipaddress (who varchar2(20),
ipaddr varchar2(15),
part varchar2(30),
remark varchar2(4000),
constraint uk_address unique(ipaddr,part)
);
-- * IP Address 에 관한 테이블이며, Client에서 요청하였을 때, 설치파일 전달 할 때 참조한다.

6. requirer 테이블은 빌드 명세에 대한 요청을 기록하는 테이블이다

create table requirer (who varchar2(20),
part varchar2(30),
req_tag varchar2(10),
mfo_release_ver varchar2(30)
);
-- * 요청에 대한 정보 테이블이며, 누가, 어떤 파일을 변경시키고자 하는 태그 어느쪽 부분인지에 대한 정보가 있다.

6. mfo_git_comment 테이블은 git comment를 수집하여 기록하는 테이블이다

create table mfo_git_comment(tag_info varchar2(30),
hash_code varchar2(40),
dev_mention varchar2(4000),
constraint git_comment_uk unique(tag_info,hash_code)
);
-- * release note 또는 bug fix report를 만들기 위한 개발자 멘트 수집용 테이블이다.

7. mfo_report 테이블은 git comment를 가공하여 메세지니라 레포트를 작성할 때 필요한 작업 명세를 기록하는 테이블이다

create table mfo_report(p1 varchar2(30),
p2 varchar2(30),
req_tag varchar2(4000),
req_time date
);
-- * release note 또는 bug fix report를 만들 때, 요구조건을 저장하는 테이블이다.
## P1=
## Parameter1 (baseline1)
## P2
## Parameter2 (baseline2)
## REQ_TAG=
## j jandi
## r excel report


8. update_report_req 프로시저는 jandi나 excel_report를 위한 명세를 입력하기 위해 사용한다

create or replace procedure update_report_req
(p1_var IN varchar2,
p2_var IN varchar2,
req_tag_var IN varchar2)
is
req_tag_check mfo_report.req_tag%type ;
begin
select count(*)
into req_tag_check
from mfo_report
where req_tag = req_tag_var;
if req_tag_check = 1 then
UPDATE mfo_report SET
p1 = p1_var,
p2 = p2_var,
req_time = sysdate
where req_tag = req_tag_var;
else
INSERT into mfo_report (p1, p2, req_tag, req_time )
VALUES (p1_var,p2_var,req_tag_var,sysdate);
end if ;
commit;
end ;
/
## 사용예제 : exec update_report_req('${TO_BASELINE}','${FROM_BASELINE}','j')
## req_tag_var
## j jandi
## r excel report

-- * release note 또는 bug fix report를 만들 때, 요구조건을 입력하는 프로시저이다.



9. update_dev_mention_view 프로시저는 jandi에 출력할 dev_mentions을 view로 만들 때 사용한다

create or replace procedure update_dev_mention_view
(p1_var IN varchar2,p2_var IN varchar2)
is
tag_cnt NUMBER(3);
dynamic_query varchar2(4000);
begin
select count(*) into tag_cnt from mfo_git_comment
where tag_info between p1_var and p2_var and tag_info != p1_var;

if p1_var > p2_var then
execute immediate ('create or replace view mfo_jandi_noti as
select ''Version rollback'' as MSG from dual');
else
if tag_cnt > 10 then
execute immediate ('create or replace view mfo_jandi_noti as
select ''문자량이 너무 많아 제한합니다(2500).'' as MSG from dual');
else
dynamic_query := 'create or replace view mfo_jandi_noti as
select dev_mention || ''\t'' as dev_mention
from mfo_git_comment
where tag_info
between '''|| p1_var ||''' and '''|| p2_var ||''' and tag_info != '''|| p1_var ||'''';
execute immediate dynamic_query;
end if;
end if;

commit;
end;
/
-- * Jandi에 보여줄 개발자 멘트에 대한 뷰의 구문을 변경하는 프로시저이다.
## 사용예제 exec update_dev_mention_view('${FROM_TAG}','${TO_TAG}');



Comments