Skip to content

feat: Add comprehensive GitHub Actions CI workflow for PR testing#2

Merged
ocean merged 1 commit intomainfrom
claude/ci-workflow-setup-01Dmzdt2au8tNzk1xX9MRMdh
Nov 14, 2025
Merged

feat: Add comprehensive GitHub Actions CI workflow for PR testing#2
ocean merged 1 commit intomainfrom
claude/ci-workflow-setup-01Dmzdt2au8tNzk1xX9MRMdh

Conversation

@ocean
Copy link
Copy Markdown
Owner

@ocean ocean commented Nov 14, 2025

This commit adds a comprehensive CI/CD pipeline that runs on all pull requests and pushes to main/master branches.

Workflow Features

Rust Checks (Multi-OS)

  • Runs on Ubuntu and macOS
  • Checks Rust code formatting with cargo fmt --check
  • Runs Clippy linter (warnings displayed but not enforced)
  • Runs all Rust unit tests with cargo test
  • Uses caching for faster builds

Elixir Tests (Matrix Testing)

  • Tests on multiple Elixir versions (1.17.0, 1.18.0)
  • Tests on multiple OTP versions (26.2, 27.0)
  • Tests on Ubuntu and macOS
  • Checks Elixir code formatting with mix format --check-formatted
  • Compiles with warnings as errors
  • Runs full Elixir test suite
  • Uses caching for Mix and Cargo dependencies

Integration Tests

  • Runs comprehensive integration tests with mix test --trace
  • Ensures full project compilation works
  • Only runs after Rust and Elixir checks pass

Final Gate Check

  • Ensures all jobs passed before merging
  • Provides clear status for PR reviews

Benefits

  1. Prevents Breaking Changes: Catches issues before they reach main
  2. Multi-Platform Testing: Ensures code works on Linux and macOS
  3. Version Compatibility: Tests against multiple Elixir/OTP versions
  4. Fast Feedback: Caching makes subsequent runs much faster
  5. Clear Status: Easy-to-read job summaries in PR checks

Usage

The workflow runs automatically on every PR. You can also:

  • View workflow runs in the "Actions" tab on GitHub
  • Re-run failed jobs from the Actions tab
  • See detailed logs for each step

This provides a solid foundation for maintaining code quality as the project grows and accepts contributions.

This commit adds a comprehensive CI/CD pipeline that runs on all pull requests
and pushes to main/master branches.

## Workflow Features

### Rust Checks (Multi-OS)
- Runs on Ubuntu and macOS
- Checks Rust code formatting with `cargo fmt --check`
- Runs Clippy linter (warnings displayed but not enforced)
- Runs all Rust unit tests with `cargo test`
- Uses caching for faster builds

### Elixir Tests (Matrix Testing)
- Tests on multiple Elixir versions (1.17.0, 1.18.0)
- Tests on multiple OTP versions (26.2, 27.0)
- Tests on Ubuntu and macOS
- Checks Elixir code formatting with `mix format --check-formatted`
- Compiles with warnings as errors
- Runs full Elixir test suite
- Uses caching for Mix and Cargo dependencies

### Integration Tests
- Runs comprehensive integration tests with `mix test --trace`
- Ensures full project compilation works
- Only runs after Rust and Elixir checks pass

### Final Gate Check
- Ensures all jobs passed before merging
- Provides clear status for PR reviews

## Benefits

1. **Prevents Breaking Changes**: Catches issues before they reach main
2. **Multi-Platform Testing**: Ensures code works on Linux and macOS
3. **Version Compatibility**: Tests against multiple Elixir/OTP versions
4. **Fast Feedback**: Caching makes subsequent runs much faster
5. **Clear Status**: Easy-to-read job summaries in PR checks

## Usage

The workflow runs automatically on every PR. You can also:
- View workflow runs in the "Actions" tab on GitHub
- Re-run failed jobs from the Actions tab
- See detailed logs for each step

This provides a solid foundation for maintaining code quality as the project
grows and accepts contributions.
@ocean ocean merged commit 0bf6a34 into main Nov 14, 2025
1 of 12 checks passed
@ocean ocean deleted the claude/ci-workflow-setup-01Dmzdt2au8tNzk1xX9MRMdh branch November 19, 2025 11:51
ocean added a commit that referenced this pull request Jan 14, 2026
Fixes #2: DateTime type loading failure for :utc_datetime_usec

- Add loaders/dumpers for :utc_datetime_usec, :naive_datetime_usec, :time_usec
- Fix ArgumentError when loading ISO 8601 datetime strings with microseconds
- Reuse existing datetime_decode/encode functions (already handle microseconds)
- Add comprehensive test suite in test/ecto_datetime_usec_test.exs
- Update CHANGELOG.md with detailed fix description
- Update AGENTS.md with microsecond datetime type documentation

Root cause: Missing loader/dumper definitions for _usec datetime variants.
When libsql returned datetime values as ISO 8601 strings (e.g.,
"2026-01-14T06:09:59.081609Z"), ecto_libsql failed to load them into
schemas with microsecond precision timestamp fields.

Impact: Queries with timestamps() macro using @timestamps_opts
[type: :utc_datetime_usec] now work correctly.

Backward compatibility: Existing code using :utc_datetime and
:naive_datetime (without _usec) continues to work unchanged.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants