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