Skip to content

Commit

Permalink
feat: Tons of updates, breaking changes in artifact output, pr_helper
Browse files Browse the repository at this point in the history
  • Loading branch information
FHeilmann committed Dec 12, 2023
1 parent 46d8b8b commit 8df279e
Show file tree
Hide file tree
Showing 14 changed files with 449 additions and 123 deletions.
7 changes: 6 additions & 1 deletion .github/workflows/test_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
pull_request:
types: [opened, reopened, synchronize]
jobs:
test_job:
voron_ci:
env:
VORON_CI_OUTPUT: workflow_output
VORON_CI_STEP_SUMMARY: true
Expand Down Expand Up @@ -83,6 +83,11 @@ jobs:
README_GENERATOR_JSON: false
with:
args: generate-readme
# Store the PR number
- name: Store PR Number
if: '!cancelled()'
run: |
echo -n ${{ github.event.number }} > ${{ env.VORON_CI_OUTPUT }}/pr_number.txt
# Upload Artifact
- uses: actions/upload-artifact@65d862660abb392b8c4a3d1195a2108db131dd05
if: '!cancelled()'
Expand Down
166 changes: 164 additions & 2 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ license = "GPLv3"
readme = "README.md"

[tool.poetry.dependencies]
python = ">=3.11"
python = ">=3.11,<4.0"
admesh = "^0.98.9"
imagekitio = "^3.2.0"
tweaker3 = {git = "https://github.com/ChristophSchranz/Tweaker-3.git"}
Expand All @@ -16,6 +16,7 @@ gitpython = "^3.1.40"
requests = "^2.31.0"
configargparse = "^1.7"
loguru = "^0.7.2"
githubkit = "^0.10.7"


[tool.poetry.group.dev.dependencies]
Expand Down Expand Up @@ -67,7 +68,8 @@ check-stl-corruption = "voron_ci.tools.stl_corruption_checker:main"
check-stl-rotation = "voron_ci.tools.stl_rotation_checker:main"
check-mod-structure = "voron_ci.tools.mod_structure_checker:main"
check-whitespace = "voron_ci.tools.whitespace_checker:main"
upload-images = "voron_ci.tools.imagekit_uploader:main"
generate-readme = "voron_ci.tools.readme_generator:main"
upload-images = "voron_ci.utils.imagekit_uploader:main"
debug-container = "voron_ci.utils.debug_container:print_container_info"
sanitize-file-list = "voron_ci.utils.github_action_helper:GithubActionHelper.sanitize_file_list"
sanitize-file-list = "voron_ci.utils.file_helper:sanitize_file_list"
set-pr-comment-labels = "voron_ci.utils.pr_helper:main"
50 changes: 33 additions & 17 deletions voron_ci/constants.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,39 @@
from enum import IntEnum, StrEnum
from enum import Enum
from typing import NamedTuple

SUCCESS_LABEL: str = "PR: CI passed"
PR_COMMENT_TAG: str = "<!-- voron_docker_toolkit -->"

class ReturnStatus(IntEnum):
SUCCESS = 0
WARNING = 1
FAILURE = 2
EXCEPTION = 3

class StepResultCodeStr(NamedTuple):
result_code: int
result_str: str

class SummaryStatus(StrEnum):
SUCCESS = "✅ SUCCESS"
WARNING = "⚠️ WARNING"
FAILURE = "❌ FAILURE"
EXCEPTION = "💀 EXCEPTION"

class StepIdName(NamedTuple):
step_id: str
step_name: str
step_pr_label: str

EXTENDED_OUTCOME: dict[ReturnStatus, str] = {
ReturnStatus.SUCCESS: "success",
ReturnStatus.WARNING: "warning",
ReturnStatus.FAILURE: "failure",
ReturnStatus.EXCEPTION: "exception",
}

class StepResult(StepResultCodeStr, Enum):
SUCCESS = StepResultCodeStr(result_code=0, result_str="✅ SUCCESS")
WARNING = StepResultCodeStr(result_code=1, result_str="⚠️ WARNING")
FAILURE = StepResultCodeStr(result_code=2, result_str="❌ FAILURE")
EXCEPTION = StepResultCodeStr(result_code=3, result_str="💀 EXCEPTION")


class StepIdentifier(StepIdName, Enum):
WHITESPACE_CHECK = StepIdName(step_id="whitespace_check", step_name="Whitespace checker", step_pr_label="Issue: Whitespace")
ROTATION_CHECK = StepIdName(step_id="rotation_check", step_name="STL rotation checker", step_pr_label="Issue: STL Rotation")
CORRUPTION_CHECK = StepIdName(step_id="corruption_check", step_name="STL corruption checker", step_pr_label="Issue: STL Corruption")
README_GENERATOR = StepIdName(step_id="readme_generator", step_name="Readme generator", step_pr_label="Issue: Readme")
MOD_STRUCTURE_CHECK = StepIdName(step_id="mod_structure_check", step_name="Mod structure checker", step_pr_label="Issue: Mod Structure")


