Skip to content
This repository has been archived by the owner on Sep 9, 2024. It is now read-only.

Weekly CI

Weekly CI #80

Workflow file for this run

name: Weekly CI
env:
SOURCE_PATH: './packages/kaiteki'
PATCH_VERSION: ${{ github.event.inputs.patch_version }}
on:
workflow_dispatch:
inputs:
patch_version:
description: 'Patch version'
required: false
type: string
schedule:
- cron: '0 0 * * 1'
permissions:
contents: read
pages: write
id-token: write
jobs:
test:
name: Test
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{ env.SOURCE_PATH }}
outputs:
build-args: ${{steps.build-variables.outputs.ARGS}}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: 'master'
cache: true
- name: Activate Melos
run: 'flutter pub global activate melos'
- name: Bootstrap packages
run: 'melos bootstrap'
- name: Generate Localizations
run: 'melos run gen_l10n'
- name: Analyze
uses: invertase/[email protected]
with:
working-directory: ${{ env.SOURCE_PATH }}
- name: Test
run: 'melos run test'
- name: Provide build variables
id: build-variables
run: |
echo -n "ARGS=" >> $GITHUB_OUTPUT
echo "$(./scripts/get-version-args.sh)" >> $GITHUB_OUTPUT
build-linux:
name: Build for Linux
runs-on: ubuntu-latest
needs: test
defaults:
run:
working-directory: ${{ env.SOURCE_PATH }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: 'master'
cache: true
- name: Update Linux repos
run: 'sudo apt-get update --fix-missing && sudo apt-get -y upgrade'
- name: Install Linux build requirements
run: 'sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev libhandy-1-dev'
- name: Activate Melos
run: 'flutter pub global activate melos'
- name: Bootstrap packages
run: 'melos bootstrap'
- name: Generate Localizations
run: 'melos run gen_l10n'
- name: Build
run: 'melos run build:linux -- ${{needs.test.outputs.build-args}}'
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: linux
path: '${{ env.SOURCE_PATH }}/build/linux/x64/release/bundle/'
package-appimage:
name: Package (AppImage)
runs-on: ubuntu-latest
needs: build-linux
if: github.event_name != 'pull_request'
steps:
- name: Prepare
run: './scripts/setup-appimage.sh'
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: linux
path: 'kaiteki.AppDir'
- name: Prepare directory
run: |
chmod +x kaiteki.AppDir/kaiteki
wget https://raw.githubusercontent.com/Craftplacer/Kaiteki/master/assets/icons/windows/kaiteki.png -O kaiteki.AppDir/kaiteki.png
wget https://raw.githubusercontent.com/Craftplacer/Kaiteki/master/assets/icons/windows/kaiteki.png -O kaiteki.AppDir/.DirIcon
wget https://raw.githubusercontent.com/Craftplacer/Kaiteki/master/packaging/linux/kaiteki.desktop -O kaiteki.AppDir/kaiteki.desktop
wget https://raw.githubusercontent.com/Craftplacer/Kaiteki/master/packaging/linux/AppRun -O kaiteki.AppDir/AppRun
chmod +x kaiteki.AppDir/AppRun
- name: Make AppImage
run: |
./appimagetool --appimage-extract
./squashfs-root/AppRun kaiteki.AppDir/
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: appimage
path: 'Kaiteki-x86_64.AppImage'
package-flatpak:
name: Package (Flatpak)
runs-on: ubuntu-latest
needs: build-linux
if: github.event_name != 'pull_request'
container:
image: bilelmoussaoui/flatpak-github-actions:gnome-44
options: --privileged
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: linux
path: './packages/kaiteki/build/linux/x64/release/bundle/'
- name: Build Flatpak
uses: flatpak/flatpak-github-actions/[email protected]
with:
bundle: moe.craftplacer.kaiteki.flatpak
manifest-path: ./packaging/linux/moe.craftplacer.kaiteki.yaml
cache-key: flatpak-builder-${{ github.sha }}
build-android:
name: Build for Android
runs-on: ubuntu-latest
needs: test
defaults:
run:
working-directory: ${{ env.SOURCE_PATH }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: 'master'
cache: true
- name: Activate Melos
run: 'flutter pub global activate melos'
- name: Bootstrap packages
run: 'melos bootstrap'
- name: Generate Localizations
run: 'melos run gen_l10n'
- name: Dump signing key
uses: timheuer/[email protected]
with:
fileName: 'keystore.pfx'
fileDir: '${{ env.SOURCE_PATH }}/android/app/'
encodedString: ${{ secrets.ANDROID_KEYSTORE }}
- name: Build
run: 'melos run build:android:free -- ${{needs.test.outputs.build-args}}'
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: android
path: '${{ env.SOURCE_PATH }}/build/app/outputs/flutter-apk/app-*.apk'
build-windows:
name: Build for Windows
runs-on: windows-latest
needs: test
defaults:
run:
working-directory: ${{ env.SOURCE_PATH }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: 'master'
cache: true
- name: Activate Melos
run: 'flutter pub global activate melos'
- name: Bootstrap packages
run: 'melos bootstrap'
- name: Generate Localizations
run: 'melos run gen_l10n'
- name: Build
run: 'melos run build:windows -- ${{needs.test.outputs.build-args}}'
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: windows
path: '${{ env.SOURCE_PATH }}/build/windows/x64/runner/Release/'
build-web:
name: Build for Web
runs-on: ubuntu-latest
needs: test
defaults:
run:
working-directory: ${{ env.SOURCE_PATH }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: 'master'
cache: true
- name: Activate Melos
run: 'flutter pub global activate melos'
- name: Bootstrap packages
run: 'melos bootstrap'
- name: Generate Localizations
run: 'melos run gen_l10n'
- name: Build
run: 'melos run build:web -- ${{needs.test.outputs.build-args}}'
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: web
path: '${{ env.SOURCE_PATH }}/build/web/*'
deploy-web:
name: Deploy for Web
runs-on: ubuntu-latest
needs: build-web
if: github.event_name != 'pull_request'
concurrency:
group: "pages"
cancel-in-progress: true
steps:
- name: Download web artifact
uses: actions/download-artifact@v3
with:
name: web
path: ./web-publish
- name: Setup Pages
uses: actions/configure-pages@v2
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: './web-publish'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
deploy:
name: Deploy
runs-on: ubuntu-latest
permissions: write-all
needs: [ "test", "package-appimage", "package-flatpak", "build-android", "build-windows" ]
steps:
- name: Download all artifacts
uses: actions/download-artifact@v3
- name: Zip multi-file artifacts
run: |
zip -r windows.zip windows
zip -r linux.zip linux
# - name: Create release
# uses: "marvinpinto/action-automatic-releases@latest"
# with:
# repo_token: "${{ secrets.GITHUB_TOKEN }}"
# automatic_release_tag: weekly-${{needs.test.outputs.build-name}}
# title: Weekly ${{needs.test.outputs.build-name}}
# prerelease: true
# files: |
# android/*.apk
# appimage/*.AppImage
# linux.zip
# windows.zip
# moe.craftplacer.kaiteki-*/*.flatpak
#