RepoPull

RepoPull is a Python-based tool for automated library scanning and dependency management. It pulls repository metadata, scans for known vulnerabilities, and helps maintain a clean dependency tree. Key Features Automated library manifest discovery Vulnerability scanning integration (Snyk) Recursive dependency resolution Dockerized deployment support Architecture # Core scanning logic class RepoScanner: def __init__(self, repo_path: str): self.repo_path = repo_path self.manifests = [] def discover_manifests(self): """Find all dependency manifests in the repo.""" patterns = ['requirements.txt', 'Pipfile', 'pyproject.toml', 'package.json'] for pattern in patterns: matches = Path(self.repo_path).rglob(pattern) self.manifests.extend(matches) return self.manifests def scan_dependencies(self): """Parse manifests and extract dependency trees.""" deps = {} for manifest in self.manifests: with open(manifest) as f: content = f.read() deps[manifest.name] = self._parse_manifest(content) return deps Git History The project has evolved through several iterations: ...

August 12, 2024 · 2 min · 215 words · Isaac

Self-Hosted CI/CD Pipeline

A fully self-hosted CI/CD pipeline using GitHub Actions with a Raspberry Pi runner, orchestrating automated builds, tests, and deployments across multiple environments. Architecture The pipeline uses a self-hosted GitHub Actions runner deployed on a Raspberry Pi connected via Tailscale, enabling secure builds without exposing ports. # .github/workflows/main.yml name: Deploy Pipeline on: push: branches: [main] jobs: build: runs-on: self-hosted steps: - uses: actions/checkout@v4 - name: Build run: | docker build -t myapp:${{ github.sha }} . - name: Test run: | docker run myapp:${{ github.sha }} pytest - name: Deploy run: | docker tag myapp:${{ github.sha }} myapp:latest docker-compose up -d Runner Setup # On the Raspberry Pi: mkdir actions-runner && cd actions-runner curl -o actions-runner-linux-x64.tar.gz -L \ https://github.com/actions/runner/releases/download/v2.323.0/actions-runner-linux-x64-2.323.0.tar.gz # Configure ./config.sh --url https://github.com/CaptainStinkRat/myapp --token $TOKEN # Start ./run.sh Git History commit e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4 Author: CaptainStinkRat Date: Wed Apr 16 2025 feat: Add multi-stage deployment pipeline Implements dev → staging → production promotion with automated testing gates at each stage. commit f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5 Author: CaptainStinkRat Date: Sun Mar 30 2025 fix: Pipeline timeout handling Increases job timeout for slow Raspberry Pi builds and adds retry logic for flaky network tests. Pipeline Flow Push to main triggers the workflow Build step compiles the application Test runs the full test suite Deploy promotes to production if tests pass Notify sends status to Discord

April 16, 2025 · 2 min · 217 words · Isaac