Skip to content

fix:CD for android apk #23

fix:CD for android apk

fix:CD for android apk #23

Workflow file for this run

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