✅ 공식문서
https://helpdesk.dooray.com/share/pages/9wWo-xwiR66BO5LGshgVTg/2939987647631384419
📍 목차
- 과제 내용
- 프로세스
- 주요 명령어
- 코드
- 결과
과제 내용
- 특정 두레이 프로젝트에 일일 스크럼 태스크를 자동 등록해주는 프로그램 작성
- 일일 태스크 생성: [2023/01/10 (화) 일일 스크럼] 등 일일 스크럼 태스크를 1주일 전 매일 자동 생성
- 주간 태스크 생성: 2023/01/10(화) 데이터운영팀 주간 업무 회의 의 주간 회의 태스크는 다음주 회의 태스크 자동 생성
프로세스
개발환경
- macOS Monterey
- intel 7i / x86_64
도식화
- 상위 업무가 있는지 확인
- 없으면 연 또는 월 단위의 상위 업무 생성
- 해당 일에 업무가 있는지 확인 (수동으로 등록된 것이 있는지 확인 차원)
- 없으면 가장 최근에 등록된 일일 업무가 있는지 확인
- 있다면 가장 최근 일일 업무 상태-완료/만기일-미정 설정
- 없으면 가장 최근에 등록된 일일 업무가 있는지 확인
- 하위 업무 생성
- 젠킨스에서 설정한 두레이 대화방에 메시지 알림
세부사항
- 상위 업무에 하위 업무로 등록됨
- 태그 : 지정한 태그명
- 날짜 : 생성될 때 일주일 후 날짜로 자동 생성됨
- 담당자 : 본인 (그룹으로도 가능)
- 실행 : 젠킨스 사용
- 일일 스크럼 : 평일 9시마다 빌드
- 주간업무회의 : 화요일 9시마다 빌드
주요 명령어
curl
- 프로토콜을 이용해 URL로 데이터를 전송해서 서버에 데이터를 보내거나 가져올 때 사용하는 명령어
- Shell에서 REST API(http) 테스트를 하고 싶을 때 사용
- 지원하는 프로토콜 : http / https / ftp / ldap / scp / telnet / smtp / pop3 등
- Linux/mac OS : 기본 탑재
- 사용한 옵션
- -d : http POST 요청 데이터 입력
- -s : 진행 내용이나 메시지 출력 안되게
- -X : 요청시 사용할 메소드 종류
- -H : 전송할 헤더 지정
date
- 날짜 및 시간을 다양한 포맷으로 출력하고, 계산할 때 사용하는 명령어
- macOS에서 사용하기
- macOS는 date 명령어에 -d 옵션이 적용되지 않음
- 포맷 : -v[-(과거)/+(미래)][일수]d
# 오늘로부터 7일 뒤 yyyy/mm/dd 형식
date -v+7d +%Y/%m/%d
# 오늘로부터 7일 뒤 요일 형식
date -v+7d +%A # 수요일
date -v+7d +%a # 수
jq
- Shell에서 JSON을 조작할 수 있는 라이브러리
- 사용한 옵션
- -r : 결과값에 따옴표 제거해서 raw 값 받기
- 설치
# macOS
brew install jq
crontab
- Linux에서 일정 주기나 특정 시간에 명령을 실행하게 해주는 명령어 (스케줄러)
# crontab 작성
crontab -e
# crontab 작업 리스트 보기
crontab -l
# crontab 모든 작업 삭제
crontab -r
# 매주 일요일 23시 55분에 수행
55 23 * * 0 파일 저장된 위치 >> 로그 저장할 위치
# 매주 월-금요일 23시 55-59분에 수행
55-59 23 * * 1-5 파일 저장된 위치 >> 로그 저장할 위치
코드
- 변수


- 로직
- 상위 업무 유무 확인
- 없으면 상위 업무 생성

- 하위 업무 유무 확인
- 있으면 종료

- 없으면 가장 최근 일일 업무 확인 후 상태-완료 및 만기일-미정 설정

- 하위 업무 생성

결과
- 성공 화면 (연 단위)



- 성공 화면 (월 단위)


- 이미 해당 일의 업무가 생성되어 있을 경우

고려한 사항
- 상위 업무가 연 또는 월 단위를 선택하여 생성될 수 있도록 구현
→ 연도나 월이 바뀌더라도 때마다 자동으로 상위 업무가 생성되어 수작업이 필요하지 않도록 구현 - 만기일(없음/미정/있음) 설정
→ 가장 최근의 업무를 업무상태를 완료로 바꿀 경우 : 만기일이 설정되어 캘린더에 나오게 됨
→ 업무를 생성하거나 변경할때 dueDateFlag: false 로 할 경우, 만기일이 없음 상태가 됨
→ 특이사항 1 : 업무상태(할일/진행중/완료) 속성을 사용할 수 없음
→ 특이사항 2 : dueDateFlag를 true로만 사용하기를 권장 - 크론탭만 사용했을 경우, 빌드가 실패한 경우에 재실행 등의 예외 처리가 쉽지 않음
→ 젠킨스에서 두레이와 연동된 플러그인을 사용해 빌드 실패시 재시도 횟수를 설정하여 다시 빌드되도록 설정 - 빌드 결과를 두레이 메시지 알림
→ 두레이 대화방 단위로 메시지 가능
보완이 필요한 사항
- 상위 업무 생성시 하위 업무가 바로 등록되지 않는 점
→ 동시성 문제인가 싶어 wait를 걸어봤는데 되지 않아서 좀 더 확인 필요 - 상위 업무를 생성해야 하는 경우, 태그도 함께 생성될 수 있도록 (현재는 태그가 만들어져 있다고 가정되어 있음)
→ 'application/x-www-form-urlencoded' not supported 에러 확인 필요 - 젠킨스봇 메시지 내용 설정이 가능한지 확인
→ 플러그인에서 지원하지 않는 것 같지만 좀 더 확인 필요