name: Build on: push: branches: [ "master" ] pull_request: branches: [ "master" ] jobs: build: name: 🔨 Build runs-on: ubuntu-latest steps: - name: 🚚 Checkout uses: actions/checkout@v3 - name: 🐍 Use Python 3.x uses: actions/setup-python@v3.1.4 with: python-version: 3.x cache: pip - name: ⏬ Install Python dependencies run: python -m venv venv - run: ./venv/bin/pip install -r requirements.txt - name: 🐉 Use Node.js 18.16.x uses: actions/setup-node@v3 with: node-version: 18.16.x cache: 'npm' - name: ⏬ Install Node dependencies run: npm ci - name: 🔥 Optimize icon font run: npm run minify-icons - name: 🔨 Build site run: npm run build - name: 📦 Upload build artifacts uses: actions/upload-artifact@v3.1.2 with: name: build path: build deploy: name: 🚀 Deploy if: github.event_name == 'push' && github.ref == 'refs/heads/master' runs-on: ubuntu-latest needs: build environment: name: Website url: https://dotio.theaninova.de steps: - name: 📦 Download build artifacts uses: actions/download-artifact@v2.1.1 with: name: build path: build - name: 🚀 Deploy uses: SamKirkland/web-deploy@v1 with: target-server: ${{ secrets.SSH_SERVER }} destination-path: ~/public_html/ source-path: ./build/ remote-user: ${{ secrets.SSH_USER }} private-ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} ssh-port: ${{ secrets.SSH_PORT }}