Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move QPY tests to GitHub Actions and increase inter-symengine tests #13273

Merged
merged 1 commit into from
Oct 29, 2024

Commits on Oct 29, 2024

  1. Move QPY tests to GitHub Actions and increase inter-symengine tests

    This commit has two major goals:
    
    - fix the caching of the QPY files for both the `main` and `stable/*`
      branches
    
    - increase the number of compatibility tests between the different
      symengine versions that might be involved in the generation and
      loading of the QPY files.
    
    Achieving both of these goals also means that it is sensible to move the
    job to GitHub Actions at the same time, since it will put more pressure
    on the Azure machine concurrency we use.
    
    Caching
    -------
    
    The previous QPY tests attempted to cache the generated files for each
    historical version of Qiskit, but this was unreliable.  The cache never
    seemed to hit on backport branches, which was a huge slowdown in the
    critical path to getting releases out.  The cache restore keys were also
    a bit lax, meaning that we might accidentally have invalidated files in
    the cache by changing what we wanted to test, but the restore keys
    wouldn't have changed.
    
    The cache files would fail to restore as a side-effect of ed79d42
    (Qiskitgh-11526); QPY was moved to be on the tail end of the lint run, rather
    than in a test run.  This meant that it was no longer run as part of the
    push event when updating `main` or one of the `stable/*` branches.  In
    Azure (and GitHub Actions), the "cache" action accesses a _scoped_
    cache, not a universal one for the repository [^1][^2].  Approximately,
    base branches each have their own scope, and PR events open a new scope
    that is a child of the target branch, the default branch, and the source
    branch, if appropriate.  A cache task can read from any of its parent
    scopes, but write events go to the most local scope.  This means that we
    haven't been writing to long-standing caches for some time now.  PRs
    would typically miss the cache on the first attempt, hit their
    cache for updates, then miss again once entering the merge queue.
    
    The fix for this is to run the QPY job on branch-update events as well.
    The post-job cache action will then write out to a reachable cache for
    all following events.
    
    Cross-symengine tests
    ---------------------
    
    We previously were just running a single test with differing versions of
    symengine between the loading and generation of the QPY files.  This
    refactors the QPY `run_tests.sh` script to run a full pairwise matrix of
    compatibility tests, to increase the coverage.
    
    [^1]: https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows#restrictions-for-accessing-a-cache
    [^2]: https://learn.microsoft.com/en-us/azure/devops/pipelines/release/caching?view=azure-devops#cache-isolation-and-security
    jakelishman committed Oct 29, 2024
    Configuration menu
    Copy the full SHA
    6ccb14f View commit details
    Browse the repository at this point in the history