VORONUSERS_PR_COMMENT_SECTIONS: list[StepIdentifier] = [
StepIdentifier.WHITESPACE_CHECK,
StepIdentifier.MOD_STRUCTURE_CHECK,
StepIdentifier.CORRUPTION_CHECK,
StepIdentifier.ROTATION_CHECK,
]
12 changes: 6 additions & 6 deletions voron_ci/tools/mod_structure_checker.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import yaml
from loguru import logger

from voron_ci.constants import ReturnStatus
from voron_ci.constants import StepIdentifier, StepResult
from voron_ci.utils.action_summary import ActionSummaryTable
from voron_ci.utils.file_helper import FileHelper
from voron_ci.utils.github_action_helper import ActionResult, GithubActionHelper
Expand All @@ -28,7 +28,7 @@ class ModStructureChecker:
def __init__(self: Self, args: configargparse.Namespace) -> None:
self.input_dir: Path = Path(Path.cwd(), args.input_dir)
self.gh_helper: GithubActionHelper = GithubActionHelper(ignore_warnings=args.ignore_warnings)
self.return_status: ReturnStatus = ReturnStatus.SUCCESS
self.return_status: StepResult = StepResult.SUCCESS
self.check_summary: list[list[str]] = []

init_logging(verbose=args.verbose)
Expand All @@ -42,7 +42,7 @@ def _check_mods(self: Self) -> None:
if not Path(mod_folder, ".metadata.yml").exists():
logger.error("Mod '{}' is missing a metadata file!", mod_folder)
self.check_summary.append([mod_folder.relative_to(self.input_dir).as_posix(), FileErrors.mod_missing_metadata.value.format(mod_folder)])
self.return_status = ReturnStatus.FAILURE
self.return_status = StepResult.FAILURE
continue

metadata: dict[str, Any] = yaml.safe_load(Path(mod_folder, ".metadata.yml").read_text())
Expand All @@ -55,15 +55,15 @@ def _check_mods(self: Self) -> None:
if not Path(mod_folder, file).exists():
logger.error("File '{}' is missing in mod folder '{}'!", file, mod_folder)
self.check_summary.append([mod_folder.relative_to(self.input_dir).as_posix(), FileErrors.file_from_metadata_missing.value.format(file)])
self.return_status = ReturnStatus.FAILURE
self.return_status = StepResult.FAILURE

def _check_shallow_files(self: Self) -> None:
logger.info("Performing shallow file check")
files_folders = FileHelper.get_shallow_folders(input_dir=self.input_dir, max_depth=MOD_DEPTH - 1, ignore=IGNORE_FILES)
for file_folder in files_folders:
logger.warning("File '{}' outside mod folder structure!", file_folder)
self.check_summary.append([file_folder.relative_to(self.input_dir).as_posix(), FileErrors.file_outside_mod_folder.value.format(file_folder)])
self.return_status = ReturnStatus.FAILURE
self.return_status = StepResult.FAILURE

def run(self: Self) -> None:
logger.info("Starting files check in '{}'", str(self.input_dir))
Expand All @@ -73,7 +73,7 @@ def run(self: Self) -> None:

self.gh_helper.finalize_action(
action_result=ActionResult(
action_id="mod_structure_checker",
action_id=StepIdentifier.MOD_STRUCTURE_CHECK.step_id,
action_name="Mod structure checker",
outcome=self.return_status,
summary=ActionSummaryTable(
Expand Down
6 changes: 3 additions & 3 deletions voron_ci/tools/readme_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import yaml
from loguru import logger

from voron_ci.constants import ReturnStatus
from voron_ci.constants import StepIdentifier, StepResult
from voron_ci.utils.action_summary import ActionSummaryTable
from voron_ci.utils.github_action_helper import ActionResult, GithubActionHelper
from voron_ci.utils.logging import init_logging
Expand Down Expand Up @@ -88,9 +88,9 @@ def run(self: Self) -> None:

self.gh_helper.finalize_action(
action_result=ActionResult(
action_id="readme_generator",
action_id=StepIdentifier.README_GENERATOR.step_id,
action_name="Readme generator",
outcome=ReturnStatus.SUCCESS,
outcome=StepResult.SUCCESS,
summary=ActionSummaryTable(
title="Readme preview",
columns=["Creator", "Mod title", "Description", "Printer compatibility", "Last Changed"],
Expand Down
Loading

0 comments on commit 8df279e

Please sign in to comment.