{"id":48765543,"url":"https://github.com/ynput/ayon-automator","last_synced_at":"2026-04-13T07:49:54.381Z","repository":{"id":254255088,"uuid":"844505657","full_name":"ynput/ayon-automator","owner":"ynput","description":null,"archived":false,"fork":false,"pushed_at":"2024-10-30T10:03:23.000Z","size":127,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-13T07:49:53.753Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ynput.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-08-19T11:58:27.000Z","updated_at":"2024-10-30T10:03:23.000Z","dependencies_parsed_at":"2024-08-22T10:42:10.277Z","dependency_job_id":"d6e3d2ac-e9fd-4b12-9f7a-c2fe44808893","html_url":"https://github.com/ynput/ayon-automator","commit_stats":null,"previous_names":["ynput/ayon-automator"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ynput/ayon-automator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynput%2Fayon-automator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynput%2Fayon-automator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynput%2Fayon-automator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynput%2Fayon-automator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ynput","download_url":"https://codeload.github.com/ynput/ayon-automator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynput%2Fayon-automator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31744404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T06:26:45.479Z","status":"ssl_error","status_checked_at":"2026-04-13T06:26:44.645Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-13T07:49:53.081Z","updated_at":"2026-04-13T07:49:54.357Z","avatar_url":"https://github.com/ynput.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AyonCiCd-Automator\n\nAutomator is a toolkit for setting up build and test Stages to ease your\nDevelopment Workflow\n\n## Base Concepts\n\nAn Automator Project has 2 Parts to it. The Setup and the Project itself\n\n### Setup\n\nSetup in Automator in made from 2 parts\n\n1. in your project you can define packages that you want installed and a folder\n   structure named like your project will be created where everything is stored\n2. setup cmd command. Running the setup command will ultimately create the\n   output folder structure and the venv used to provide site packages to your\n   main python runner.\n\n### Project\n\nA project in Automator is just a named collection off stages and stage Groups\nthat you can make available to the Cli.\n\nProjects Are build from the following portions.\n\n1. Project definition\n   - Describes project Name and required pip packages\n   - Also holds all Variables, Stages and StageGrps\n2. Stage Definitions\n   - A list off functions and Artifact's that will be executed when stage\n     execute is called\n3. Stage Exec Groups (optional)\n   - an optional system that allows you to group stages to run them together,\n     this might be useful for tests where you might need a test build and a test\n     stage.\n\n### Cli Availability\n\nThis portion will describe what the Cli Availability exposes to you and why and\nwhen you might want to use it.\n\n- make_project_cli_available is a function run in a with block that allows you\n  to start stages and StageGrps from the cli.\n- its run within a with statement so that we can use the **exit** function to\n  write out everything that happened to the appropriate artifact file. thees\n  will later help when debugging because you will have everything that happened\n  available to you in your artifacts.\n\n```py\nwith ProjectName as PRJ:\n    PRJ.make_project_cli_available()\n```\n\nExample Usage `python AutomatorScript.py runStageGrp StageGrpName`\n\n- The make_project_cli_available function exposes the following functions\n\n| Variable          | Description                                                                                                                                                                                                        |\n| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `setup`           | Setup will setup the Venv and the output foulder it will also install all the pip packages inside off the venv. you will have to run this once before running annything else. the setup is precistent between runs |\n| `execSingleStage` | execSingleStage allows you to only run a single stage. this might be of interest if your rerunning tests and you only change the input data and not your code.                                                     |\n| `execAllStages`   | execAllStages will run all stages in the order they where added to the project.                                                                                                                                    |\n| `setVar`          | setVar allows you to set Variables from within your script or from the cli. they will also be stored in the Variables.json file and thereby be presisent                                                           |\n| `runStageGRP`     | runStageGRP allows you to run a single stage Grp this might be usefull if you need to complie your code without testing it.                                                                                        |\n\n- Theoretically the make_project_cli_available will expose all class functions\n  but its not advised to use it this way. But if you want to do so. Do it on\n  your own Risk\n\n# How to\n\n1. Clone the Repo into a convenient place in your project. (make sure that the\n   folder your copying to has no `-` in it as python dose not like them when\n   using `import`)\n\n### Define a Project\n\n```py\nfrom AyonCiCdAutomator import Project # import the Project portion off Automator (there are more functions and classes available)\nProject = Project.Project(\"Project\") # Define a project with what ever name you want. (this name will dictate the name off your Output foulder)\nProject.addPipPackage(\"pytest\") #(optional) define some packages that will be installed in the Venv that the setup function creats, currently pip is used in a very basic way for installing packages so only pip packages will be available (the venv survives reruns so pip will only run once)\n```\n\n### Define a stage\n\n```py\nStage = Project.Stage(\"StageName\") # The stage name is the name that execSingleStage will take in order to run your stage from the CLI\nStage.add_funcs(lambda: someFunc(),) # addFuncs allows you to add functions to your stages. they will be run in sequence in the same order as defined here. you can add as many as you want\nBuildStage.addArtefactFoulder(\"/path/to/artefacts/foulder\") # adding artifacts allows you to copy things that e.g your build process created to the Automator Project artifacts folder so you can upload everything together. (this function also allows adding files btw)\nProject.add_stage(Stage)\n```\n\n### Define a stageGRP (Optional)\n\n```py\nProject.CreateStageGRP(\"StageGrpName\", StageInstanceA, StageInstanceB)\n```\n\n### Make your project available to the Cli\n\n```py\nwith ProjectName as PRJ:\n    PRJ.make_project_cli_available() # make_project_cli_available should be the last thing in your project file as everything after this will not be available to the CLI\n```\n\n## How to use your project\n\nThe Setup command will Create your project with an Venv and install all the\npackages you added Via addPipPackage.\n\n`python AyonBuild.py setup`\n\nThe `execSingleStage` or `runStageGRP` commands allow you to run a single stage\nor a StageGrp respectively. both off these functions will append the venv\nsite-packages to your current site packages and thereby make them available to\nyour current python instance\n\n`python AyonBuild.py execSingleStage StageName`\n`python AyonBuild.py runStageGRP StageGRPName`\n\nThe `execAllStages` allows you to run all stages defined in your project. this\nmight be great if you only defined stages that you want to run together, in this\ncase you could skip creating a StageGrp and run use this function instead.\n\n`python AyonBuild.py execAllStages`\n\n\n\n## Generate Documentation \nDocumentatoin is build with sphinx and autogenerated from the source code.\n`sphinx-build -b html docs/source docs/build/html`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fynput%2Fayon-automator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fynput%2Fayon-automator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fynput%2Fayon-automator/lists"}