Skip to content

feature: secure E2E testing with approval system for external contributors - #1195

Closed
simulot wants to merge 1 commit into
developfrom
bugfix/e2e-for-contributors
Closed

simulot wants to merge 1 commit into
developfrom
bugfix/e2e-for-contributors

Conversation

@simulot

@simulot simulot commented Nov 19, 2025

Copy link
Copy Markdown
Owner

Provisional Change Log - CI Security Enhancement

Security Enhancement: Secure E2E Testing for Contributors

User Experience Impact

  • External contributors now get immediate fast feedback (lint, test, build) without waiting for approval
  • Trusted contributors experience no change - E2E tests still run automatically
  • Maintainers have granular control over when secrets are exposed to external code
  • All contributors get faster feedback loops for basic code quality checks

Technical Changes

  • Split unified CI workflow into two-tier system for security
  • Added approval-based E2E testing to prevent secret exposure
  • Implemented label-based gating for external contributor PRs
  • Created comprehensive documentation for maintainers and contributors

Breaking Changes

  • Command line options unchanged - no breaking changes for users
  • CI behavior changes for external contributors (requires approval for E2E tests)
  • New workflow files and processes for maintainers

Files Added

  • .github/workflows/ci-e2e.yml - E2E tests with approval logic
  • .github/E2E_APPROVAL_GUIDE.md - Comprehensive maintainer guide
  • .github/E2E_APPROVAL_QUICKREF.md - Quick reference for approvals
  • .github/workflows/README.md - Workflow documentation
  • scratchpad/ci-security-enhancement-summary.md - Implementation summary
  • scratchpad/ci-deployment-checklist.md - Deployment guide

Files Modified

  • .github/workflows/ci.yml - Removed E2E tests, kept fast feedback only
  • CONTRIBUTING.md - Updated with new CI process and contributor guidance

Security Improvements

  • Tailscale secrets no longer exposed to unreviewed external PRs
  • Manual code review required before E2E tests access secrets
  • Clear audit trail via approval labels
  • Easy revocation if PR updated with suspicious code

Migration Notes

  • Repository collaborators continue with auto-approval
  • External contributors need maintainer approval for E2E tests
  • New e2e-approved label required for approval process
  • Fast feedback remains automatic for all contributors

Testing Requirements

  • External PR simulation (should skip E2E without approval)
  • Label approval testing (should trigger E2E after approval)
  • Trusted contributor testing (should auto-run E2E)
  • Documentation-only PR testing (should skip E2E appropriately)

Change Type: Security Enhancement / CI Improvement
Impact Level: Medium (affects contributor workflow)
Risk Level: Low (backward compatible, opt-in security)
Testing Required: Yes (workflow testing, approval process)
Documentation Updated: Yes

- Split CI workflow into fast feedback (automatic) and E2E tests (approval-gated)
- External contributors get immediate lint/test/build feedback without secret exposure
- Maintainers approve E2E tests via 'e2e-approved' label after code review
- Trusted contributors (collaborators) retain automatic E2E test execution
- Added comprehensive documentation for maintainers and contributors

ci: add E2E approval workflow and documentation
- Create .github/workflows/ci-e2e.yml with approval logic
- Add .github/E2E_APPROVAL_GUIDE.md for maintainers
- Add .github/E2E_APPROVAL_QUICKREF.md for quick reference
- Add .github/workflows/README.md for workflow overview
- Update CONTRIBUTING.md with new CI process
- Modify .github/workflows/ci.yml to remove E2E tests

docs: update contributor and maintainer documentation
- Update CONTRIBUTING.md with two-tier CI explanation
- Add deployment checklist and implementation summary to scratchpad
- Create provisional change log in scratchpad

security: prevent secret exposure to unreviewed external PRs
- Tailscale secrets only accessible after maintainer approval
- Clear audit trail via approval labels
- Easy revocation if PR updated with suspicious code
@simulot simulot closed this Nov 19, 2025
@simulot
simulot deleted the bugfix/e2e-for-contributors branch November 19, 2025 19:53
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.

1 participant