목표 : github action이나 bitbucket pipeline을 이용해 master 브랜치에 push나 merge가 발생할 때 apk 파일이 slack channel에 올라오도록 자동화하기

Slack Bot 앱 생성하기

https://api.slack.com/apps에 들어가서 '내 앱' -> '새 앱 만들기' 클릭

앱 이름이랑 workspace를 선택하고 Create App 클릭

'봇' 선택 후 '추가 범위 검토' 클릭

'범위'에서 files:write 권한 부여 (봇과 사용자 둘 다 필요)

범위를 부여하고 나면 이 앱 전용 token이 발급됨. 필요하니까 복사해두자

같은 페이지에서 '워크스페이스에 앱 추가' 버튼 누르고 앱을 사용할 워크스페이스 선택하면 웹에서 할 수있는 설정은 끝

Workspace에 앱 추가하기

이제 Slack 데스크탑 앱에서 '앱 추가'를 클릭하고 자기가 만든 앱 이름을 검색해서 추가한다.

파일을 업로드할 채널에서 i 아이콘을 클릭하고, '더보기' -> '앱 추가' 클릭후 내가 만든 앱을 선택

내 Repository에 CI 설정하기

프로젝트 최상단에 .yml 파일 생성 후 아래의 명령어가 차례대로 실행되게 step을 작성

$ ./gradlew assembleDebug
$ curl https://slack.com/api/files.upload -F token={Slack Bot 앱 만들 때 만들어진 토큰} -F channels={슬랙 채널 이름} -F file=@app/build/outputs/apk/debug/app-debug.apk

{ }로 감싸진 부분은 개별적으로 수정하면 된다.
파일 업로드 method의 필수 argument는 token이고, 그 외 선택가능한 옵션은 공식 문서를 참고하시길..
https://api.slack.com/methods/files.upload

 

files.upload Slack API Method

Uploads or creates a file.

api.slack.com

적용 결과

master 브랜치에 푸시할 때마다 자동으로 debug apk 파일이 slack에 업로드된다