이 글은 1편으로부터 이어집니다.
resource 파일을 수동으로 관리하는것에서 google spreadsheet로 관리하여 자동으로 resource 파일을 생성해주니 편리하고 참 좋았다.
하지만 인간은 적응의 동물이라고 수동으로 다운로드 > java resource file 저장 > git commit 이 일렬의 과정이 귀찮아 지기 시작한다.
해서 자동으로 생성이 끝나면 알아서 git으로 커밋해주기를 바랬다. 사용하고 있는 git의 web 서비스는 github. github에서 제공하는 api를 써보기로 한다.
github rest api라는 document가 있다. 역시나 git에 file을 commit하는 api가 있다. 여기서 하나의 문제가 발생한다. 현재 개발중인 branch를 message file을 생성할 때 마다 매번 입력하여 내 branch에 커밋을 해야하는지 고민했었다.
const SERVER_COMMIT_MESSAGE = 'Message properties Commit : ';
const SERVER_COMMIT_BRANCH = '{message_commit_branch_name}';
const SERVER_GIT_TOKEN = '{git_token}';
function getServerFileUrl(){
return 'https://api.github.com/repos/{github_name}/{repository}/contents/{resource_path}';
}
//기존 실행 함수를 convertDataToServerXmlString 에서 serverPushToGithub로 변경 해주어야 한다.
function serverPushToGithub() {
// Get the user's login credentials
//var gitToken = Browser.inputBox('Enter your GitHub token:');
//github shopl-dev jenkins token
var sheet = SpreadsheetApp.getActiveSheet();
if(sheet != null && sheet.getName() == SHEET_NAME) {
var sheetData = sheet.getSheetValues(1, 1, sheet.getLastRow(), sheet.getLastColumn());
generalMap = new Map();
generalMap.set(MAP_TOKEN_KEY, SERVER_GIT_TOKEN);
generalMap.set(MAP_BRANCH_KEY, SERVER_COMMIT_BRANCH);
generalMap.set(MAP_COMMIT_MESSAGE_KEY, SERVER_COMMIT_MESSAGE);
for(var i = 0; i < SERVER_LANGUAGE_SET.length; i++) {
var folder = SERVER_LANGUAGE_SET[i][1];
var xml = convertDataToServerXmlString(sheetData, SERVER_LANGUAGE_SET[i][0]);
if( xml != null ) {
var ServerFolder = DriveApp.getFolderById(SERVER_FOLDER_ID);
var file = ServerFolder.createFile(folder, xml);
var sha = pushToGithub(
getServerFileUrl(),
file
);
}
}
}
}