Skip to content

CI/CD speed up headrooms #142

Open
Open
@Totktonada

Description

@Totktonada

I'll collect ideas about speed up of CI/CD in tarantool/tarantool here.

  1. Packaging jobs: skip repository metadata update and dependencies installation.

    • Docker image caching on GitHub Actions cache infrastructure.
      • Suitable for self-hosted runners?
      • Requires some integration of packpack with GitHub Actions.
      • We should periodically expire/renew the cache, otherwise we may stuck at some old state forever. And it should be done automatically.
    • https://github.com/tarantool/infra/issues/127
      • The main downside: it'll require extra attention and maintenance (periodical manual work).
  2. Testing jobs: cache dependencies.

    • As above, whether it is suitable for self-hosted runners?
    • As above, periodical automatic cache renew/refresh is required.
  3. ARM64 jobs: use ccache (complation here is long).

    • I'm afraid of unintended effects due to ccache: as false negative (build failure) as well as false positive (missing of expected build failure). So I want ccache files to be expired each week. Also it worth to never use ccache files on tag jobs.
    • GitHub Actions integration (suitable for self-hosted runners?).
  4. Run small set of tests on most of targets on developer branches.

  5. Skip previous run, when a developer branch is force-pushed.

  6. Don't run ARM64 jobs on developer branches (if the branch is not named as somethinf-full-ci).

    Implemented in ci: reduce number of arm64 job runs tarantool#6569

  7. In Jepsen testing we can build a package once (on a fast machine) and install it on MCS virtual machine (similarly how we do it in integration.yml). See timestamps:

    2021-10-29T16:38:55.4755076Z INFO [2021-10-29 16:38:55,472] jepsen node 87.239.105.42 - tarantool.db Building Tarantool nil
    2021-10-29T16:45:06.1806054Z INFO [2021-10-29 16:45:06,177] jepsen node 87.239.105.42 - tarantool.db Configure instance on 87.239.105.42
    

    Six minutes!

  8. We can run Jepsen testing directly on GitHub hosted runners on Ubuntu, without docker container with Debian Stretch inside (I guess we implemented this for our own CentOS machines, when they work as GitLab CI runners, and it has no sense anymore). We spend ~1 minute to fetch the image and ~40 seconds for apt-get update inside each time.

  9. We can use GitHub's caching infrastructure to don't install clojure, jepsen, terraform and its dependencies each time. See the idea here.

  10. Jepsen testing has a client machine (from where we send requests to tarantool instances) and MCS virtual machines with tarantool server instances. The client machine is where the GitHub runner resides and now we use GitHub hosted runners in this type of testing. Moving the client machine to MCS may decrease timings between the client and the tarantool server(s). The tests are time bound, so it should not affect testing time much. But it'll allow to make more requests per second and so will make the testing more powerful within the same job run time.

  11. Move FreeBSD CI to cloud (MCS) #143

Feel free to add more!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions