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."