Jaypore CI

> Jaypore CI: Minimal, Offline, Local CI system.
Log | Files | Refs | README | LICENSE

run.sh (2818B)


      1 #!/bin/bash
      2 # ------------------------------------------------------------------
      3 # Jaypore CI — Build Jekyll site and publish to Netlify
      4 # ------------------------------------------------------------------
      5 set -euo pipefail
      6 
      7 LOG="${JCI_OUTPUT_DIR}/build.log"
      8 exec > >(tee -a "$LOG") 2>&1
      9 
     10 echo "=== Jekyll + Netlify CI ==="
     11 echo "Commit  : ${JCI_COMMIT:-unknown}"
     12 echo "Repo    : ${JCI_REPO_ROOT}"
     13 echo "Output  : ${JCI_OUTPUT_DIR}"
     14 echo
     15 
     16 # ── 1. Navigate to site source ────────────────────────────────────
     17 SITE_DIR="${JCI_REPO_ROOT}/13-jekyll-netlify/site"
     18 cd "$SITE_DIR"
     19 echo "Working directory: $(pwd)"
     20 
     21 # ── 2. Ensure Jekyll is available ─────────────────────────────────
     22 if ! command -v jekyll &>/dev/null; then
     23   echo "Jekyll not found — installing…"
     24   sudo gem install jekyll bundler --no-document 2>&1 || true
     25 else
     26   echo "Jekyll found: $(jekyll --version)"
     27 fi
     28 
     29 # ── 3. Build ──────────────────────────────────────────────────────
     30 DEST="${JCI_OUTPUT_DIR}/_site"
     31 echo
     32 echo "Building site → $DEST"
     33 jekyll build --destination "$DEST"
     34 
     35 if [ ! -d "$DEST" ]; then
     36   echo "ERROR: Build failed — $DEST does not exist."
     37   exit 1
     38 fi
     39 
     40 echo
     41 echo "Build succeeded. Output files:"
     42 find "$DEST" -type f | sort
     43 echo
     44 
     45 # ── 4. Deploy to Netlify (optional) ──────────────────────────────
     46 if [ -n "${NETLIFY_AUTH_TOKEN:-}" ] && [ -n "${NETLIFY_SITE_ID:-}" ]; then
     47   echo "Deploying to Netlify (site ${NETLIFY_SITE_ID})…"
     48 
     49   ZIP_FILE="${JCI_OUTPUT_DIR}/_site.zip"
     50   (cd "$DEST" && zip -r "$ZIP_FILE" .)
     51 
     52   HTTP_CODE=$(curl -s -o "${JCI_OUTPUT_DIR}/netlify_response.json" \
     53     -w "%{http_code}" \
     54     -H "Content-Type: application/zip" \
     55     -H "Authorization: Bearer ${NETLIFY_AUTH_TOKEN}" \
     56     --data-binary @"$ZIP_FILE" \
     57     "https://api.netlify.com/api/v1/sites/${NETLIFY_SITE_ID}/deploys")
     58 
     59   if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ]; then
     60     echo "Netlify deploy succeeded (HTTP ${HTTP_CODE})."
     61   else
     62     echo "WARNING: Netlify deploy returned HTTP ${HTTP_CODE}."
     63     cat "${JCI_OUTPUT_DIR}/netlify_response.json"
     64     exit 1
     65   fi
     66 else
     67   echo "Skipping Netlify deploy: NETLIFY_AUTH_TOKEN or NETLIFY_SITE_ID not set"
     68 fi
     69 
     70 # ── 5. Summary ───────────────────────────────────────────────────
     71 echo
     72 echo "=== Summary ==="
     73 echo "Site source : $SITE_DIR"
     74 echo "Build output: $DEST"
     75 echo "Build log   : $LOG"
     76 echo "Files built : $(find "$DEST" -type f | wc -l)"
     77 echo "Done."