# Git Pack Installation - Quick Reference **Quick commands and examples for installing packs from git repositories** --- ## Installation Methods ### Web UI ``` Packs → Add Pack ▼ → Install from Remote → Git Repository ``` ### CLI ```bash attune pack install [--ref ] [options] ``` ### API ```bash POST /api/v1/packs/install ``` --- ## Quick Examples ### Public GitHub Repository ```bash # Latest from default branch attune pack install https://github.com/example/pack-slack.git # Specific version tag attune pack install https://github.com/example/pack-slack.git --ref v2.1.0 # Specific branch attune pack install https://github.com/example/pack-slack.git --ref develop # Specific commit attune pack install https://github.com/example/pack-slack.git --ref a1b2c3d ``` ### Private Repository (SSH) ```bash # SSH URL with tag attune pack install git@github.com:myorg/private-pack.git --ref v1.0.0 # SSH URL with branch attune pack install git@github.com:myorg/private-pack.git --ref main ``` ### Installation Options ```bash # Force reinstall (replace existing) attune pack install --force # Skip tests attune pack install --skip-tests # Skip dependency validation attune pack install --skip-deps # All options combined attune pack install --ref v1.0.0 --force --skip-tests --skip-deps ``` --- ## Git URL Formats ### HTTPS ``` ✓ https://github.com/username/pack-name.git ✓ https://gitlab.com/username/pack-name.git ✓ https://bitbucket.org/username/pack-name.git ✓ https://git.example.com/username/pack-name.git ``` ### SSH ``` ✓ git@github.com:username/pack-name.git ✓ git@gitlab.com:username/pack-name.git ✓ user@server:path/to/pack.git ``` --- ## Git References | Type | Example | Description | |------|---------|-------------| | Tag | `v1.2.3` | Semantic version tag | | Tag | `release-2024-01-27` | Release tag | | Branch | `main` | Main branch | | Branch | `develop` | Development branch | | Branch | `feature/xyz` | Feature branch | | Commit | `a1b2c3d4e5f6...` | Full commit hash | | Commit | `a1b2c3d` | Short commit hash (7+ chars) | | None | (omit --ref) | Default branch (shallow) | --- ## Installation Flags | Flag | Effect | Use When | |------|--------|----------| | `--force` | Replace existing pack, bypass checks | Upgrading, testing | | `--skip-tests` | Don't run pack tests | Tests slow/unavailable | | `--skip-deps` | Don't validate dependencies | Custom environment | ⚠️ **Warning**: Use flags cautiously in production! --- ## Required Pack Structure ``` repository/ ├── pack.yaml ← Required ├── actions/ ← Optional ├── sensors/ ← Optional └── ... ``` OR ``` repository/ └── pack/ ├── pack.yaml ← Required └── ... ``` --- ## API Request ```bash curl -X POST http://localhost:8080/api/v1/packs/install \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "source": "https://github.com/example/pack-slack.git", "ref_spec": "v2.1.0", "force": false, "skip_tests": false, "skip_deps": false }' ``` --- ## Common Workflows ### Production Install ```bash # Install specific stable version attune pack install https://github.com/myorg/pack-prod.git --ref v1.0.0 ``` ### Development Testing ```bash # Install from feature branch, skip checks attune pack install https://github.com/myorg/pack-dev.git \ --ref feature/new-action \ --force \ --skip-tests ``` ### CI/CD Pipeline ```bash # Install from current commit attune pack install https://github.com/$REPO.git \ --ref $COMMIT_SHA \ --force ``` --- ## Troubleshooting | Error | Solution | |-------|----------| | Permission denied | Check SSH keys or HTTPS credentials | | Ref not found | Verify branch/tag exists and is pushed | | pack.yaml not found | Ensure file exists at root or in pack/ | | Dependencies missing | Install dependencies or use --skip-deps | | Tests failed | Fix tests or use --skip-tests or --force | --- ## Security Best Practices ✓ **DO**: - Use specific tags in production (`v1.2.3`) - Use SSH keys for private repos - Review code before installing - Rotate access tokens regularly ✗ **DON'T**: - Embed credentials in URLs - Install from `main` branch in production - Skip validation without review - Use force mode carelessly --- ## Web UI Workflow 1. Navigate to **Packs** page 2. Click **Add Pack** dropdown button 3. Select **Install from Remote** 4. Choose **Git Repository** source type 5. Enter repository URL 6. (Optional) Enter git reference 7. (Optional) Configure installation options 8. Click **Install Pack** 9. Wait for completion and redirect --- ## Quick Tips 💡 **Version Control**: Always use tags for production (e.g., `v1.0.0`) 💡 **Testing**: Test from feature branch first, then install from tag 💡 **SSH Setup**: Configure SSH keys once, use forever 💡 **Shallow Clone**: Omit ref for faster install (default branch only) 💡 **Commit Hash**: Most specific reference, guaranteed reproducibility --- ## Related Commands ```bash # List installed packs attune pack list # View pack details attune pack show # Run pack tests attune pack test # Uninstall pack attune pack uninstall ``` --- ## More Information 📖 Full documentation: `docs/packs/pack-installation-git.md` 📖 Pack structure: `docs/packs/pack-structure.md` 📖 Pack registry spec: `docs/packs/pack-registry-spec.md`