2024-10-01 19:19:35 +00:00
|
|
|
import dataclasses
|
|
|
|
from pathlib import Path
|
|
|
|
from typing import Dict, Iterable, List, Optional
|
|
|
|
|
|
|
|
|
|
|
|
@dataclasses.dataclass
|
|
|
|
class _Settings:
|
|
|
|
######################################
|
|
|
|
# Pipeline generation settings #
|
|
|
|
######################################
|
2024-10-24 11:17:00 +00:00
|
|
|
CI_PATH = "./ci"
|
2024-10-01 19:19:35 +00:00
|
|
|
WORKFLOW_PATH_PREFIX: str = "./.github/workflows"
|
|
|
|
WORKFLOWS_DIRECTORY: str = f"{CI_PATH}/workflows"
|
|
|
|
SETTINGS_DIRECTORY: str = f"{CI_PATH}/settings"
|
|
|
|
CI_CONFIG_JOB_NAME = "Config Workflow"
|
|
|
|
DOCKER_BUILD_JOB_NAME = "Docker Builds"
|
|
|
|
FINISH_WORKFLOW_JOB_NAME = "Finish Workflow"
|
|
|
|
READY_FOR_MERGE_STATUS_NAME = "Ready for Merge"
|
|
|
|
CI_CONFIG_RUNS_ON: Optional[List[str]] = None
|
|
|
|
DOCKER_BUILD_RUNS_ON: Optional[List[str]] = None
|
|
|
|
VALIDATE_FILE_PATHS: bool = True
|
|
|
|
|
|
|
|
######################################
|
|
|
|
# Runtime Settings #
|
|
|
|
######################################
|
|
|
|
MAX_RETRIES_S3 = 3
|
|
|
|
MAX_RETRIES_GH = 3
|
|
|
|
|
|
|
|
######################################
|
|
|
|
# S3 (artifact storage) settings #
|
|
|
|
######################################
|
|
|
|
S3_ARTIFACT_PATH: str = ""
|
|
|
|
|
|
|
|
######################################
|
|
|
|
# CI workspace settings #
|
|
|
|
######################################
|
|
|
|
TEMP_DIR: str = "/tmp/praktika"
|
|
|
|
OUTPUT_DIR: str = f"{TEMP_DIR}/output"
|
|
|
|
INPUT_DIR: str = f"{TEMP_DIR}/input"
|
|
|
|
PYTHON_INTERPRETER: str = "python3"
|
|
|
|
PYTHON_PACKET_MANAGER: str = "pip3"
|
|
|
|
PYTHON_VERSION: str = "3.9"
|
|
|
|
INSTALL_PYTHON_FOR_NATIVE_JOBS: bool = False
|
|
|
|
INSTALL_PYTHON_REQS_FOR_NATIVE_JOBS: str = "./ci/requirements.txt"
|
|
|
|
ENVIRONMENT_VAR_FILE: str = f"{TEMP_DIR}/environment.json"
|
|
|
|
RUN_LOG: str = f"{TEMP_DIR}/praktika_run.log"
|
|
|
|
|
|
|
|
SECRET_GH_APP_ID: str = "GH_APP_ID"
|
|
|
|
SECRET_GH_APP_PEM_KEY: str = "GH_APP_PEM_KEY"
|
|
|
|
|
|
|
|
ENV_SETUP_SCRIPT: str = "/tmp/praktika_setup_env.sh"
|
|
|
|
WORKFLOW_STATUS_FILE: str = f"{TEMP_DIR}/workflow_status.json"
|
|
|
|
|
|
|
|
######################################
|
|
|
|
# CI Cache settings #
|
|
|
|
######################################
|
|
|
|
CACHE_VERSION: int = 1
|
|
|
|
CACHE_DIGEST_LEN: int = 20
|
|
|
|
CACHE_S3_PATH: str = ""
|
|
|
|
CACHE_LOCAL_PATH: str = f"{TEMP_DIR}/ci_cache"
|
|
|
|
|
|
|
|
######################################
|
|
|
|
# Report settings #
|
|
|
|
######################################
|
|
|
|
HTML_S3_PATH: str = ""
|
|
|
|
HTML_PAGE_FILE: str = "./praktika/json.html"
|
|
|
|
TEXT_CONTENT_EXTENSIONS: Iterable[str] = frozenset([".txt", ".log"])
|
|
|
|
S3_BUCKET_TO_HTTP_ENDPOINT: Optional[Dict[str, str]] = None
|
|
|
|
|
|
|
|
DOCKERHUB_USERNAME: str = ""
|
|
|
|
DOCKERHUB_SECRET: str = ""
|
|
|
|
DOCKER_WD: str = "/wd"
|
|
|
|
|
|
|
|
######################################
|
|
|
|
# CI DB Settings #
|
|
|
|
######################################
|
|
|
|
SECRET_CI_DB_URL: str = "CI_DB_URL"
|
|
|
|
SECRET_CI_DB_PASSWORD: str = "CI_DB_PASSWORD"
|
|
|
|
CI_DB_DB_NAME = ""
|
|
|
|
CI_DB_TABLE_NAME = ""
|
|
|
|
CI_DB_INSERT_TIMEOUT_SEC = 5
|
|
|
|
|
|
|
|
|
|
|
|
_USER_DEFINED_SETTINGS = [
|
|
|
|
"S3_ARTIFACT_PATH",
|
|
|
|
"CACHE_S3_PATH",
|
|
|
|
"HTML_S3_PATH",
|
|
|
|
"S3_BUCKET_TO_HTTP_ENDPOINT",
|
|
|
|
"TEXT_CONTENT_EXTENSIONS",
|
|
|
|
"TEMP_DIR",
|
|
|
|
"OUTPUT_DIR",
|
|
|
|
"INPUT_DIR",
|
|
|
|
"CI_CONFIG_RUNS_ON",
|
|
|
|
"DOCKER_BUILD_RUNS_ON",
|
|
|
|
"CI_CONFIG_JOB_NAME",
|
|
|
|
"PYTHON_INTERPRETER",
|
|
|
|
"PYTHON_VERSION",
|
|
|
|
"PYTHON_PACKET_MANAGER",
|
|
|
|
"INSTALL_PYTHON_FOR_NATIVE_JOBS",
|
|
|
|
"INSTALL_PYTHON_REQS_FOR_NATIVE_JOBS",
|
|
|
|
"MAX_RETRIES_S3",
|
|
|
|
"MAX_RETRIES_GH",
|
|
|
|
"VALIDATE_FILE_PATHS",
|
|
|
|
"DOCKERHUB_USERNAME",
|
|
|
|
"DOCKERHUB_SECRET",
|
|
|
|
"READY_FOR_MERGE_STATUS_NAME",
|
|
|
|
"SECRET_CI_DB_URL",
|
|
|
|
"SECRET_CI_DB_PASSWORD",
|
|
|
|
"CI_DB_DB_NAME",
|
|
|
|
"CI_DB_TABLE_NAME",
|
|
|
|
"CI_DB_INSERT_TIMEOUT_SEC",
|
|
|
|
"SECRET_GH_APP_PEM_KEY",
|
|
|
|
"SECRET_GH_APP_ID",
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
class GHRunners:
|
|
|
|
ubuntu = "ubuntu-latest"
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
for setting in _USER_DEFINED_SETTINGS:
|
|
|
|
print(_Settings().__getattribute__(setting))
|
|
|
|
# print(dataclasses.asdict(_Settings()))
|