| … | … | @@ -7,13 +7,14 @@ |
| 7 | 7 | # |
| 8 | 8 | # Workflow: |
| 9 | 9 | # 1. Pre-flight checks (node_modules, critical files) |
| 10 | | # 2. Run tests (abort if failing) |
| 11 | | # 3. Git commit + push |
| 12 | | # 4. Pear stage |
| 13 | | # 5. Pear release |
| 14 | | # 6. Restart seeder in tmux (NOT background) |
| 15 | | # 7. Verify seeder started |
| 16 | | # 8. Update deployment history |
| 10 | # 2. Git commit + push |
| 11 | # 3. Pear stage |
| 12 | # 4. Pear release |
| 13 | # 5. Restart seeder in tmux (NOT background) |
| 14 | # 6. Verify seeder started |
| 15 | # 7. Update deployment history |
| 16 | # |
| 17 | # Note: Run tests separately before deployment: bare test/all.cjs |
| 17 | 18 | |
| 18 | 19 | set -e # Exit on error |
| 19 | 20 | |
| … | … | @@ -45,7 +46,6 @@ NC='\033[0m' |
| 45 | 46 | |
| 46 | 47 | MODE="" |
| 47 | 48 | COMMIT_MSG="" |
| 48 | | SKIP_TESTS=false |
| 49 | 49 | |
| 50 | 50 | show_usage() { |
| 51 | 51 | echo "Usage:" |
| … | … | @@ -55,12 +55,13 @@ show_usage() { |
| 55 | 55 | echo "Options:" |
| 56 | 56 | echo " --testing, -t Deploy to testing channel (branch: $TESTING_BRANCH)" |
| 57 | 57 | echo " --production, -p Deploy to production channel (branch: $PRODUCTION_BRANCH)" |
| 58 | | echo " --skip-tests Skip running tests (not recommended)" |
| 59 | 58 | echo "" |
| 60 | 59 | echo "Channels:" |
| 61 | 60 | echo " Testing: $TESTING_CHANNEL" |
| 62 | 61 | echo " Production: $PRODUCTION_CHANNEL" |
| 63 | 62 | echo "" |
| 63 | echo "Note: Run tests separately before deployment with: bare test/all.cjs" |
| 64 | echo "" |
| 64 | 65 | exit 1 |
| 65 | 66 | } |
| 66 | 67 | |
| … | … | @@ -75,10 +76,6 @@ while [[ $# -gt 0 ]]; do |
| 75 | 76 | MODE="production" |
| 76 | 77 | shift |
| 77 | 78 | ;; |
| 78 | | --skip-tests) |
| 79 | | SKIP_TESTS=true |
| 80 | | shift |
| 81 | | ;; |
| 82 | 79 | -*) |
| 83 | 80 | echo -e "${RED}Unknown option: $1${NC}" |
| 84 | 81 | show_usage |
| … | … | @@ -162,31 +159,11 @@ done |
| 162 | 159 | echo -e " ${GREEN}✓ All critical files present${NC}" |
| 163 | 160 | |
| 164 | 161 | # ============================================================================ |
| 165 | | # STEP 2: RUN TESTS |
| 166 | | # ============================================================================ |
| 167 | | |
| 168 | | echo "" |
| 169 | | if [ "$SKIP_TESTS" = true ]; then |
| 170 | | echo -e "${YELLOW}Step 2: Tests SKIPPED (--skip-tests)${NC}" |
| 171 | | else |
| 172 | | echo -e "${YELLOW}Step 2: Running Tests${NC}" |
| 173 | | echo " Running: bare test/all.cjs" |
| 174 | | |
| 175 | | # Run tests directly (output streams to terminal) |
| 176 | | if bare test/all.cjs; then |
| 177 | | echo -e " ${GREEN}✓ All tests passed${NC}" |
| 178 | | else |
| 179 | | echo -e "${RED} ✗ Tests FAILED!${NC}" |
| 180 | | exit 1 |
| 181 | | fi |
| 182 | | fi |
| 183 | | |
| 184 | | # ============================================================================ |
| 185 | | # STEP 3: GIT COMMIT + PUSH |
| 162 | # STEP 2: GIT COMMIT + PUSH |
| 186 | 163 | # ============================================================================ |
| 187 | 164 | |
| 188 | 165 | echo "" |
| 189 | | echo -e "${YELLOW}Step 3: Git Commit + Push${NC}" |
| 166 | echo -e "${YELLOW}Step 2: Git Commit + Push${NC}" |
| 190 | 167 | |
| 191 | 168 | if [ -n "$(git status --porcelain)" ]; then |
| 192 | 169 | echo " Changes to commit:" |
| … | … | @@ -222,7 +199,7 @@ fi |
| 222 | 199 | # ============================================================================ |
| 223 | 200 | |
| 224 | 201 | echo "" |
| 225 | | echo -e "${YELLOW}Step 4: Pear Stage${NC}" |
| 202 | echo -e "${YELLOW}Step 3: Pear Stage${NC}" |
| 226 | 203 | |
| 227 | 204 | echo " Running: pear stage $CHANNEL ." |
| 228 | 205 | STAGE_OUTPUT=$(pear stage "$CHANNEL" . 2>&1) |
| … | … | @@ -237,7 +214,7 @@ echo -e " ${GREEN}✓ Staged version: $LATEST${NC}" |
| 237 | 214 | # ============================================================================ |
| 238 | 215 | |
| 239 | 216 | echo "" |
| 240 | | echo -e "${YELLOW}Step 5: Pear Release${NC}" |
| 217 | echo -e "${YELLOW}Step 4: Pear Release${NC}" |
| 241 | 218 | |
| 242 | 219 | echo " Running: pear release $CHANNEL" |
| 243 | 220 | pear release "$CHANNEL" 2>&1 | sed 's/^/ /' |
| … | … | @@ -248,7 +225,7 @@ echo -e " ${GREEN}✓ Released as default${NC}" |
| 248 | 225 | # ============================================================================ |
| 249 | 226 | |
| 250 | 227 | echo "" |
| 251 | | echo -e "${YELLOW}Step 6: Restart Seeder in Tmux${NC}" |
| 228 | echo -e "${YELLOW}Step 5: Restart Seeder in Tmux${NC}" |
| 252 | 229 | |
| 253 | 230 | # Check tmux session exists |
| 254 | 231 | if ! tmux has-session -t "$TMUX_SESSION" 2>/dev/null; then |
| … | … | @@ -281,7 +258,7 @@ echo -e " ${GREEN}✓ Seeder command sent to $TMUX_SESSION:$TMUX_WINDOW${NC}" |
| 281 | 258 | # ============================================================================ |
| 282 | 259 | |
| 283 | 260 | echo "" |
| 284 | | echo -e "${YELLOW}Step 7: Verify Seeder${NC}" |
| 261 | echo -e "${YELLOW}Step 6: Verify Seeder${NC}" |
| 285 | 262 | |
| 286 | 263 | sleep 3 |
| 287 | 264 | PANE_CONTENT=$(tmux capture-pane -t "$TMUX_SESSION:$TMUX_WINDOW" -p 2>/dev/null | tail -10) |
| … | … | @@ -301,7 +278,7 @@ PEAR_KEY=$(pear info "$CHANNEL" --json 2>/dev/null | grep -oP '"key":"pear://\K[ |
| 301 | 278 | # ============================================================================ |
| 302 | 279 | |
| 303 | 280 | echo "" |
| 304 | | echo -e "${YELLOW}Step 8: Update Deployment History${NC}" |
| 281 | echo -e "${YELLOW}Step 7: Update Deployment History${NC}" |
| 305 | 282 | |
| 306 | 283 | HISTORY_FILE="$PROJECT_DIR/.claude/deployment-history.json" |
| 307 | 284 | mkdir -p "$(dirname "$HISTORY_FILE")" |