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

Auto triggering tests bases on planning #377

Open
fruch opened this issue Jun 16, 2024 · 6 comments
Open

Auto triggering tests bases on planning #377

fruch opened this issue Jun 16, 2024 · 6 comments
Assignees
Labels
Argus enhancement New feature or request

Comments

@fruch
Copy link
Contributor

fruch commented Jun 16, 2024

ability to trigger multiple jobs base on the version specified in their planning.

for example if I have multiple jobs marked as planned for RC1, we should have a place to trigger all of those jobs with scylla_version as example: 2024.1.rc1

@k0machi k0machi added enhancement New feature or request Argus labels Jun 27, 2024
@k0machi
Copy link
Collaborator

k0machi commented Jun 27, 2024

Per our discussion here's what we can implement for this:

  • A new type called "Release Plan"
  • The release plan will contain a set of tests and conditions for this release plan, such as:
    • Job that must be run
    • Which version should they be run with
  • The new release plan page should show the plan coverage and allow user to trigger all jobs within said plan with the specified version
  • All our current views (release & custom views) should support selecting a set of jobs and creating a release plan out of them
  • The release plan is distinct from assignee plan as of now (However that part should also be looked at at some point, as it is somewhat brittle. We could potentially rework assignee plans into release plans)
  • The release plan lifetime can be set to a specified date or can be indefinite

@fruch
Copy link
Contributor Author

fruch commented Jun 27, 2024

Per our discussion here's what we can implement for this:

  • A new type called "Release Plan"
  • The release plan will contain a set of tests and conditions for this release plan, such as:
    • Job that must be run
    • Which version should they be run with
  • The new release plan page should show the plan coverage and allow user to trigger all jobs within said plan with the specified version
  • All our current views (release & custom views) should support selecting a set of jobs and creating a release plan out of them
  • The release plan is distinct from assignee plan as of now (However that part should also be looked at at some point, as it is somewhat brittle. We could potentially rework assignee plans into release plans)
  • The release plan lifetime can be set to a specified date or can be indefinite

Not sure about binding a plan to a release

It would limit us if we start talking about plan that spans multiple release folders
Example, master duty that that would span on enterprise and OSS.

But then on the other han, copy a plan in that sense is somewhat irrelevant.

Maybe consider the ties to release optional

@k0machi
Copy link
Collaborator

k0machi commented Jun 27, 2024

Maybe consider the ties to release optional

Hmm, indeed, that's a good point. My current idea only lists jobs, so untying those plans from a release is easy - we can basically do them the same as we do views, and for backlinks, e.g. viewing all plans that contain a specific release (master for example) we can store affected releases on a plan.

@fruch
Copy link
Contributor Author

fruch commented Jun 27, 2024

one more example of planning happening on master, regardless of a release, was tablets and raft topology.
for every major feature we might have some plans we want to execute before a release.

and we might have plan for staging as well, thing of a very complex SCT PR, we need to run all of artifacts tests at the same time ? (like I need few days ago)

one more idea to think about when designing plans, is plan that clones jobs. (not a first priority)

  1. I have a set of test (by names / locations on master)
  2. I want to clone them from master all into a folder in staging (or generate them from SCT code)
  3. execute all of them with similar parameters

as reference code I'm using for such things (it's just triggering, not the cloning):

    for case, scylla_repo in [
        #('artifacts-ubuntu2204-test', latest_list),
        #('artifacts-ubuntu2004-arm-test', latest_list),
        #('artifacts-centos8-test', latest_repo),
        #('artifacts-rocky9-test', latest_repo),
        ('artifacts-debian10-arm-test', latest_list),
        #('artifacts-amazon2-arm-test', latest_repo),
        #('artifacts-amazon2-test', latest_repo),
        #('artifacts-ubuntu2004-fips-test', latest_list),
        #('artifacts-ubuntu2004-arm-test', latest_list),
        #('artifacts-ubuntu2404-test', latest_list),
        #('artifacts-ubuntu2404-arm-test', latest_list),
        #('artifacts-amazon2023-arm-test', latest_repo),
        #('artifacts-amazon2023-test', latest_repo),
        #('artifacts-amazon2023-offline_install-nonroot-test', ''),
        #('artifacts-amazon2023-offline_install-test', latest_repo),
        #('artifacts-centos9-arm-test', latest_repo),
        #('artifacts-centos9-selinux-test', latest_repo),
        #('artifacts-centos9-test', latest_repo),
        #('artifacts-centos9-web-test', latest_repo),
        ('artifacts-ubuntu2204-test' ,latest_list)
    ]:
        job_name = f'{folder}/{case}'
        job = JenkinsJobTrigger(job_name)
        job.update_scm(**repo_details)
        job.trigger_last({
            "gce_project": "gcp-sct-project-1",
            "scylla_version": '',
            "scylla_repo": scylla_repo,
            "email_recipients": "fruch@scylladb.com",
            "nonroot_offline_install": "false",
            "unified_package": '',
            #"unified_package": 'https://downloads.scylladb.com/unstable/scylla/master/relocatable/2024-06-08T18:51:41Z/scylla-unified-6.1.0~dev-0.20240608.f4706be8a8c4.x86_64.tar.gz',
        })

@k0machi
Copy link
Collaborator

k0machi commented Jun 27, 2024

Hmm, some sort of smart cloner would be nice in such case, so that you could specify config_files param that would append new files to each job instead of having to edit them manually / apply same to all of them

@fruch
Copy link
Contributor Author

fruch commented Jun 27, 2024

Hmm, some sort of smart cloner would be nice in such case, so that you could specify config_files param that would append new files to each job instead of having to edit them manually / apply same to all of them

That idea can be extended in lots of ways.

But we should start with the basis of it

k0machi added a commit to k0machi/argus that referenced this issue Oct 2, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 2, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 3, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 3, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 3, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 9, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 9, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 21, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 21, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 21, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 28, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 28, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 29, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 29, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
k0machi added a commit to k0machi/argus that referenced this issue Oct 29, 2024
This commit adds a new way to manage releases inside Argus, called
Release Planner. Release Planner replaces current Release Scheduling
mechanism (but not the Duty Calendar for now). Main features include:

* Plans are now separate entities (replacing one global release
  schedule)
* Each plan contains tests, groups and people it will be using for
  assignments
* Plans can target a specific scylla version to scope the plan to a
  point or RC release.
* Plans can be edited, deleted and copied.
* On copy, plan will offer to replace missing tests/groups if it is
  being copied to another release and that release is missing required
  tests.
* Each plan automatically creates and maintains a view dashboard for
  said plan and can be viewed from plan overview page or inside views
  overview
* The new assignment logic is now applied to all releases not marked as
  "endless" (perpetual in the admin panel). Currently the only one that
  is marked that way is scylla-master.

Fixes scylladb#377
Task: scylladb/qa-tasks#1717
@k0machi k0machi closed this as completed in 8b469e4 Nov 4, 2024
@k0machi k0machi reopened this Nov 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Argus enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants