feature[release]: fix slack web hook #7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release Firebase Distribution Workflow | |
on: | |
push: | |
branches: | |
- release/** | |
jobs: | |
build-and-release: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: '17' | |
- name: Decode keystore | |
run: echo "${{ secrets.RELEASE_KEYSTORE_BASE64 }}" | base64 --decode > keystore/release.keystore.jks | |
- name: Grant execute permission for gradlew | |
run: chmod +x ./gradlew | |
- name: Add Local Properties | |
env: | |
KAKAO_API_KEY: ${{ secrets.KAKAO_API_KEY }} | |
HMH_DEV_BASE_URL: ${{ secrets.HMH_DEV_BASE_URL }} | |
HMH_PROD_BASE_URL: ${{ secrets.HMH_PROD_BASE_URL }} | |
AMPLITUDE_API_KEY: ${{ secrets.AMPLITUDE_API_KEY }} | |
KEY_ALIAS: ${{ secrets.KEY_ALIAS }} | |
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} | |
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }} | |
run: | | |
echo kakaoApiKey=$KAKAO_API_KEY >> ./local.properties | |
echo amplitudeApiKey=$AMPLITUDE_API_KEY >> ./local.properties | |
echo keyAlias=$KEY_ALIAS >> ./local.properties | |
echo keyPassword=$KEY_PASSWORD >> ./local.properties | |
echo storePassword=$STORE_PASSWORD >> ./local.properties | |
echo hmhDevBaseUrl=$HMH_DEV_BASE_URL >> ./local.properties | |
echo hmhProdBaseUrl=$HMH_PROD_BASE_URL >> ./local.properties | |
- name: Access Firebase Service | |
run: echo '${{ secrets.GOOGLE_SERVICES_JSON }}' > ./app/google-services.json | |
- name: Cache Gradle dependencies | |
uses: actions/cache@v3 | |
with: | |
path: ~/.gradle/caches | |
key: gradle-cache-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
gradle-cache-${{ runner.os }}- | |
- name: Build APK | |
run: ./gradlew assembleRelease | |
- name: Verify APK Existence | |
run: test -f app/build/outputs/apk/release/app-release.apk | |
- name: Find Latest Release Branch | |
id: previous-release | |
run: | | |
PREV_RELEASE_BRANCH=$(git branch -r --sort=-committerdate | grep 'origin/release/' | grep -v ${{ github.ref_name }} | head -n 1 | sed 's/origin\///') | |
echo "PREV_RELEASE_BRANCH=$PREV_RELEASE_BRANCH" >> $GITHUB_ENV | |
- name: Generate Release Notes | |
id: release-notes-latest | |
run: | | |
RELEASE_NOTES=$(git log ${{ env.PREV_RELEASE_BRANCH }}..HEAD --oneline) | |
echo "RELEASE_NOTES=$RELEASE_NOTES" >> $GITHUB_ENV | |
- name: Extract Version Information | |
id: version-info | |
run: | | |
VERSION_NAME=$(grep 'versionName' app/build.gradle.kts | awk '{print $2}' | tr -d '"') | |
VERSION_CODE=$(grep 'versionCode' app/build.gradle.kts | awk '{print $2}') | |
echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV | |
echo "VERSION_CODE=$VERSION_CODE" >> $GITHUB_ENV | |
- name: Upload to Firebase App Distribution | |
uses: wzieba/Firebase-Distribution-Github-Action@v1 | |
with: | |
appId: ${{ secrets.FIREBASE_APP_ID }} | |
serviceCredentialsFileContent: ${{ secrets.CREDENTIAL_FILE_CONTENT }} | |
groups: hmh-team | |
file: app/build/outputs/apk/release/app-release.apk | |
releaseNotes: ${{ env.RELEASE_NOTES }} | |
- name: Install Firebase CLI | |
run: curl -sL https://firebase.tools | bash | |
- name: Get Firebase Download URL | |
id: firebase-url | |
run: | | |
sleep 10 # Firebase에 새 릴리즈가 반영될 시간을 확보 | |
DOWNLOAD_URL=$(firebase appdistribution:releases:list --app ${{ secrets.FIREBASE_APP_ID }} --limit 1 --format json | jq -r '.[0].downloadUrl') | |
echo "DOWNLOAD_URL=$DOWNLOAD_URL" >> $GITHUB_ENV | |
- name: Send Slack Notification | |
if: success() | |
run: | | |
curl -X POST -H 'Content-type: application/json' --data '{ | |
"text": "🎉 *Firebase 릴리즈 완료!* 🎉\n | |
🚀 *배포 버전:* `${{ env.VERSION_NAME }} (버전 코드: ${{ env.VERSION_CODE }})`\n | |
📌 *배포 브랜치:* `${{ github.ref_name }}`\n | |
🔖 *릴리즈 노트:*\n | |
```${{ env.RELEASE_NOTES }}```\n | |
📥 *다운로드 링크:* <${{ env.DOWNLOAD_URL }}|여기를 클릭>" | |
}' ${{ secrets.SLACK_RELEASE_WEBHOOK_URL }} |