name: Release on: push: tags: - 'v*.*.*' jobs: build: runs-on: docker container: image: git.nakama.town/fmartingr/ci-images/ci-base:1.0.0 steps: - uses: actions/checkout@v6 with: fetch-depth: 0 fetch-tags: true - run: git config --global --add safe.directory '*' - name: Install Flutter uses: actions/flutter-action@v2 with: channel: stable - name: Install Android SDK run: | apt-get update -qq && apt-get install -y --no-install-recommends openjdk-17-jdk-headless wget > /dev/null mkdir -p /opt/android-sdk/cmdline-tools wget -q -O /tmp/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip unzip -q /tmp/cmdline-tools.zip -d /opt/android-sdk/cmdline-tools mv /opt/android-sdk/cmdline-tools/cmdline-tools /opt/android-sdk/cmdline-tools/latest rm /tmp/cmdline-tools.zip yes | /opt/android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses > /dev/null 2>&1 || true /opt/android-sdk/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0" > /dev/null echo "ANDROID_HOME=/opt/android-sdk" >> $GITHUB_ENV echo "ANDROID_SDK_ROOT=/opt/android-sdk" >> $GITHUB_ENV - name: Set up release signing env: SIGNING_KEYSTORE: ${{ secrets.SIGNING_KEYSTORE }} SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }} SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }} SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }} run: | echo "$SIGNING_KEYSTORE" | base64 -d > android/app/upload-keystore.jks cat > android/key.properties << EOF storePassword=$SIGNING_STORE_PASSWORD keyPassword=$SIGNING_KEY_PASSWORD keyAlias=$SIGNING_KEY_ALIAS storeFile=upload-keystore.jks EOF - name: Build APK env: GRADLE_OPTS: "-Dorg.gradle.daemon=false" run: | flutter pub get flutter pub run build_runner build --delete-conflicting-outputs VERSION_NAME=$(sh scripts/version.sh | head -1) VERSION_CODE=$(sh scripts/version.sh | tail -1) echo "Building version ${VERSION_NAME} (code ${VERSION_CODE})" flutter build apk --release --build-name="$VERSION_NAME" --build-number="$VERSION_CODE" cp build/app/outputs/flutter-apk/app-release.apk worldhopper-${{ github.ref_name }}.apk - name: Generate changelog id: changelog uses: https://git.nakama.town/actions/generate-changelog@v1 with: tag: ${{ github.ref_name }} - name: Prepare release assets run: | mkdir -p dist/release cp worldhopper-${{ github.ref_name }}.apk dist/release/ - name: Create release uses: actions/forgejo-release@v2 with: direction: upload token: ${{ secrets.FORGEJO_TOKEN }} tag: ${{ github.ref_name }} release-dir: dist/release release-notes: ${{ steps.changelog.outputs.changelog }} prerelease: ${{ contains(github.ref_name, '-rc.') }}