Android CI #3
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: Android CI | |
on: | |
workflow_dispatch: | |
release: | |
types: [published] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: set up JDK 18 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '18' | |
distribution: 'temurin' | |
cache: gradle | |
- name: Install Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '18' # Ensure this matches your project's Node.js version requirements | |
- name: Install Yarn | |
run: npm install -g yarn | |
- name: Install Dependencies | |
run: yarn install | |
- name: Decode Keystore | |
run: echo "${{ secrets.MYAPP_RELEASE_STORE_FILE_BASE64 }}" | base64 -d > android/app/fotos-upload-key.jks | |
- name: Update Version Code and Name | |
run: | | |
latest_version=$(curl --silent "https://api.github.com/repos/${{ github.repository }}/releases/latest" | jq -r .tag_name) | |
new_version_code=$(grep 'versionCode' android/app/build.gradle | sed 's/[^0-9]*//g' | awk '{print $1 + 1}') | |
sed -i "s/versionCode [0-9]*/versionCode ${new_version_code}/" android/app/build.gradle | |
sed -i "s/versionName \".*\"/versionName \"${latest_version}\"/" android/app/build.gradle | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build Android Bundle | |
run: | | |
cd android | |
chmod +x gradlew | |
./gradlew bundleRelease -Pandroid.injected.signing.store.file=android/app/fotos-upload-key.jks -Pandroid.injected.signing.store.password=$MYAPP_RELEASE_STORE_PASSWORD -Pandroid.injected.signing.key.alias=$MYAPP_RELEASE_KEY_ALIAS -Pandroid.injected.signing.key.password=$MYAPP_RELEASE_KEY_PASSWORD | |
env: | |
MYAPP_RELEASE_STORE_FILE: "android/app/fotos-upload-key.jks" | |
MYAPP_RELEASE_STORE_PASSWORD: ${{ secrets.MYAPP_RELEASE_STORE_PASSWORD }} | |
MYAPP_RELEASE_KEY_ALIAS: ${{ secrets.MYAPP_RELEASE_KEY_ALIAS }} | |
MYAPP_RELEASE_KEY_PASSWORD: ${{ secrets.MYAPP_RELEASE_KEY_PASSWORD }} | |
- name: Get Release Info | |
id: get-release-info | |
uses: actions/github-script@v5 | |
with: | |
script: | | |
let uploadUrl = 0; | |
try { | |
const release = await github.rest.repos.getLatestRelease({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
}); | |
uploadUrl = release.data.id; | |
} catch (error) { | |
console.log('Error fetching latest release: ', error.message); | |
} | |
return uploadUrl; | |
- name: Print release upload URL | |
run: echo "Upload URL is ${{ steps.get-release-info.outputs.result }}" | |
- name: Upload Update File Parts to Release | |
uses: actions/github-script@v5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
script: | | |
const fs = require('fs'); | |
const path = require('path'); | |
const directory = './android/app/build/outputs/bundle/release'; | |
const files = fs.readdirSync(directory); | |
for (const file of files) { | |
if (file.startsWith('app')) { | |
const filePath = path.join(directory, file); | |
console.log(`Uploading ${file}...`); | |
await github.rest.repos.uploadReleaseAsset({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
release_id: ${{ steps.get-release-info.outputs.result }}, | |
name: `Fxfotos_${file}`, | |
data: fs.readFileSync(filePath) | |
}); | |
} | |
} |