방금 오랫만에 T.Viewer를 릴리즈했다. 파일로딩을 추가하려고 기다리고 있었는데, 이전에 개발해둔 main tab에서 로딩 기능이라도 먼저 릴리즈 해야 할 것 같아서 1.2.2 버전을 릴리즈 했다. 오랫만이라서 릴리즈하는 방법이 가물 가물 했는데, 마침 T.Viewer CI/CD에 대해서 정리도 안해놓고, 설상가상으로 travis까지 read-only mode로 전환되어 있어서...결국 오늘도 늦게 자게 되었다. 늦은김에 정리해두고 자려고 몇 글자 적어본다.
Travis
Travis에 대해서는 Tizen .Net Xamarin.Forms - CI 적용 글에서 다루긴 했었다. Travis는 독일에 있는 CI/CD 전문 서비스 기업이다. 여러모로 잘 정돈된 느낌이다. 기술적으로도 꼼꼼하게 준비가 되어있고, 문서나 사이드, UX도 만족스럽다. 사이트에 가면 회사의 철학이나 지향점, 팀원들의 사진을 볼 수 있는데 한배에 타서 단체사진을 찍은 모습이 인상적이다. 나도 나중에 회사 차리면 요트 빌려서 파티하고 거기서 단체사진 찍어야지.
원래 travis-ci.org에서 오픈소스 프로젝트는 거의 무료로 사용할 수 있었는데, travis-ci.com으로 도메인도 변경하고 조금씩 유료화를 진행하는 듯하다. 내 프로젝트 smtm, t.viewer는 모두 travis-ci.org에 있었는 6월 15일부터 서비스가 중단되었다. 다행이 travis-ci.com으로 생각보다는 쉽게 이동할 수 있었다. 지금은 무료로 한달에 10000크레딧을 주고 private, open-source 무관하게 사용할 수 있다. 시간이랑 플랫폼에 따라서 크레딧 차감량이 달라지는 것 같다. T.Viewer는 윈도우, 리눅스 크로스 플랫폼 빌드를 해야하고 사이즈도 커서 크레딧을 많이쓰게 되었다. 간단한 파이썬 프로젝트는 한달내내 써도 문제가 없을 것 같다.
T.Viewer 설정
travis 설정은 간단하다. .travis.yml
파일을 다음과 같이 작성하면 된다. 내용이 매우 직관적이라서 이해가 쉽다. 처음 생성할때는 플랫폼 별로 목적에 따라 가이드가 잘 되어 있어서 필요한것을 복사해서 붙여넣으면서 설정하면 된다.
deploy 부분이 매우 유용하다. T.Viewer의 경우 리눅스용과 윈도우용을 모두 빌드해서 릴리즈해야 하는데, 두 벌을 내가 직접 빌드해서 산출물을 정리해서 올리는 작업을 한다면 정말 힘들었을 것 같다. 그 귀찮은 일을 git tag 하나 올리면 알아서 해준다니 얼마나 고마운가.
notifications:
email:
on_success: never
on_failure: change
language: node_js
node_js:
- '10'
os:
- linux
- windows
before_install:
- npm install -g codecov
install:
- npm install
script:
- npm run test && npm run build
- codecov
deploy:
provider: releases
api_key:
secure: P/9QttAI1XiZN0opykHKI+Gxz/QB46/mGguvoIW571Crqb3RCHiRt1wkKNyTNcx1ychWH81XpY7Z1R5Gtioy/fGeyoWYmfoRXBHvkq9N3d0yl2rCLCJV/xlBLmmK4mfFwvgd/zQqkCakXVvr+MOvLnopEl+YAQEfFN0JRc3V05sZzyadncazVf3T2n+NoiONw2z+i4gV+PzD6SfvotMrUGDrjoiqnkneRF71ubw0Hl+cJml5JQXZFgZIOcn2N2VLWIZbyt9CeBu7pFeAET2OZitTnXo/Wq5tewWEPglM97CJJpkFLdkrWeEaXrDMXYEdGJJE4XgA9nY80nRZu2C5SlKCkVQJp6Qyv4uLIiuQ3X0kw3nXubOlmSM5dZpFwKh/Co9mwt+8whsKLWRI+/BkmPBzGLBS0HARyiic5HS7esVb/58Z1EkitlJK1ijH+DX2spmjW71mO7gAiUeElAAOu37uIGH3ukE7mhOwW3A/XygklEwMpcyUT1rOwSg3Eql0yiFVanMaixrglsQwO21AyM4zoHW1RgjQ2QNS8SY9P0aMIFDEI9s7EGrgxDc/8B5Wfn/3oRbnM+f35gwXsZuoGEKa/RR6qf3fTisrsYF2X8l6TZ5dYbmt026c91D3gqjUIGX7oIaD9WcEQ2zlpINpru2WNwhoOv2wc4jxydVlmY8=
file_glob: true
file:
- "dist_electron/*.AppImage"
- "dist_electron/*.exe"
on:
repo: msaltnet/T.Viewer
tags: true
skip_cleanup: 'true'
commit을 올리면 일반적으로 commit이 올라간 브랜치에서 자동으로 CI가 돈다. Deploy를 위해서는 commit에 tag를 붙인다음 git push origin tag
로 tag를 remote repo에 등록하면 된다. Tag를 하나의 브랜치로 간주해서 독립적으로 빌드하고, 산출물을 github release 탭에 올려주기까지 한다. 클라우드도 안쓰고, 서버 하나 없이 내 프로젝트를 릴리즈해서 산출물을 웹에 올려놓을 수 있다니! 참으로 좋은 세상이다. 개발하기 참 좋은 세상!
개발하기는 좋은데, 개발하다가 취침 시간이 계속 줄어드는 느낌이다. 졸려 죽겠다.
참고자료
'나의 경험담' 카테고리의 다른 글
2022 가을 캠핑의 기록 (0) | 2022.11.07 |
---|---|
관악산 등산 사당역-연주대-과천역 4시간 코스 (0) | 2021.09.26 |
Tizen Log Viewer T.Viewer를 소개합니다. (0) | 2021.08.18 |
라즈베리파이 Jupyter notebook 외부 접속 안될때 (0) | 2021.05.15 |
라즈베리파이 우분투 openssh-server Failed with result 'exit-code' (0) | 2021.05.10 |
[T.Viewer] electron + jest desktop application에 codecov 적용기 (0) | 2021.01.13 |
[T.Viewer 개발일기] 부록. PR하기 (0) | 2020.09.26 |
댓글