{"id":38044153,"url":"https://github.com/operate-first/robozome","last_synced_at":"2026-01-20T17:20:45.949Z","repository":{"id":41101024,"uuid":"506694481","full_name":"operate-first/robozome","owner":"operate-first","description":"Project to automate issue processing for Operate First","archived":false,"fork":false,"pushed_at":"2026-01-13T00:58:41.000Z","size":604,"stargazers_count":0,"open_issues_count":13,"forks_count":8,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-13T04:40:48.893Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/operate-first.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","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":"2022-06-23T15:29:23.000Z","updated_at":"2023-01-31T19:58:56.000Z","dependencies_parsed_at":"2025-06-01T01:42:31.156Z","dependency_job_id":"8cc5c6dd-02af-4d31-ab14-5b8bf1415bd3","html_url":"https://github.com/operate-first/robozome","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"operate-first/probot-template","purl":"pkg:github/operate-first/robozome","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/operate-first%2Frobozome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/operate-first%2Frobozome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/operate-first%2Frobozome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/operate-first%2Frobozome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/operate-first","download_url":"https://codeload.github.com/operate-first/robozome/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/operate-first%2Frobozome/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28607626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T16:10:39.856Z","status":"ssl_error","status_checked_at":"2026-01-20T16:10:39.493Z","response_time":117,"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":["hacktoberfest"],"created_at":"2026-01-16T19:56:45.638Z","updated_at":"2026-01-20T17:20:45.908Z","avatar_url":"https://github.com/operate-first.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Robozome - Github Issue form automation via Tekton\n\nRobozome allows you to create an automated workflow that consumes a GitHub issue form, and automatically creates a\npull request based of those form inputs against a repo of your choice. You supply the form and input handling logic,\nand Robozome takes care of the rest.\n\n### How it works\n\nIn the background, Robozome reads [Github Issue Forms][1] and uses the Operate-First issue-form [parser][2] to convert\nthe form into a machine readable format. The issue form specifies, in the form of GitHub labels:\n* the location of the input handling logics (scripts)\n* the target repo where this logic resides, and where the resulting PR will be created\n* the type of task (tekton `Task`) to execute (e.g. if using bash scripts as your input logic, you would use the\n  Tekton `task-type:bash`)\n\n### Quickstart via Openshift (OCP)\n\n\u003e Note: this is for a quickstart prod deployment, for development follow the [contributing guide](CONTRIBUTING.md).\n\nPre-requisites:\n* Before starting, you will need an OCP cluster (you can use a Kubernetes cluster, but you'll need to replace the\n`routes` with `ingresses`, or expose the `Robozome` some other way).\n* Openshift Cluster with project admin in at least one namespace\n* Openshift Cluster with Openshift Pipelines or Tekton installed\n* Github user account, or organization with owner access\n\nCreate the app on your GH user or organization following [these instructions][3].\n\nLeave the `webhook url` field empty for now. Give it a name, description, homepage url, as you see fit.\n\nWhen creating the app, be sure to create a WebHook secret, the instructions will say it's optional, but for our purposes\nit's required. Save this secret. We'll refer to this value as `$WEBHOOK_SECRET`.\n\nCreate the app.\n\nYou will also be given a private key, save this as well (you can also [re-generate a new one][4] if you lose it).\nWe'll refer to this value as `$PRIVATE_KEY`.\n\nAlso note down the GitHub app's id. We'll refer to this value as `$APP_ID`.\n\u003e Note you can find the app id by navigating to [app config][5].\n\nNow install it into your GitHub org, when installing your app ensure your app has access to at least 2 repos:\n* one repo where your issue forms will be created\n* another repo where you will house your issue form input logic, and where the pr will be created (must be same repo)\n\nRun the following in your terminal:\n\n```bash\n$ cd $(mktemp -d)\n$ git clone https://github.com/operate-first/robozome.git\n$ cd robozome/manifests/robozome\n\n$ cat \u003c\u003c EOF \u003e secret.yaml\napiVersion: v1\nkind: Secret\nmetadata:\n  name: robozome\n  annotations:\n    kustomize.config.k8s.io/behavior: replace\nstringData:\n  app_id: $APP_ID\n  private_key: $PRIVATE_KEY\n  webhook_secret: \"$WEBHOOK_SECRET\nEOF\n```\nFill out `$APP_ID`, `$PRIVATE_KEY`, `$WEBHOOK_SECRET` in the above secret with the values we obtained earlier.\n\nNow deploy the robozome app in your OCP namespace:\n```bash\n\n$ oc apply -f secret.yaml\n$ kustomzie build . | oc apply -n $YOUR_NAMESPACE -f -\n```\n\nGet the route:\n```bash\nWEBHOOK_URL=\"http://$(oc get routes -n robozome robozome --template={{.spec.host}})\"\n```\n\nNavigate back to your GitHub app [config settings][5], and replace the webhook URL with `$WEBHOOK_URL`.\n\n### Adding New Issue forms and input logic\n\n* Assume the repo we're putting our issue forms in is called `$FORMS_REPO`\n* Assume the repo we're putting our pr creation input logic is called `$SCRIPTS_REPO`\n\nIn the repo `$FORMS_REPO`, create an [issue form][1], the issue form must have these 3 GitHub labels:\n* `task-type:$TASK-TYPE`, the value of `$TASK-TYPE` dictates the Tekton task that will be run (currently only `bash` is possible)\n* `repo:$SCRIPTS_REPO`, value of `$SCRIPTS_REPO` decided earlier\n* `script:$SCRIPTS_PATH`, the location of the script that will process the issue form within `$SCRIPTS_REPO` (relative to root of repo)\n\nBe sure to also create these lables within the `$FORMS_REPO` repository.\n\nNow, in the repo `$SCRIPTS_REPO` add the script that will be executed in the location: `$SCRIPTS_PATH`.\n\nIn the automation script, you have the following environment variables available:\n\n* PAYLOAD_PATH - location of the issue form inputs, [see here][2] for the format\n* ORG_NAME - the organization this app is deployed in, and where issue/form creation/responses are being generated\n* SOURCE_REPO - The repo where the issue was created\n* ISSUE_NUMBER - The number of the issue where the issue form was created\n\n### Bash task-type\nIf creating a bash script to put in `$SCRIPTS_REPO`, your issue should be wrapped in the following code:\n\n```bash\nset -o allexport -o pipefail -ex\n\n# YOUR CODE GOES HERE\n\n# ALWAYS END IN A COMMIT, DO NOT PUSH.\ncd ${REPO}\ngit add YOUR-CHANGES\ngit commit -m \"COMMIT MESSAGE\"\n\nset -o allexport\n```\n\n### Adding new Task Types\nTask types are located [here][6]. They are regular Tekton `Tasks`. To add a new task type, create a Task with the name\n`issue-form-automation-$YOUR-TYPE`, replace `$YOUR-TYPE` accordingly.\n\nAdd the Task to the pipeline [here][7].\n\n### Robozome commands\n\nOn issue forms, you can run a couple of helpful commands:\n\n* `/robozome retry` : will re-run the automation pipeline against the designated script\n* `/robozome payload` : will show what the payload in $PAYLOAD_PATH will look like, this is useful when generating your\n  own scripts for execution against the issue form input.\n\n### Contributing guide\n\nTo contribute to Robozome app, please follow the [contributing.md](CONTRIBUTING.md) instructions.\n\n[1]: https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms\n[2]: https://github.com/operate-first/probot-extensions/tree/main/packages/probot-issue-form\n[3]: https://docs.github.com/en/developers/apps/building-github-apps/creating-a-github-app\n[4]: https://docs.github.com/en/developers/apps/building-github-apps/authenticating-with-github-apps\n[5]: https://docs.github.com/en/developers/apps/managing-github-apps/modifying-a-github-app\n[6]: https://github.com/operate-first/robozome/tree/main/manifests/robozome/tasks\n[7]: https://github.com/operate-first/robozome/blob/main/manifests/robozome/pipelines/issue-form-pipeline.yaml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foperate-first%2Frobozome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foperate-first%2Frobozome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foperate-first%2Frobozome/lists"}