name: '๐Ÿ“ฆ Kits ยท ๐Ÿ‘๏ธ Preview (Dev)' # Builds and deploys Hardware Kits site (with PDF) to dev preview on: workflow_dispatch: push: branches: [dev] paths: - 'kits/**' permissions: contents: read actions: read concurrency: group: kits-dev-deploy cancel-in-progress: true jobs: # Build PDF first build-pdf: name: '๐Ÿ“š Build PDF' uses: ./.github/workflows/kits-build-pdfs.yml with: ref: ${{ github.ref }} build-and-deploy: name: '๐Ÿ“ฆ Build & Deploy Kits (Dev)' runs-on: ubuntu-latest needs: [build-pdf] steps: - name: ๐Ÿ“ฅ Checkout uses: actions/checkout@v6 - name: ๐Ÿ”ง Setup Quarto uses: quarto-dev/quarto-actions/setup@v2 - name: ๐Ÿ”จ Build Kits Site working-directory: kits run: | quarto render touch _build/.nojekyll - name: ๐Ÿ“ฅ Download PDF Artifact uses: actions/download-artifact@v7 continue-on-error: true with: name: Kits-PDF path: ./pdf-artifacts/ - name: ๐Ÿ“ Inject PDF into site run: | echo "๐Ÿ“ Injecting PDF into built site..." mkdir -p kits/_build/assets/downloads if [ -f ./pdf-artifacts/Hardware-Kits.pdf ]; then cp ./pdf-artifacts/Hardware-Kits.pdf kits/_build/assets/downloads/ echo "โœ… Injected Hardware-Kits.pdf" else echo "โš ๏ธ PDF not found" fi echo "" echo "๐Ÿ“ฆ Downloads folder contents:" ls -la kits/_build/assets/downloads/ || echo "No downloads folder" - name: ๐Ÿ”ง Modify announcement for dev preview run: | echo "๐Ÿ”ง Modifying announcement banner for development preview..." COMMIT_SHORT="${{ github.sha }}" COMMIT_SHORT="${COMMIT_SHORT:0:8}" python3 book/tools/scripts/publish/modify_dev_announcement.py \ kits/_build \ --verbose \ --commit-hash "${{ github.sha }}" \ --commit-short "$COMMIT_SHORT" - name: ๐Ÿš€ Deploy to Dev Site via SSH env: SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }} run: | echo "๐Ÿ” Starting ssh-agent..." eval "$(ssh-agent -s)" echo "$SSH_DEPLOY_KEY" | tr -d '\r' | ssh-add - > /dev/null # Add github.com to known hosts mkdir -p ~/.ssh ssh-keyscan github.com >> ~/.ssh/known_hosts echo "๐Ÿ”ง Configuring git..." git config --global user.email "actions@github.com" git config --global user.name "GitHub Actions" echo "๐Ÿ”„ Cloning dev preview repository (${{ vars.DEV_REPO }})..." git clone --depth=1 ${{ vars.DEV_REPO_URL }} target-repo cd target-repo echo "๐Ÿงน Cleaning ${{ vars.DEV_KITS_PATH }} directory..." rm -rf ${{ vars.DEV_KITS_PATH }} mkdir -p ${{ vars.DEV_KITS_PATH }} echo "๐Ÿšš Copying Kits site content..." cp -r "${{ github.workspace }}/kits/_build/." ${{ vars.DEV_KITS_PATH }}/ echo "๐Ÿ” Validating deployment content..." if [ ! -f "${{ vars.DEV_KITS_PATH }}/index.html" ]; then echo "โŒ CRITICAL: ${{ vars.DEV_KITS_PATH }}/index.html is missing. Aborting deployment." exit 1 fi echo "๐Ÿ“ฆ Contents of ${{ vars.DEV_KITS_PATH }}/:" ls -la ${{ vars.DEV_KITS_PATH }}/ | head -10 echo "๐Ÿ“ฆ Committing and pushing changes..." git add . git commit -m "๐Ÿ“ฆ Deploy Kits dev to /${{ vars.DEV_KITS_PATH }}/ from ${{ github.sha }}" --allow-empty || echo "๐ŸŸก Nothing to commit" git push origin main echo "โœ… Kits deployed to: https://harvard-edge.github.io/${{ vars.DEV_REPO }}/${{ vars.DEV_KITS_PATH }}/"