Change prod workflow and add automatic deployment
All checks were successful
Release Build / build-docker (push) Successful in 9s
Release Build / build-android-and-release (push) Successful in 2m18s

This commit is contained in:
Rene Kievits
2025-12-24 07:51:51 +01:00
parent c140bb8292
commit 8552b44ffd
14 changed files with 250 additions and 82 deletions

View File

@@ -0,0 +1,108 @@
name: Release Build
run-name: Build and Release by ${{ gitea.actor }}
on:
push:
branches:
- main
jobs:
build-docker:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build and Push Server
run: |
cd server
docker build -t ${{ vars.REGISTRY_URL }}/zen-kanji-server:latest .
docker push ${{ vars.REGISTRY_URL }}/zen-kanji-server:latest
- name: Build and Push Client
run: |
cd client
docker build \
--target production-stage \
--build-arg VITE_API_URL=${{ vars.VITE_API_URL }} \
-t ${{ vars.REGISTRY_URL }}/zen-kanji-client:latest .
docker push ${{ vars.REGISTRY_URL }}/zen-kanji-client:latest
build-android-and-release:
runs-on: ubuntu-latest
needs: build-docker
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: "21"
distribution: "temurin"
- name: Setup Android SDK (Manual)
run: |
export ANDROID_HOME=$HOME/android-sdk
CMDLINE_VERSION=11076708
mkdir -p $ANDROID_HOME/cmdline-tools
echo "Downloading SDK..."
wget -q https://dl.google.com/android/repository/commandlinetools-linux-${CMDLINE_VERSION}_latest.zip -O cmdline-tools.zip
unzip -q cmdline-tools.zip
mv cmdline-tools $ANDROID_HOME/cmdline-tools/latest
rm cmdline-tools.zip
yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses || true
echo "ANDROID_HOME=$ANDROID_HOME" >> $GITHUB_ENV
echo "ANDROID_SDK_ROOT=$ANDROID_HOME" >> $GITHUB_ENV
echo "$ANDROID_HOME/cmdline-tools/latest/bin" >> $GITHUB_PATH
echo "$ANDROID_HOME/platform-tools" >> $GITHUB_PATH
- name: Install and Build Web App
working-directory: client
env:
VITE_API_URL: ${{ vars.VITE_API_URL }}
run: |
npm ci
npm run build:android
- name: Sync Capacitor to Android
working-directory: client
run: npx cap sync android
- name: Decode Keystore
run: |
cd client/android/app
echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 -d > my-release-key.jks
- name: Build Release APK
working-directory: client/android
env:
RELEASE_KEY_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_RELEASE_KEY_PASSWORD }}
RELEASE_KEY_ALIAS: ${{ secrets.ORG_GRADLE_PROJECT_RELEASE_KEY_ALIAS }}
run: |
chmod +x gradlew
./gradlew assembleRelease
- name: Create Release
uses: https://gitea.com/actions/gitea-release-action@v1
with:
tag_name: v1.0.${{ gitea.run_number }}
name: Release v1.0.${{ gitea.run_number }}
body: |
Automated release for commit ${{ gitea.sha }}.
**Docker Images:**
- Server: `${{ vars.REGISTRY }}/${{ vars.SERVER_IMAGE }}:latest`
- Client: `${{ vars.REGISTRY }}/${{ vars.CLIENT_IMAGE }}:latest`
files: |
client/android/app/build/outputs/apk/release/*.apk
api_key: ${{ secrets.GITHUB_TOKEN }}