feature[release]: fix release workflows #5
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: Generate Release Notes | ||
id: release-notes | ||
run: echo "RELEASE_NOTES=$(git log --oneline -n 5)" >> $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: | | ||
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: 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 | ||
Check failure on line 92 in .github/workflows/release.yml
|
||
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: 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_WEBHOOK_URL }} |