QA/Bibisect/Implementation

    From The Document Foundation Wiki
    < QA‎ | Bibisect

    This page is about the technical details and Implementation pieces of our Bibisect repositories.

    Bibisect Content Repos and Bundles

    TDF-provided bibisect repositories are available at https://bibisect.libreoffice.org/$OS-$VERSION.git. Also provided are git bundles, which can help with initial downloads on unstable connections. Detailed instructions for how to locally clone bundles (and for live repositories fetch updates) can be found on each repository page, such as https://bibisect.libreoffice.org/linux-64-5.2.

    Bibisect Code Repos

    Bibisect-related code lives in the dev-tools repo:

     https://git.libreoffice.org/dev-tools/tree/master/bibisect
    

    Scripts available include

    • Bibisect repo generation
    • Bibisect mergeranges tool
    • [todo] - User helper scripts (e.g. run-libreoffice.sh)

    In the future, some code may live in the buildbot repo:

     https://git.libreoffice.org/buildbot
    

    (Perhaps the buildbot repo would be a reasonable home for all of the bibisect scripts?)

    On the infrastucture side, the deployment resides on our Salt states:

     https://git.libreoffice.org/infra/salt/tree/master/bibisect/init.sls
    

    Workflow to create and update repositories

    (Partially taken from redmine#1481.) Update and creation are normally done by The Document Foundation QA engineer. To do this one needs a remote shell on bibisect.libreoffice.org as the bibisect user.

    Note: Bibisect repositories used to live on gerrit but this is no longer the case. (This was deemed overkill by the infrastructure team, as code review was unnecessary, ACLs were trivial, and bibisect-* repositories cluttered the project list.)

    Create a new repository

    Fetch-based workflow, cloning an existing repository from username@hostname/path/to/repo.git (a tinderbox).

       bibisect@bibisect.libreoffice.org:~$ git clone --bare --mirror --template ~/templates \
       	ssh://username@hostname/path/to/repo.git ~/repositories/linux-64-7.0.git
       Cloning into bare repository…
       […]
    

    (No need to create the magic file git-daemon-export-ok anymore. Repositories under ~bibisect/repositories are all public, and all exposed to git-http-backend(1), which runs as an unprivileged dynamic user. Don't put any private world-readable repositories in there!)

    Next, create the bundle to be served alongside the git repository:

       bibisect@bibisect.libreoffice.org:~$ bibisect-create-bundle ~/repositories/linux-64-7.0.git
    

    Update active repositories

       bibisect@bibisect.libreoffice.org:~$ git -C ~/repositories/linux-64-7.0.git remote update
       Fetching origin
       […]
    

    The bundles don't need to always be up to date (instructions to keep local clones in sync can be found on the live repository page), but if they're lagging too far behind folks might have trouble fetching large updates. In doubt, run

       bibisect@bibisect.libreoffice.org:~$ bibisect-create-bundle ~/repositories/*.git
    

    which will update bundles that needs to be updated and leave others alone.

    Remove inactive repositories

    Once a repository is no longer active, we archive it and only serve the bundle. First, make sure the bundle is up to date, then remove the repository:

       bibisect@bibisect.libreoffice.org:~$ bibisect-create-bundle ~/repositories/linux-64-6.2.git
       bibisect@bibisect.libreoffice.org:~$ rm -rf ~/repositories/linux-64-6.2.git
    

    Also see