내가 오픈 소스 프로젝트를 위해 사용하는 Github actions과 App

오늘은 제가 오픈소스 프로젝트에서 주로 사용하는 git-action 과 app에 대해 가볍게 소개해드릴까 합니다. 다른 프로젝트들과 비교해보면 전 그냥 많지도, 적지도 않은 양을 사용하는 것 같네요 😁

Build and test

우선 앱에 대한 빌드/테스트 코드는 대다수 프로젝트에 무조건 포함합니다. 제가 로컬에서 단순하게 빌드할 떄는 상관 없겠지만, PR등을 처리할 때는 빌드 유무, 테스트 결과도 중요하기 떄문에 각 언어별 빌드와 환경별 빌드(e.g 도커) 항상 사용합니다.

뱃지로 해두면 보기 편하고 좋습니다

Security and Code quality

CodeQL (github-actions)

첫번째론 github에서 공식적으로 제공해주는 CodeQL입니다. 정적 코드 스캐너이며, 디펜던시부터 코드상의 문제가 될만한 부분을 찾아줍니다. 체감상 나쁘진 않은 것 같았습니다.

CodeQL은 Github에서 제공하는 빌트인 기능이기 때문에 각 프로젝트의 Secuirty 탭에서 활성화 시킬 수 있습니다. 활성화가 되면 .github 하위에 flow 파일이 생성되며 다른 github action과 동일하게 동작합니다. (스케줄링,Push시, PR 시 등 구동에 대한 이벤트를 임의로 지정할 수 있구요.)

Renovate (app)

https://github.com/marketplace/renovate 두번쨰는 제가 디펜던시 관리를 위해 따로 사용하는 앱입니다. 우선 대다수의 github app들과 마찬가지로 public repo에 대해서만 무료입니다.

앱에서 주기적으로 repo에 대해 스캔하고, 사용중인 라이브러리들의 버전을 관리해줍니다. 위 빌드, 테스트 github action과 같이 사용할 때 시너시가 있죠. (당연히 디펜던시 업데이트를 무작정 진행했을 떄 리스크 때문에..)

Codacy (app)

https://github.com/marketplace/codacy

그다음은 순수히 코드 퀄리티를 위해 사용하는 Codacy입니다. 개인적으로 몇가지 써보고 이게 무난한 것 같아서 사용중입니다. Renovate와 동일하게 Public 프로젝트만 무료입니다. 별도로 뱃지를 제공해주고, Codacy 대시보드, 상세 페이지에서 탐지에 대한 내용을 확인하고 처리(예외,무시 등)할 수 있습니다.

Optimization

ImgBot(app)

https://github.com/marketplace/imgbot repo 내 이미지가 많이 사용된다면 괜찮은 앱입니다. Push/PR 등 변경사항이 있을 때 이미지를 압축하여 용량 자체를 줄여줍니다.

개인적으론 github-page 같이 repo를 이용한 웹 서비스에서, 이미지가 주기적으로 업데이트 되는 경우에 괜찮은 것 같습니다. (아시다 싶이 github-page는 빌드의 시간 제한(10분 남짓)이 있어서, 용량이 커질수록 부담이 늘어나죠.)

Contribute and Community

Contributors(github-action)

https://github.com/marketplace/actions/contributors-list

PR을 유도하고 Contributor의 적극적인 참여를 위한 action과 app 중 만족도가 있던 aciton입니다. action 설정에 따라 Push/PR, 주기적으로 Contributor에 대해 svg 파일로 이미지를 생성해줍니다. 이를 README 같은 페이지에 이미지로 추가해두면 아래와 같이 README에 동적인 Contributor 를 만들 수 있습니다.

Greeting(github-action)

이건 특별한건 아니고, 그냥 이슈,PR등이 올라오면 github가 댓글을 달아줍니다.

name: Greetings

on: [pull_request, issues]

jobs:
  greeting:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/first-interaction@v1
      with:
        repo-token: ${{ secrets.GITHUB_TOKEN }}
        issue-message: 'Thank you for your first issue report :D'
        pr-message: 'Thank you for your first PR :D'

Slack+Github (app)

https://github.com/marketplace/slack-github

제 개인 작업 환경은 슬랙과 연동되는 부분들이 좀 있습니다. 그래서 슬랙을 간간히 활용하는 편인데, github slack app은 github의 issue/pr/push 등 많은 정보를 slack으로 받을 수 있어서 편리합니다.

아마 대다수의 개발자분들은 사용하고 계시지 않을까 싶네요 :D