name: Build and Deploy Frontend via SSH on: push: tags: - '*' workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install dependencies run: npm install - name: Build project run: npm run build - name: Create Gitea Release uses: actions/gitea-release-action@v1 with: release_name: ${{ gitea.ref_name }} release_notes: | ## Релиз ${{ gitea.ref_name }} ${{ (github.event.head_commit.message != '' && format('📝 {0}', github.event.head_commit.message)) || '' }} ### 📦 Что изменилось ${{ github.event.head_commit.message || 'Автоматический релиз через CI/CD' }} --- ### 🔧 Технические детали - **Тег:** `${{ gitea.ref_name }}` - **Ветка:** `${{ gitea.ref }}` - **Автор:** ${{ gitea.actor }} ### 🚀 Деплой - ✅ Сервер обновлён автоматически --- > Релиз создан автоматически через Gitea Actions draft: false prerelease: false env: GITEA_API_KEY: ${{ secrets.ACCESS_TOKEN }} - name: Install SSH key uses: webfactory/ssh-agent@v0.9.0 with: ssh-private-key: ${{ secrets.DEPLOY_SSH_KEY }} - name: Deploy via SCP run: | tar -czf frontend.tar.gz -C dist . scp -o StrictHostKeyChecking=no frontend.tar.gz ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:/tmp/ ssh -o StrictHostKeyChecking=no ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} << 'EOF' mkdir -p /opt/uvpn.shop/frontend rm -rf /opt/uvpn.shop/frontend/* tar -xzf /tmp/frontend.tar.gz -C /opt/uvpn.shop/frontend rm /tmp/frontend.tar.gz EOF