Merge pull request #215 from Muska-Ami/dev #49
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |