2025-11-19 18:31:23 +00:00
|
|
|
name: Deploy Mnemo Cards
|
|
|
|
|
|
|
|
|
|
on:
|
|
|
|
|
workflow_dispatch:
|
|
|
|
|
push:
|
|
|
|
|
branches:
|
|
|
|
|
- master
|
|
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
|
deploy-backend:
|
|
|
|
|
name: Deploy Backend
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
steps:
|
|
|
|
|
- name: Checkout code
|
|
|
|
|
uses: actions/checkout@v3
|
|
|
|
|
|
2025-11-19 18:38:19 +00:00
|
|
|
- name: Install Dependencies
|
|
|
|
|
run: |
|
|
|
|
|
apt-get update && apt-get install -y rsync openssh-client
|
|
|
|
|
|
2025-11-19 18:31:23 +00:00
|
|
|
- name: Setup SSH
|
|
|
|
|
run: |
|
|
|
|
|
mkdir -p ~/.ssh
|
|
|
|
|
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_rsa
|
|
|
|
|
chmod 600 ~/.ssh/id_rsa
|
|
|
|
|
ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
|
|
|
|
|
|
|
|
|
|
- name: Sync Source Code
|
|
|
|
|
run: |
|
|
|
|
|
# Sync common packages
|
|
|
|
|
rsync -avz --delete --exclude '.*' --exclude 'build' --exclude 'doc' \
|
|
|
|
|
mnemo_cards_common \
|
|
|
|
|
mnemo_cards_common_backend \
|
|
|
|
|
${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:~/
|
|
|
|
|
|
|
|
|
|
# Sync backend project
|
2025-11-19 18:53:00 +00:00
|
|
|
rsync -avz --delete --exclude '.*' --exclude 'build' --exclude 'server.exe' --exclude 'isar' \
|
2025-11-19 18:31:23 +00:00
|
|
|
mnemo_cards_backend \
|
|
|
|
|
${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:~/
|
|
|
|
|
|
|
|
|
|
# Sync build script
|
|
|
|
|
rsync -avz tools/deploy/backend/server_build.sh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:~/mnemo_cards_backend/
|
|
|
|
|
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "chmod +x ~/mnemo_cards_backend/server_build.sh"
|
|
|
|
|
|
|
|
|
|
- name: Trigger Remote Build
|
|
|
|
|
run: |
|
|
|
|
|
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "~/mnemo_cards_backend/server_build.sh"
|
|
|
|
|
|
|
|
|
|
deploy-web:
|
|
|
|
|
name: Deploy Web App
|
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
needs: deploy-backend
|
2025-11-19 22:11:36 +00:00
|
|
|
if: always()
|
2025-11-19 18:31:23 +00:00
|
|
|
steps:
|
|
|
|
|
- name: Checkout code
|
|
|
|
|
uses: actions/checkout@v3
|
2025-11-19 18:53:00 +00:00
|
|
|
with:
|
2025-11-19 22:11:36 +00:00
|
|
|
fetch-depth: 0
|
2025-11-19 18:53:00 +00:00
|
|
|
lfs: false
|
|
|
|
|
|
|
|
|
|
- name: Configure Git
|
|
|
|
|
run: |
|
|
|
|
|
git config --global http.postBuffer 524288000
|
|
|
|
|
git config --global http.maxRequestBuffer 100M
|
|
|
|
|
git config --global core.compression 0
|
2025-11-19 18:31:23 +00:00
|
|
|
|
2025-11-19 18:38:19 +00:00
|
|
|
- name: Install Dependencies
|
|
|
|
|
run: |
|
2025-11-19 22:11:36 +00:00
|
|
|
apt-get update && apt-get install -y rsync openssh-client jq git
|
2025-11-19 18:38:19 +00:00
|
|
|
|
2025-11-19 22:28:21 +00:00
|
|
|
- name: Install Flutter 3.35.5
|
2025-11-19 21:43:53 +00:00
|
|
|
run: |
|
2025-11-19 22:02:32 +00:00
|
|
|
if [ ! -d /opt/flutter/bin ]; then
|
2025-11-19 22:28:21 +00:00
|
|
|
echo "Flutter not found, cloning..."
|
|
|
|
|
git clone --branch 3.35.5 --depth 1 https://github.com/flutter/flutter.git /opt/flutter
|
2025-11-19 22:02:32 +00:00
|
|
|
else
|
2025-11-19 22:28:21 +00:00
|
|
|
echo "Flutter already present in /opt/flutter"
|
2025-11-19 21:48:07 +00:00
|
|
|
fi
|
|
|
|
|
|
2025-11-19 22:28:21 +00:00
|
|
|
echo "FLUTTER_ROOT=/opt/flutter" >> "$GITHUB_ENV"
|
|
|
|
|
echo "/opt/flutter/bin" >> "$GITHUB_PATH"
|
|
|
|
|
/opt/flutter/bin/flutter --version
|
|
|
|
|
|
2025-11-19 18:31:23 +00:00
|
|
|
- name: Setup SSH
|
|
|
|
|
run: |
|
|
|
|
|
mkdir -p ~/.ssh
|
|
|
|
|
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_rsa
|
|
|
|
|
chmod 600 ~/.ssh/id_rsa
|
|
|
|
|
ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
|
|
|
|
|
|
|
|
|
|
- name: Build Web App
|
2025-11-19 22:11:36 +00:00
|
|
|
working-directory: mnemo_cards_web_v2
|
2025-11-19 18:31:23 +00:00
|
|
|
run: |
|
|
|
|
|
flutter pub get
|
2025-11-19 22:11:36 +00:00
|
|
|
flutter build web --release \
|
2025-11-20 18:41:09 +00:00
|
|
|
--dart-define=API_BASE_URL=https://api.mnemo-cards.online \
|
2025-11-19 22:11:36 +00:00
|
|
|
--dart2js-optimization=O4
|
2025-11-19 18:31:23 +00:00
|
|
|
|
|
|
|
|
- name: Deploy Web App
|
|
|
|
|
run: |
|
2025-11-19 22:11:36 +00:00
|
|
|
rsync -avz --delete mnemo_cards_web_v2/build/web/ \
|
|
|
|
|
${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/var/www/mnemo_cards/
|
2025-11-19 18:31:23 +00:00
|
|
|
|
|
|
|
|
- name: Fix Permissions
|
|
|
|
|
run: |
|
2025-11-19 22:11:36 +00:00
|
|
|
ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} \
|
|
|
|
|
"chown -R www-data:www-data /var/www/mnemo_cards && chmod -R 755 /var/www/mnemo_cards"
|