UNCLASSIFIED

__main__.py 2.69 KB
Newer Older
James Petersen's avatar
James Petersen committed
1 2 3 4 5 6 7
#!/usr/bin/env python3

import sys
import shutil
import pathlib
import argparse

James Petersen's avatar
James Petersen committed
8
from trigger.generate import generate
James Petersen's avatar
James Petersen committed
9
from trigger.scheduler import scheduler
James Petersen's avatar
James Petersen committed
10
from trigger.utils import logger, compare
James Petersen's avatar
James Petersen committed
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

log = logger.setup()


def main():

    # Arguments
    parser = argparse.ArgumentParser(description="Run pipelines arguments")
    parser.add_argument(
        "--dry-run",
        action="store_true",
        help="Testing flag to dry run the script",
    )

    parser.add_argument(
        "--repo1-token",
        metavar="repo1-token",
        default="haha",
        type=str,
        help="Personal token for accessing gitlab.",
    )

    parser.add_argument(
        "--initial-batch",
        metavar="initial-batch",
        default=15,
        type=int,
        help="Initial batch size of pipelines to kick off.",
    )

Kenneth Maguire's avatar
Kenneth Maguire committed
41 42 43
    parser.add_argument(
        "--max-batch",
        metavar="max-batch",
Kenneth Maguire's avatar
Kenneth Maguire committed
44 45
        default=50,
        type=int,
Kenneth Maguire's avatar
Kenneth Maguire committed
46 47 48
        help="Maximum batch size of pipelines of created pipelines.",
    )

James Petersen's avatar
James Petersen committed
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
    parser.add_argument(
        "--repo1-url",
        metavar="repo1-url",
        default="https://repo1.dso.mil/",
        type=str,
        help="Url for Repo1.",
    )

    parser.add_argument(
        "--max-duration",
        metavar="max-duration",
        default=1200,
        type=int,
        help="Max duration for a pipeline to run before working set is scaled down.",
    )

    parser.add_argument(
        "--artifacts-path",
        metavar="artifacts-path",
        default=".artifacts",
        type=str,
        help="Directory to write all artifacts to.",
    )

    args = parser.parse_args()
    # End arguments

    if pathlib.Path(args.artifacts_path).exists():
        try:
            shutil.rmtree(args.artifacts_path)
        except OSError:
            log.exception("Could not remove the {args.artifacts_path}")
            sys.exit(1)

    pathlib.Path(args.artifacts_path).mkdir(parents=True, exist_ok=True)

    projects = generate.list_of_projects(
        repo1_url=args.repo1_url,
        repo1_token=args.repo1_token,
        artifacts_path=args.artifacts_path,
        group="dsop",
        dry_run=args.dry_run,
    )

    s = scheduler.Scheduler(
        repo1_token=args.repo1_token,
        repo1_url=args.repo1_url,
        initial_batch=args.initial_batch,
Kenneth Maguire's avatar
Kenneth Maguire committed
97
        max_batch=args.max_batch,
James Petersen's avatar
James Petersen committed
98 99
        max_duration=args.max_duration,
    )
James Petersen's avatar
James Petersen committed
100

James Petersen's avatar
James Petersen committed
101
    s.schedule(projects=projects, artifacts_path=args.artifacts_path, branch="master")
James Petersen's avatar
James Petersen committed
102

James Petersen's avatar
James Petersen committed
103
    #
James Petersen's avatar
James Petersen committed
104
    # Removing the development rebuilds for now. Please reference
James Petersen's avatar
James Petersen committed
105 106
    #   https://repo1.dso.mil/ironbank-tools/trigger/-/issues/18
    #
James Petersen's avatar
James Petersen committed
107

James Petersen's avatar
James Petersen committed
108
    compare.compare(filename=args.artifacts_path)
James Petersen's avatar
James Petersen committed
109 110 111 112 113
    return 0


if __name__ == "__main__":
    sys.exit(main())