Skip to content

Release Artifacts

Release Artifacts #76

Workflow file for this run

on:
release:
types:
- created
name: Release Artifacts
jobs:
build-android-apk:
name: "Build Android APK"
runs-on: ubuntu-22.04
permissions: write-all
timeout-minutes: 30
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- name: Install java
uses: actions/setup-java@v3
with:
distribution: "zulu"
java-version: "21.x"
cache: "gradle"
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
flutter-version-file: pubspec.yaml
- name: Enable android
run: flutter config --enable-android
- name: Show flutter version
run: flutter doctor --verbose
- name: Decode keystore and create jks and properties file for signing the app
shell: bash
run: |
echo "$KEYSTORE" | base64 --decode > app/keystore.jks
echo "storeFile=keystore.jks" >> key.properties
echo "keyAlias=upload" >> key.properties
echo "storePassword=$KEYSTORE_PASSWORD" >> key.properties
echo "keyPassword=$KEYSTORE_PASSWORD" >> key.properties
env:
KEYSTORE: "${{ secrets.ANDROID_RELEASE_KEY }}"
KEYSTORE_PASSWORD: "${{ secrets.ANDROID_RELEASE_KEY_PASSWORD }}"
working-directory: ./android
- name: Build
run: flutter build apk --release
- name: Upload file to the GitHub release
uses: svenstaro/upload-release-action@v2
with:
# GitHub token.
repo_token: ${{ secrets.GITHUB_TOKEN }}
# Local file to upload.
file: build/app/outputs/flutter-apk/app-release.apk
asset_name: letscheck-${{ github.event.release.tag_name }}-android.apk
# Tag to use as a release.
tag: ${{ github.ref }}
build-linux:
name: "Build Linux x64"
runs-on: ubuntu-22.04
permissions: write-all
timeout-minutes: 30
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- name: Install Flutter dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libx11-dev pkg-config cmake ninja-build libblkid-dev libayatana-appindicator3-dev jq
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
flutter-version-file: pubspec.yaml
- name: Enable desktop
run: flutter config --enable-linux-desktop
- name: Flutter get packages
run: flutter pub get
- name: Flutter build app
run: flutter build linux
- name: Copy libquickjs
run: cp ./build/linux/x64/release/plugins/flutter_js/bundle/lib/libquickjs_c_bridge_plugin.so ./build/linux/x64/release/bundle/lib || exit 0
- name: Compress artifacts
run: tar -a -c -f letscheck-linux-x64.tar.xz -C ./build/linux/x64/release/bundle .
- name: Upload artifcats for flatpak job
uses: actions/upload-artifact@v4
with:
name: linux-x64_binary
path: letscheck-linux-x64.tar.xz
- name: Upload files to a GitHub release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: letscheck-linux-x64.tar.xz
asset_name: letscheck-${{ github.event.release.tag_name }}-linux-x64.tar.xz
tag: ${{ github.ref }}
build-linux-arm64:
name: "Build Linux ARM64"
runs-on: ubuntu-22.04-arm
permissions: write-all
timeout-minutes: 30
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- name: Install Flutter dependencies
run: |
sudo apt-get update
sudo apt-get install -qy libgtk-3-dev libx11-dev pkg-config cmake ninja-build libblkid-dev clang unzip libayatana-appindicator3-dev
- name: Set up fvm
run: ./scripts/setup_fvm.sh
- name: Build quickjs-c-bridge
run: pushd quickjs-c-bridge; cmake -S ./linux -B ./build/linux; cmake --build build/linux; popd
- name: Enable desktop
run: fvm flutter config --enable-linux-desktop
- name: Flutter get packages
run: fvm flutter pub get
- name: Some wired mkdir
run: mkdir -p build/linux/arm64/release/bundle/lib
- name: Flutter build app
run: fvm flutter build linux --release
- name: Copy libquickjs
run: cp quickjs-c-bridge/build/linux/libquickjs_c_bridge_plugin.so build/linux/arm64/release/bundle/lib/ || exit 0
- name: Compress artifacts
run: tar -a -c -f letscheck-linux-arm64.tar.xz -C ./build/linux/arm64/release/bundle .
- name: Upload artifcats for flatpak job
uses: actions/upload-artifact@v4
with:
name: linux-arm64_binary
path: letscheck-linux-arm64.tar.xz
- name: Upload files to a GitHub release
uses: svenstaro/upload-release-action@v2
with:
# GitHub token.
repo_token: ${{ secrets.GITHUB_TOKEN }}
# Local file to upload.
file: letscheck-linux-arm64.tar.xz
asset_name: letscheck-${{ github.event.release.tag_name }}-linux-arm64.tar.xz
# Tag to use as a release.
tag: ${{ github.ref }}
build-linux-flatpak:
needs: [build-linux, build-linux-arm64]
name: "Build Linux flatpak"
runs-on: ubuntu-22.04
container:
image: bilelmoussaoui/flatpak-github-actions:freedesktop-22.08
options: --privileged
permissions: write-all
timeout-minutes: 10
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- name: Download binary from build-linux
uses: actions/download-artifact@v4
with:
name: linux-x64_binary
- name: Extract x64 binary
run: mkdir -p ./build/linux/x64/release/bundle && tar -x -f letscheck-linux-x64.tar.xz -C ./build/linux/x64/release/bundle
- name: Download binary from build-linux-arm64
uses: actions/download-artifact@v4
with:
name: linux-arm64_binary
- name: Extract arm64 binary
run: mkdir -p ./build/linux/arm64/release/bundle && tar -x -f letscheck-linux-arm64.tar.xz -C ./build/linux/arm64/release/bundle
- name: Build flatpak
uses: jochumdev/flatpak-github-actions/flatpak-builder@builder-update-deps
with:
bundle: letscheck.flatpak
manifest-path: ./io.github.jochumdev.letscheck.yml
cache-key: flatpak-builder-${{ github.sha }}
upload-artifact: "false"
- name: Upload artifacts to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: letscheck.flatpak
asset_name: letscheck-${{ github.event.release.tag_name }}-linux.flatpak
tag: ${{ github.ref }}
build-macos:
name: "Build MacOS"
runs-on: macos-latest
permissions: write-all
timeout-minutes: 30
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
flutter-version-file: pubspec.yaml
- name: "Select the latest stable Xcode 12"
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Install create-dmg
run: brew install create-dmg
- name: Enable desktop
run: flutter config --enable-macos-desktop
- name: Flutter get packages
run: flutter pub get
- name: Flutter build app
run: flutter build macos
- name: Create dmg
run: |
./scripts/create_mac_dmg.sh
- name: Compress artifacts
run: cd build/macos/Build/Products/Release && zip -r ../../../../../letscheck-macos.zip letscheck.app
- name: Upload artifacts to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: letscheck-macos.zip
asset_name: letscheck-macos-${{ github.event.release.tag_name }}.zip
tag: ${{ github.ref }}
- name: Upload DMG to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: build/macos/Build/Products/Release/letscheck.dmg
asset_name: letscheck-macos-${{ github.event.release.tag_name }}.dmg
tag: ${{ github.ref }}
build-windows:
name: "Build Windows"
runs-on: windows-latest
permissions: write-all
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- name: Make yq tool available on Windows runners
run: choco install yq
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
flutter-version-file: pubspec.yaml
- name: Enable desktop
run: flutter config --enable-windows-desktop
# - name: Generate MSIX-compatible version
# uses: ashley-taylor/[email protected]
# id: msixver
# with:
# value: ${{ github.event.release.tag_name }}
# regex: (\-\w+)|(\+\w+)
# replacement: ""
# - name: Write MSIX
# uses: DamianReeves/[email protected]
# with:
# path: pubspec.yaml
# contents: |
# msix_config:
# display_name: Letscheck
# publisher_display_name: René Jochum
# identity_name: io.github.jochumdev.letscheck
# publisher: CN=Letscheck
# msix_version: ${{steps.msixver.outputs.value }}.0
# logo_path: assets\icons\letscheck.png
# architecture: x64
# capabilities: "internetClient,removableStorage"
# store: false
# certificate_path: package\letscheck.pfx
# certificate_password: ${{ secrets.WIN_CERT_PASS }}
# build_windows: false
# install_certificate: false
# write-mode: append
- name: Flutter get packages
run: flutter pub get
- name: Flutter build app
run: flutter build windows
- name: Compress artifacts
run: cd build/windows/x64/runner/Release && C:/ProgramData/Chocolatey/bin/7z.exe a ../../../../../letscheck-windows-x64.zip .
- name: Upload artifacts to release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: letscheck-windows-x64.zip
asset_name: letscheck-${{ github.event.release.tag_name }}-windows-x64.zip
tag: ${{ github.ref }}
# - name: Create MSIX
# run: flutter pub run msix:create
# - name: Upload MSIX to release
# uses: svenstaro/upload-release-action@v2
# with:
# repo_token: ${{ secrets.GITHUB_TOKEN }}
# file: build\windows\x64\runner\Release\letscheck.msix
# asset_name: letscheck-windows-x64-${{ github.event.release.tag_name }}.msix
# tag: ${{ github.ref }}
build-web:
name: "Build Web"
runs-on: ubuntu-22.04
permissions: write-all
timeout-minutes: 30
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
fetch-depth: 0
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
cache: true
flutter-version-file: pubspec.yaml
- name: Enable desktop
run: flutter config --enable-web
- name: Flutter get packages
run: flutter pub get
- name: Flutter build app
run: flutter build web --base-href "/letscheck/pwa/" --release
- name: Compress artifacts
run: cd build/web && zip -r ../../letscheck-web.zip .
- name: Upload artifacts to release
uses: svenstaro/upload-release-action@v2
with:
# GitHub token.
repo_token: ${{ secrets.GITHUB_TOKEN }}
# Local file to upload.
file: letscheck-web.zip
asset_name: letscheck-${{ github.event.release.tag_name }}-web.zip
# Tag to use as a release.
tag: ${{ github.ref }}
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build/web
destination_dir: pwa
force_orphan: true
user_name: 'github-ci[bot]'
user_email: 'github-actions[bot]@users.noreply.github.com'
commit_message: 'Publish to gh-pages'