towerops/vendor/README.md
Graham McIntire 70838af14d
chore: update vendored Oban packages
- oban_pro: 1.6.11 → 1.6.13
  - Enhanced Smart engine functionality
  - Refactored Dynamic Cron plugin
  - Added diagnostics and executing stage modules

- oban_met: already at 1.0.6 (verified)
- oban_web: already at 2.11.8 (latest)
2026-03-04 16:51:55 -06:00

138 lines
2.9 KiB
Markdown

# Vendored Dependencies
This directory contains vendored Elixir dependencies that are included directly in the repository instead of being fetched from external sources during build/CI.
## Why Vendor?
These dependencies are vendored to:
- Avoid requiring authentication during CI/CD builds
- Ensure consistent builds without external dependencies
- Enable offline development
## Docker Build
**IMPORTANT**: The `vendor/` directory must be copied into the Docker build before running `mix deps.get`.
In `Dockerfile`, ensure this order:
```dockerfile
COPY mix.exs mix.lock ./
COPY vendor vendor # ← Must be before mix deps.get
RUN mix deps.get --only $MIX_ENV
```
## Vendored Packages
### Oban Pro
**Version**: 1.6.13
**Source**: https://getoban.pro/repo (private)
**License**: Commercial (licensed)
Advanced Oban features including batching, workflows, dynamic partitioning, and more.
**Configuration in mix.exs**:
```elixir
{:oban_pro, "~> 1.6", path: "vendor/oban_pro"}
```
### Oban Web
**Version**: 2.11.8
**Source**: https://hex.pm/packages/oban_web
**License**: Apache-2.0
Web dashboard for Oban job monitoring and management.
**Configuration in mix.exs**:
```elixir
{:oban_web, "~> 2.11", path: "vendor/oban_web"}
```
**Router Configuration** (superuser only):
```elixir
# lib/towerops_web/router.ex
scope "/" do
pipe_through [:browser, :require_authenticated_user, :require_superuser]
oban_dashboard "/oban"
end
```
### Oban Met
**Version**: 1.0.6
**Source**: https://hex.pm/packages/oban_met
**License**: Apache-2.0
Metrics and telemetry support for Oban Web (required dependency).
**Configuration in mix.exs**:
```elixir
{:oban_met, "~> 1.0", path: "vendor/oban_met", override: true}
```
## Updating Vendored Dependencies
### Step 1: Configure Oban Repository (if needed)
```bash
mix hex.repo add oban https://getoban.pro/repo \
--fetch-public-key SHA256:4/OSKi0NRF91QVVXlGAhb/BIMLnK8NHcx/EWs+aIWPc \
--auth-key <your-auth-key>
```
### Step 2: Update Dependencies
```bash
# Update version constraints in mix.exs if desired
# Then fetch latest versions
mix deps.unlock oban_pro oban_web oban_met
mix deps.get
# Verify versions
mix deps | grep oban
```
### Step 3: Update Vendored Code
```bash
# Remove old vendored versions
rm -rf vendor/oban_pro vendor/oban_web vendor/oban_met
# Copy new versions from deps
cp -r deps/oban_pro vendor/
cp -r deps/oban_web vendor/
cp -r deps/oban_met vendor/
# Compile and test
mix deps.compile
mix test
```
### Step 4: Commit Changes
```bash
git add vendor/
git commit -m "Update vendored Oban packages
- oban_pro: 1.6.x → 1.6.y
- oban_web: 2.11.x → 2.11.y
- oban_met: 1.0.x → 1.0.y
"
```
## Verifying Vendored Dependencies
To verify that vendored dependencies are being used correctly:
```bash
# Check that path dependencies are recognized
mix deps
# Compile from scratch
mix deps.clean --all
mix deps.compile
# Run tests
mix test
```