fix:CD for android apk #23
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: Build and Release Android App | |
on: | |
push: | |
branches: | |
- feat/cd-workflow | |
tags: | |
- v* | |
permissions: | |
contents: write | |
jobs: | |
build: | |
name: Build APK | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- name: Set up JDK | |
uses: actions/setup-java@v2 | |
with: | |
java-version: "18" | |
distribution: "adopt" | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '21' | |
- name: Install Dependencies | |
run: | | |
npm install -g corepack | |
yarn install | |
- name: Build Release APK | |
run: | | |
cd android | |
./gradlew assembleRelease | |
- name: Set tag name | |
id: set_tag_name | |
run: | | |
# Determine the latest tag and commit messages since that tag | |
LAST_TAG=$(git describe --tags --abbrev=0) | |
COMMITS=$(git log --oneline ${LAST_TAG}..HEAD --format="%s") | |
# Initialize version components | |
MAJOR=0 | |
MINOR=0 | |
PATCH=0 | |
# Analyze commit messages to determine version bump | |
while read -r line; do | |
if [[ "$line" == feat:* ]]; then | |
# Increment minor version for feature commits | |
((MINOR++)) | |
elif [[ "$line" == chore:* ]]; then | |
# Increment major version for chore commits | |
((MAJOR++)) | |
MINOR=0 # Reset minor version | |
elif [[ "$line" == fix:* ]]; then | |
# Increment patch version for fix commits | |
((PATCH++)) | |
fi | |
done <<< "$COMMITS" | |
# Determine the next version based on commit analysis | |
NEXT_VERSION="${MAJOR}.${MINOR}.${PATCH}" | |
echo "::set-output name=next_version::$NEXT_VERSION" | |
- name: Upload Release APK | |
uses: actions/upload-artifact@v2 | |
with: | |
name: app-release | |
path: ./android/app/build/outputs/apk/release/app-release.apk | |
- name: Create Release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ steps.set_tag_name.outputs.next_version }} | |
release_name: Release ${{ steps.set_tag_name.outputs.next_version }} | |
draft: false | |
prerelease: false | |
- name: Upload APK to Release | |
id: upload-release-asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./android/app/build/outputs/apk/release/app-release.apk | |
asset_name: react-native-template.apk | |
asset_content_type: application/zip | |