Jaypore CI

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

run.sh (3124B)


      1 #!/bin/bash
      2 # Jaypore CI — Build Docusaurus (or simple static site) and publish to S3.
      3 #
      4 # Environment (provided by Jaypore CI):
      5 #   JCI_COMMIT      — current commit SHA
      6 #   JCI_REPO_ROOT   — repository root path
      7 #   JCI_OUTPUT_DIR  — directory for CI artifacts (cwd at start)
      8 #
      9 # Optional environment:
     10 #   AWS_ACCESS_KEY_ID      — AWS credentials for S3 deploy
     11 #   AWS_SECRET_ACCESS_KEY  — AWS credentials for S3 deploy
     12 #   S3_BUCKET              — target bucket  (e.g. s3://my-docs-bucket)
     13 #   AWS_REGION             — AWS region      (default: us-east-1)
     14 
     15 set -euo pipefail
     16 
     17 PROJECT_DIR="$JCI_REPO_ROOT/14-docusaurus-s3"
     18 BUILD_LOG="$JCI_OUTPUT_DIR/build.log"
     19 
     20 # ── Helpers ──────────────────────────────────────────────────────────
     21 log()  { echo "[jci] $*" | tee -a "$BUILD_LOG"; }
     22 
     23 # Start the build log
     24 echo "=== Build log — $(date -u '+%Y-%m-%dT%H:%M:%SZ') ===" > "$BUILD_LOG"
     25 log "Commit : ${JCI_COMMIT:-unknown}"
     26 log "Project: $PROJECT_DIR"
     27 log ""
     28 
     29 cd "$PROJECT_DIR"
     30 
     31 # ── 1. Build ─────────────────────────────────────────────────────────
     32 if [ -f package.json ] && grep -q '"docusaurus"' package.json 2>/dev/null; then
     33     log "Detected Docusaurus project — running npm build"
     34     npm ci              2>&1 | tee -a "$BUILD_LOG"
     35     npm run build       2>&1 | tee -a "$BUILD_LOG"
     36     SITE_DIR="$PROJECT_DIR/build"
     37 else
     38     log "No Docusaurus project found — using simple build.sh fallback"
     39     bash build.sh       2>&1 | tee -a "$BUILD_LOG"
     40     SITE_DIR="$PROJECT_DIR/build"
     41 fi
     42 
     43 # ── 2. Copy build output to CI artifacts ─────────────────────────────
     44 log ""
     45 log "Copying build output to \$JCI_OUTPUT_DIR/build/"
     46 mkdir -p "$JCI_OUTPUT_DIR/build"
     47 cp -r "$SITE_DIR"/* "$JCI_OUTPUT_DIR/build/"
     48 log "Artifact files:"
     49 ls -lR "$JCI_OUTPUT_DIR/build/" 2>&1 | tee -a "$BUILD_LOG"
     50 
     51 # ── 3. Deploy to S3 (optional) ───────────────────────────────────────
     52 log ""
     53 if [ -n "${AWS_ACCESS_KEY_ID:-}" ] && [ -n "${S3_BUCKET:-}" ]; then
     54     AWS_REGION="${AWS_REGION:-us-east-1}"
     55     log "Deploying to $S3_BUCKET (region: $AWS_REGION)"
     56     aws s3 sync "$JCI_OUTPUT_DIR/build/" "$S3_BUCKET" \
     57         --region "$AWS_REGION" \
     58         --delete \
     59         2>&1 | tee -a "$BUILD_LOG"
     60     log "S3 deploy complete."
     61 else
     62     log "Skipping S3 deploy: AWS credentials or S3_BUCKET not set"
     63 fi
     64 
     65 # ── 4. Summary ───────────────────────────────────────────────────────
     66 log ""
     67 log "========================================"
     68 log "  Build & deploy finished successfully"
     69 log "  Pages : $(find "$JCI_OUTPUT_DIR/build" -name '*.html' | wc -l)"
     70 log "  Log   : \$JCI_OUTPUT_DIR/build.log"
     71 log "========================================"