Skip to content

Merge pull request #215 from Muska-Ami/dev #49

Merge pull request #215 from Muska-Ami/dev

Merge pull request #215 from Muska-Ami/dev #49

Workflow file for this run

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Publish
on:
push:
branches:
- main
jobs:
windows:
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Flutter
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.24.5
cache-sdk: true
- name: Install Dependencies
shell: pwsh
# run: dart pub global activate -s path tools/flutter_distributor/packages/flutter_distributor
run: dart pub global activate flutter_distributor
- name: Setup Inno Setup 6
shell: pwsh
run: |-
./tools/is_setup.exe /VERYSLIENT
Copy-Item "./tools/ChineseSimplified.isl" -Destination "C:\Program Files (x86)\Inno Setup 6\Languages"
- name: Setup 7ZIP
shell: pwsh
run: |-
./tools/7z2405-x64.exe /S
- name: Pack EXE Installer & Portable Archive
run: |-
cd nyalcf_gui
flutter_distributor package --platform windows --target exe,zip
cd ..
- name: Compile CLI
shell: pwsh
run: |-
cd nyalcf_cli
dart pub get
mkdir dist
dart compile exe bin/nyalcf_cli.dart -o dist/nyalcf_cli-windows-x64.exe
cd ..
- name: Move Build Files
shell: pwsh
run: |-
mkdir dist
mv nyalcf_gui/dist/* dist
mv nyalcf_cli/dist/* dist
- name: Upload Dist Artifact
uses: actions/upload-artifact@v4
with:
name: Windows Artifact(Dist)
path: dist
linux:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Flutter
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.24.5
cache-sdk: true
- name: Install Dependencies
run: |-
sudo apt-get update
sudo apt-get install clang cmake git ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev rpm libayatana-appindicator3-dev patchelf locate libfuse2
dart pub global activate -s path tools/flutter_distributor/packages/flutter_distributor
- name: Setup AppImageTool
run: |-
sudo mv tools/appimagetool-x86_64.AppImage /usr/local/bin/appimagetool
sudo chmod a+x /usr/local/bin/appimagetool
- name: Pack Installers
run: |-
cd nyalcf_gui
flutter_distributor package --platform linux --targets appimage,deb,rpm
cd ..
- name: Compile CLI
run: |-
cd nyalcf_cli
dart pub get
mkdir -p dist
dart compile exe bin/nyalcf_cli.dart -o dist/nyalcf_cli-linux-x64
cd ..
- name: Move Build Files
run: |-
mkdir -p dist
mv nyalcf_gui/dist/* dist
mv nyalcf_cli/dist/* dist
- name: Upload Dist Artifact
uses: actions/upload-artifact@v4
with:
name: Linux Artifact(Dist)
path: dist
macos:
strategy:
matrix:
os:
- macos-latest
- macos-13
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Flutter
uses: flutter-actions/setup-flutter@v3
with:
channel: 'stable'
version: 3.24.5
cache-sdk: true
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 21
- name: Install Dependencies
run: |-
npm install -g appdmg
dart pub global activate -s path tools/flutter_distributor/packages/flutter_distributor
- name: Pack DMG Installer
if: ${{ matrix.os == 'macos-latest' }}
run: |-
cd nyalcf_gui
flutter_distributor package --platform macos --target dmg
cd ..
- name: Compile CLI
run: |-
cd nyalcf_cli
dart pub get
mkdir -p dist
dart compile exe bin/nyalcf_cli.dart -o dist/nyalcf_cli-macos-${{ matrix.os == 'macos-latest' && 'arm64' || matrix.os == 'macos-13' && 'x64' || matrix.os }}
cd ..
- name: Move CLI Build Files
run: |-
mkdir -p dist
mv nyalcf_cli/dist/* dist
- name: Move GUI Build Files
if: ${{ matrix.os == 'macos-latest' }}
run: |-
mkdir -p dist
mv nyalcf_gui/dist/* dist
- name: Upload Dist Artifact
uses: actions/upload-artifact@v4
with:
name: MacOS Artifact(Dist ${{ matrix.os == 'macos-latest' && 'arm64' || matrix.os == 'macos-13' && 'x64' || matrix.os }})
path: dist
publish_releases:
name: publish
runs-on: ubuntu-latest
needs:
- windows
- linux
- macos
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Fetch Version
run: |-
sudo snap install yq
cd nyalcf_gui
nyalcf_version=$(yq eval '.version' pubspec.yaml)
echo "NYA_VERSION=$nyalcf_version" >> $GITHUB_ENV
cd ..
- name: Download Build Artifact(Windows)
uses: actions/download-artifact@v4
with:
name: "Windows Artifact(Dist)"
path: dist/
- name: Download Build Artifact(Linux)
uses: actions/download-artifact@v4
with:
name: "Linux Artifact(Dist)"
path: dist/
- name: Download Build Artifact(MacOS arm64)
uses: actions/download-artifact@v4
with:
name: "MacOS Artifact(Dist arm64)"
path: dist/
- name: Download Build Artifact(MacOS x64)
uses: actions/download-artifact@v4
with:
name: "MacOS Artifact(Dist x64)"
path: dist/
- name: Release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ env.NYA_VERSION }}
body_path: RELEASE_CHANGELOG.md
prerelease: false
draft: false
generate_release_notes: true
token: ${{ secrets.RELEASE_GITHUB_TOKEN }}
files: |
./dist/${{ env.NYA_VERSION }}/nyalcf-${{ env.NYA_VERSION }}-windows-setup.exe
./dist/${{ env.NYA_VERSION }}/nyalcf-${{ env.NYA_VERSION }}-windows.zip
./dist/${{ env.NYA_VERSION }}/nyalcf-${{ env.NYA_VERSION }}-linux.deb
./dist/${{ env.NYA_VERSION }}/nyalcf-${{ env.NYA_VERSION }}-linux.rpm
./dist/${{ env.NYA_VERSION }}/nyalcf-${{ env.NYA_VERSION }}-linux.AppImage
./dist/${{ env.NYA_VERSION }}/nyalcf-${{ env.NYA_VERSION }}-macos.dmg
./dist/nyalcf_cli-windows-x64.exe
./dist/nyalcf_cli-linux-x64
./dist/nyalcf_cli-macos-arm64
./dist/nyalcf_cli-macos-x64
publish_apt_sources:
name: apt sources publish
runs-on: ubuntu-latest
needs:
- windows
- linux
- macos
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Fetch Version
run: |-
sudo snap install yq
cd nyalcf_gui
nyalcf_version=$(yq eval '.version' pubspec.yaml)
echo "NYA_VERSION=$nyalcf_version" >> $GITHUB_ENV
cd ..
- name: Download Build Artifact(Linux)
uses: actions/download-artifact@v4
with:
name: "Linux Artifact(Dist)"
path: dist/
- name: Upload DEB Package
uses: wlixcc/[email protected]
with:
username: root
server: ${{ secrets.APT_PUBLISH_SERVER_IP }}
password: ${{ secrets.APT_PUBLISH_SSH_PASSWORD }}
local_path: './dist/${{ env.NYA_VERSION }}/nyalcf-${{ env.NYA_VERSION }}-linux.deb'
remote_path: '/root/aptly/'
- name: Run Remote Shell
uses: appleboy/[email protected]
with:
host: ${{ secrets.APT_PUBLISH_SERVER_IP }}
username: root
password: ${{ secrets.APT_PUBLISH_SSH_PASSWORD }}
port: 22
script: bash /root/aptly/publish.sh