Skip to content
This repository has been archived by the owner on Jul 3, 2024. It is now read-only.

Latest commit

 

History

History
77 lines (54 loc) · 4.14 KB

README.md

File metadata and controls

77 lines (54 loc) · 4.14 KB

⚠️ long abandoned ⚠️

[this grew out of my frustrations while I worked on ManageIQ but I've moved to other interests.

pass-the-fork — inject forked dependencies into CI builds

When making changes to several related repositories, by default CI tests each against unmodified dependencies. This tool will allow explicitly requesting a testing against modified dependencies.

Currently working on injecting Ruby gems into Travis builds, for GitHub pull requests. I'd love to expand each of these (details below).

Use cases

Imagine repository X is a library on which repository Y depends.

  1. Compatibility: @you forked X, sent pull request X#1, wonder if it'll break Y. By default Y tests weren't even run. Want to run B tests against you/X fork at your-x-branch-1.

  2. Dependent PRs: you forked both, sent pull requests X#2 which adds new api, Y#2 which uses it. By default, Y#2 is tested against X@master and obviously fails. Want to run you/Y@your-y-branch-2 fork tests against you/X@your-x-branch-2 fork.

  3. ...

[TODO: flesh this out, add diagram, include merge order considerations...]

Functionality (nothing working yet, but this shows what I'm starting from)

The long-term goal is to help test/coordinate/present related changes accross all kinds of free / open source software, that were not necessarily aware of each other.

  • translate PR urls to specific git url & branch (or commit).

    • WIP GitHub pull request url
    • GitLab pull request url
    • other hosts...
    • any hg/bzr/svn/etc branch?
    • patch in mailing list / issue trackers?
  • WIP script to override one or more dependencies

    • WIP Ruby gems
    • Javascript npm packages
    • ...

    far off future: would love to do not only source package managers but also:

    • git submodules
    • vendored code
    • docker images
    • build-time shell install commands like apt/rpm, tarballs, ...
    • run-time fetching dependencies (eg. javascript from CDNs)
  • WIP CLI to trigger CI run with above overriding script

  • Report build status back on pull request.

    • GitHub status API apparently requires repo write permissions :-(
    • badge image?
    • make textual comment on PR?
      • on update, remove previous comment (like miq_bot does for linter comments)
  • A way to re-run on PR changes. (For starters, just re-run the CLI)

  • A bot that does the above? For now I'd like to get as far as possible without bots, only CLI anybody can run...

  • Record versions actually used in a build? (feels a good idea, but what's the use case? possibly belongs in separate project.)

Prior art