기존에는 TinyPNG로 직접 이미지용량을 줄여서 앱/웹에 넣었었습니다.
GitHub Actions를 이용해서 자동화 했습니다.
아주 쉽게 적용할 수 있고 사실상 무료로 사용하실 수 있습니다.
안녕하세요.
헤이딜러 안드로이드팀 박상권입니다.
앱이나 웹을 개발하면서 아이콘이나 이미지를 넣는 경우가 많을텐데요.
저희 팀에서는 100kb이상인 이미지가 앱에 추가될때마다
Tiny PNG에서 이미지 용량을 줄인뒤 앱에 넣고 작업을 해왔었습니다.
Tiny PNG란?
jpg/png 파일의 용량을 획기적으로 줄여주는 서비스입니다.
100kb이상인 이미지들을 보통 70%이상 크기를 줄여주는 아주 유용한 서비스입니다. 🎉🎉
이미지 손실없이 용량을 줄여주기 때문에 안쓸 이유가 없는 서비스입니다.
무료로 사용할 수 있으며 유료로 사용할 경우 더 많은 기능을 사용할 수도 있습니다. 💰💰
TinyPNG를 아주 간단한 방법으로 자동으로 적용하는 방법에 대해서 포스팅 하려고 합니다.
TinyPNG with GitHub Actions
TinyPNG를 API형태로도 사용할 수 있습니다.
이러한 API를 누군가가 GitHub Actions로 사용할 수 있도록 만들어두었습니다.
우리는 이 GitHub Actions를 이용하기만 하면 됩니다. 😇
TinyPNG API Key발급
TinyPNG API를 사용하기 위해서 key를 발급 받습니다.
email을 입력하기만 하면 key가 발급됩니다.
매달 500장까지는 무료로 사용할 수 있으며, 그 이상은 유료결제를 통해 사용할 수 있습니다.
보통 앱/웹개발을 하신다면 한달에 500장이상 이미지가 추가되는일은 없으실테니
사실상 계속 무료로 사용하실 수 있다고 생각하시면 됩니다. 😃
GitHub Actions에 적용
GitHub Actions을 활용해서 우리는 자동으로 이미지 용량이 최적화 되도록 할것입니다.
- PR이 만들어지거나 새로운 commit이 푸시될때
- png/jpg로 끝나는 확장자파일에 대해서
- tiny png api를 통해 이미지를 최적화하고
- 최적화된 이미지로 commit 처리
아래 코드를 각자의 프로젝트 Repository에 추가하시기만 하면 됩니다.
name: 이미지 compress
on:
pull_request:
types: [ opened, synchronize, ready_for_review ]
branches:
- develop
paths:
- '**.png'
- '**.jpg'
jobs:
compress:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- uses: namoscato/action-tinify@v1
with:
api_key: ${{ secrets.TINY_PNG_KEY }}
github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
commit_user_name: 'tester-prnd'
commit_user_email: 'tester@prnd.co.kr'
commit_message: '이미지 최적화 by TinyPNG'
secret으로 아래 key들을 미리 넣어두시면 됩니다.
- TINY_PNG_KEY: 위에서 발급받은 TinyPNG api key
- PERSONAL_ACCESS_TOKEN: commit 하는 주체로 넣고 싶은 계정의 PAT 토큰
- 여기서 commit_user_name, commit_user_email도 원하는값으로 수정하시면 됩니다.
어때요, 참 쉽죠?
용량 최적화로부터의 해방
위의 적용으로 인해 자동으로 이미지 용량 최적화되므로
사람이 이미지 용량 최적화를 해야하는 번거로움으로부터 해방되었습니다.
여러분도 개발자가 직접 하는 행위들을 최대한 자동화해서
시간을 아끼고 아낀 리소스를 효율적인곳에 투자하실 수 있었으면 좋겠습니다.
이상입니다.
감사합니다.
저희와 함께 헤이딜러 서비스를 발전 시켜나가실 분들을 기다리고 있습니다.