Programming

스크립트를 이용한 Manifest 자동 생성 (Shell+Python)

알로그 2020. 1. 10. 20:27
반응형

매번 bugfix와 새로운 feature 개발할 때, manifest 파일을 만들어서 빌드를 해야하는 번거로움이 있었다.

 

이를 위해 manifest를 자동으로 생성하는 jenkins job을 만들게 되어 기록해본다.

즉 manifest에서 작업한 repository에 해당하는 라인 뒤에 revision 값을 추가해야 한다.

 

필요한 매개변수 

  • Base branch : 생성할 manifest의 base 브랜치
  • Working repositories : 작업한 repository 리스트 (공백으로 받음, 젠킨스에 공백으로 구분할 수 있는 기능이 있음)
  • New branch : 새로 생성 할 브랜치. 즉 working branch에서 작업한 branch명

 

 

<Shell Script>

# Build with Parameters
# BASE_BRANCH : base branch from modifying
# WORKING_REPOSITORY : repository name to work on
# NEW_BRANCH : new branch name to be created

rm -rf manifest

git clone -b $BASE_BRANCH

cp ModifyRevision.py manifest
cd manifest

for repo in ${WORKING_REPOSITORY}; do
file_to_modify = `grep -r '"'$repo'"' --exclude="./IDE.xml" ./* | cut -d ':' -f1 | cut -d "/" -f2`
python ModifyRevision.py $file_to_modify $repo $NEW_BRANCH
done

rm ModifyRevision.py

git checkout -b $NEW_BRANCH
git add .
git commit -m "$NEW_BRANCH : Create a manifest file"
git push origin $NEW_BRANCH

 

<Python Script>

import sys

with open(sys.argv[1], 'r') as file:
filedata = file.readlines()

new_filedata = ''

for line in filedata:
working_repo = '"' + sys.argv[2] + '"'

if working_repo in line :
splited_line = line.split('/>')[0]
line = splited_line + ' revision="' + sys.argv[3] + '"/>\n'
 
new_filedata += line

with open(sys.argv[1], 'w') as file:
file.write(new_filedata)

 

 

 

반응형

'Programming' 카테고리의 다른 글

VSCODE 주석 단축키 안 먹힘  (0) 2022.10.10
HTML 태그 요약2  (0) 2020.11.29
HTML 태그 요약  (0) 2020.11.29
개발할때 수정한 함수명 추출 (Git diff)  (0) 2018.06.26