Skip to content

refactor: files related to AWS deployment - #374

Open
cherriechang wants to merge 158 commits into
mainfrom
refactor/aws-deployment
Open

refactor: files related to AWS deployment#374
cherriechang wants to merge 158 commits into
mainfrom
refactor/aws-deployment

Conversation

@cherriechang

@cherriechang cherriechang commented Nov 24, 2025

Copy link
Copy Markdown
Contributor

This should be more easily merged into main after fixAWS branch is merged.

Add two foundational utilities for AWS deployment refactoring:

AWS Client Factory (Phase 1.1):
- Centralized factory for creating AWS SDK v3 clients
- Handles both string and object profile formats (backward compatible)
- Single configuration point for all AWS clients
- Easy to mock for testing
- Supports 14 AWS service clients (RDS, S3, ECS, etc.)

Retry Utility (Phase 1.2):
- Generic retry logic with exponential backoff
- Three strategies: exponential backoff, constant delay, immediate
- Configurable maxRetries, delays, and shouldRetry logic
- Handles common AWS throttling errors automatically
- Can replace hardcoded retry patterns throughout codebase

Testing:
- Full unit test coverage for both utilities
- Verified with real AWS credentials
- Successfully compiled with Babel

Impact:
- Updated checkIAMUser() to use new factory (proof of concept)
- Lays groundwork for extracting service modules
- Zero breaking changes to existing functionality

Related: Part of 7-week AWS refactoring plan to improve maintainability,
testability, and reduce 5000+ line monolithic file to modular architecture.
@cherriechang cherriechang self-assigned this Nov 24, 2025
@cherriechang cherriechang added enhancement New feature or request pushkin-cli Relates to the CLI labels Nov 24, 2025
@changeset-bot

changeset-bot Bot commented Nov 24, 2025

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 005c405

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@cherriechang cherriechang changed the title Refactor files related to AWS deployment refactor: files related to AWS deployment Nov 24, 2025
cherriechang and others added 14 commits March 16, 2026 09:23
This commit adds comprehensive Auth0 authentication support to the basic site template, enabling OAuth2/OIDC authentication for Pushkin users. The implementation is backward-compatible and only activates when useAuth is enabled in pushkin.yaml.

Key Changes:
- Added Auth0 authentication components (Login, Logout, Profile)
- Added AuthSync component to synchronize Auth0 state with Redux
- Enhanced Redux infrastructure to handle both Auth0 and session-based auth
- Updated Header component with conditional auth buttons and 'My account' link
- Added conditional Auth0Provider wrapper in index.js
- Created config.js to expose authDomain and authClientID from pushkin.yaml
- Added @auth0/auth0-react dependency to package.json
- Added /profile route to App.js

Features:
- Dual authentication modes: Auth0 (when configured) and session-based (fallback)
- Conditional rendering based on useAuth config setting
- Seamless integration with existing Redux state management
- User profile management via Auth0 dashboard
- Automatic token refresh and localStorage caching

Configuration:
Sites can enable Auth0 by setting in pushkin.yaml:
  addons:
    useAuth: true
    authDomain: your-domain.auth0.com
    authClientID: your-client-id

All changes are backward-compatible. Sites without Auth0 configuration will continue using session-based authentication.
- Header's useEffect now skips dispatching getUser() when Auth0 is enabled
- Auth0 users are managed by AuthSync component via SET_AUTH0_USER action
- This prevents session-based user IDs from replacing Auth0 user IDs in Redux

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add heartbeat: 30 configuration to amqp.connect() in pushkin-worker
- Upgrade RabbitMQ from 3.6 to 3.12 in docker-compose template
- Add RABBITMQ_HEARTBEAT environment variable

This fixes the "Heartbeat timeout" error that was preventing experiment
workers from completing database operations. The 30-second heartbeat
interval ensures the connection stays alive during long-running tasks.
…ections

- Fix "Cannot read properties of undefined" error by checking if worker service exists
- Use 'test_db' and 'test_transaction_db' Docker service names instead of localhost
- Use internal port 5432 instead of host-mapped port for TRANS_PORT
- Fixes ECONNREFUSED errors when workers try to connect to databases

This ensures workers can communicate with databases via Docker networking.
…TaskCreator()

Problem:
When processing multiple workers (e.g., ew_test_worker, ew_test_2_worker):
1. First iteration created a reference to the template object
2. Modified the Docker image property (which mutated the shared template)
3. Second iteration reused the same mutated template object
4. Result: All workers ended up with the last processed worker's Docker image

This caused deployment failures where:
- ew_test_worker service used ew_test_2_worker:latest image (wrong!)
- Workers consumed from incorrect RabbitMQ queues
- Experiments failed to respond to API requests
…d ensureBucket from deployment phase file in
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request pushkin-cli Relates to the CLI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Standardize error handling patterns Refactor to target Node v14+ Use SDK built-in adaptive retry mode instead of custom retry logic by default

4 participants