Skip to content

Combine Java modules into main testcontainers-java repo #564

Closed

Description

@rnorth

On reflection we feel that moving modules/third-party parts into separate Git repositories was a mistake on a few levels:

  • My initial thinking was to have separate versioning for the main project and modules, but this quickly turned out to be not something people want
  • The level of coordination required to synchronise version numbers and perform a synchronised release, across repos, is too much. We can automate some, but not all of the process, and edge cases really hurt us.
  • This has resulted in the modules neither being released independently (freely) nor in sync - so we have the worst of both worlds, sadly.

As such, we've decided we'd like to bring all modules back in to this testcontainers-java repo.

Firstly, we need permission from the authors of each of the modules where another organisation is marked as the copyright owner. We will, of course, do whatever's right and works for all concerned. If the following people wouldn't mind making their views known I'd be most grateful.

Then, some other challenges we want to address as part of this exercise:

  • How do we keep the build fast?: Gradle build cache should help a lot (Gradle #574)
  • Is Maven holding us back in keeping the build fast? see above
  • What's our release process?
  • How do we ensure that module owners/'authoritative people' have the right involvement in reviewing changes and deciding when to make a release?: Github CODEOWNERS feature will help.
  • Rework to documentation (add mention of modules)

cc @kiview @bsideup

Activity

  1. added this to the next milestone on Jan 29, 2018
  2. kiview commented on Feb 2, 2018

    @kiview
    Member

    I've already talked to @StefanHufschmidt, this should be possible for testcontainers-java-module-mssqlserver.

    Here are some of the current ideas we've already discussed:

    • Switch to Gradle as the build system and use remote cache to speed up the build time
    • Release to Bintray and mirror releases to Maven Central

    Regarding the permission problem for sub-module maintainers:
    Would Git sub-modules help, if we keep them up-to date automatically?

  3. rnorth commented on Feb 3, 2018

    @rnorth
    MemberAuthor

    Thanks :)

    I'm afraid I have nightmares about submodules, so would be reluctant to involve these. Unless I'm mistaken we'd also have a problem of triggering top-level builds, as a mirror image of the problem we have of triggering builds the other way right now.

    I think if there's a worry about permissions let's try it and see how things go. Module owners will hopefully continue to be involved in reviewing PRs for their area of interest, and I think we should be willing to delegate some trust accordingly...

  4. asafm commented on Feb 4, 2018

    @asafm
    Contributor
  5. rnorth commented on Feb 8, 2018

    @rnorth
    MemberAuthor

    @asafm - don't know how I missed that when it was announced, but that's awesome 😀

  6. rnorth commented on Mar 13, 2018

    @rnorth
    MemberAuthor

    @mikeoswald would you be able to comment on whether we can bring the vault module into the main Testcontainers repo? If not, or if you need time to consider, that's OK; I can leave it unmodified and not migrate it yet.

  7. mikeoz0 commented on Mar 13, 2018

    @mikeoz0

    @rnorth Sorry about the late reply. That would be fine to move it into the main repository.

  8. rnorth commented on Mar 13, 2018

    @rnorth
    MemberAuthor

    Awesome, thanks @mikeoswald!

  9. rnorth commented on Mar 13, 2018

    @rnorth
    MemberAuthor

    Regarding release process, the bintray repository is now linked to JCenter. As I can never remember the process to wire up bintray/jcenter and maven central, @bsideup it would be good if we can perform the next release together some time..!

  10. bsideup commented on Mar 13, 2018

    @bsideup
    Member

    @rnorth sure! Next release is on me :)

  11. rnorth commented on Mar 13, 2018

    @rnorth
    MemberAuthor

    I've mentioned the Couchbase module in #269 - I don't think we'll have time to integrate right away though.

  12. kiview commented on Mar 26, 2018

    @kiview
    Member

    @rnorth Since you've finished the acutal implementation in #607 the only thing missing from the checklist is the release process.
    Is the release implicitly working right now, aligning every module to the parent version on release/publish?

  13. bsideup commented on Apr 7, 2018

    @bsideup
    Member

    1.7.0 released today is a first release based on Gradle & monorepo, with all modules released at once

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions