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 zip -r dist.zip dist - 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 client/dist.zip api_key: ${{ secrets.GITHUB_TOKEN }}