name: Deploy on: push: branches: [ main, master ] workflow_dispatch: jobs: deploy: runs-on: self-hosted steps: - name: Checkout code uses: https://codeberg.org/actions/checkout@v4 - name: Cache node modules uses: https://codeberg.org/actions/cache@v3 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: Install dependencies run: npm ci - name: Build application run: npm run build env: # Access YouTube API key from repository secrets YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }} - name: Deploy to S3 (if configured) run: | if [ -n "${{ secrets.AWS_ACCESS_KEY_ID }}" ]; then echo "Deploying to S3..." npm run deploy:s3 else echo "AWS credentials not configured, skipping S3 deployment" fi env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: ${{ secrets.AWS_REGION }} - name: Upload build artifacts uses: https://codeberg.org/actions/upload-artifact@v3 with: name: build-output path: out/