name: 'Deploy on push' on: [push] jobs: deploy: runs-on: ubuntu-latest steps: - name: Cloning repo uses: actions/checkout@v4 with: fetch-depth: 0 - name: Install uv run: | # Try multiple installation methods for uv if curl -LsSf https://astral.sh/uv/install.sh | sh; then echo "uv installed successfully via install script" elif curl -LsSf https://github.com/astral-sh/uv/releases/latest/download/uv-installer.sh | sh; then echo "uv installed successfully via GitHub installer" else echo "uv installation failed, using pip fallback" pip install uv fi echo "$HOME/.cargo/bin" >> $GITHUB_PATH - name: Prepare Environment run: | uv --version python3 --version - name: Install Dependencies run: | uv sync --frozen uv sync --group dev - name: Install Node.js Dependencies run: | npm ci - name: Build Frontend run: | npm run build - name: Setup Playwright (use pre-installed browsers) env: PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 run: | # Используем предустановленные браузеры в системе npx playwright --version - name: Run Tests env: PLAYWRIGHT_HEADLESS: "true" run: | uv run pytest tests/ -v - name: Get Repo Name id: repo_name run: echo "::set-output name=repo::$(echo ${GITHUB_REPOSITORY##*/})" - name: Get Branch Name id: branch_name run: echo "::set-output name=branch::$(echo ${GITHUB_REF##*/})" - name: Push to dokku for main branch if: github.ref == 'refs/heads/main' uses: dokku/github-action@master with: branch: 'main' git_remote_url: 'ssh://dokku@v2.discours.io:22/discoursio-api' ssh_private_key: ${{ secrets.V2_PRIVATE_KEY }} - name: Push to dokku for dev branch if: github.ref == 'refs/heads/dev' uses: dokku/github-action@master with: branch: 'dev' git_remote_url: 'ssh://dokku@staging.discours.io:22/core' ssh_private_key: ${{ secrets.STAGING_PRIVATE_KEY }}