mnemo_cards/tools/ci/cd-deploy.yml
2025-11-16 16:54:50 +03:00

100 lines
2.4 KiB
YAML

name: Deploy Applications
on:
push:
branches: [ main, master ]
workflow_run:
workflows: ["Backend CI", "Web App CI"]
types:
- completed
jobs:
deploy-backend:
if: github.event.workflow_run.conclusion == 'success' || github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download backend artifact
if: github.event_name == 'workflow_run'
uses: actions/download-artifact@v4
with:
name: backend-binary
path: mnemo_cards_backend/
- name: Setup SSH
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.DEPLOY_SSH_PRIVATE_KEY }}
- name: Add server to known hosts
run: |
mkdir -p ~/.ssh
ssh-keyscan -H 147.45.152.129 >> ~/.ssh/known_hosts
- name: Deploy backend
run: |
chmod +x mnemo_cards_backend/build_app.sh
./mnemo_cards_backend/build_app.sh
deploy-web:
if: github.event.workflow_run.conclusion == 'success' || github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download web artifact
if: github.event_name == 'workflow_run'
uses: actions/download-artifact@v4
with:
name: web-build
path: mnemo_cards_web_v2/build/web/
- name: Setup SSH
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.DEPLOY_SSH_PRIVATE_KEY }}
- name: Add server to known hosts
run: |
mkdir -p ~/.ssh
ssh-keyscan -H 147.45.152.129 >> ~/.ssh/known_hosts
- name: Deploy web app
run: |
cd mnemo_cards_web_v2
chmod +x deploy/deploy.sh
./deploy/deploy.sh
deploy-mobile:
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download Android APK
uses: actions/download-artifact@v4
with:
name: android-apk
path: ./artifacts/
- name: Download iOS build
uses: actions/download-artifact@v4
with:
name: ios-build
path: ./artifacts/ios/
- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
files: |
./artifacts/app-release.apk
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}