{"id":15051168,"url":"https://github.com/blankon/irgsh-go","last_synced_at":"2026-04-03T10:02:05.044Z","repository":{"id":36374838,"uuid":"150426410","full_name":"BlankOn/irgsh-go","owner":"BlankOn","description":"An all-in-one tool to create and maintain Debian-derived GNU/Linux distribution: from packaging to repository, from ISO build to release management.","archived":false,"fork":false,"pushed_at":"2024-09-03T22:19:17.000Z","size":5274,"stargazers_count":24,"open_issues_count":31,"forks_count":15,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-03-24T04:11:25.774Z","etag":null,"topics":["automation","blankon","build","debian","golang","hacktoberfest","irgsh","linux","packaging","repository"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BlankOn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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}},"created_at":"2018-09-26T12:53:59.000Z","updated_at":"2024-10-07T10:49:41.000Z","dependencies_parsed_at":"2024-09-29T02:40:53.565Z","dependency_job_id":null,"html_url":"https://github.com/BlankOn/irgsh-go","commit_stats":null,"previous_names":[],"tags_count":88,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlankOn%2Firgsh-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlankOn%2Firgsh-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlankOn%2Firgsh-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlankOn%2Firgsh-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BlankOn","download_url":"https://codeload.github.com/BlankOn/irgsh-go/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248144921,"owners_count":21055008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["automation","blankon","build","debian","golang","hacktoberfest","irgsh","linux","packaging","repository"],"created_at":"2024-09-24T21:31:23.525Z","updated_at":"2026-01-08T14:15:34.770Z","avatar_url":"https://github.com/BlankOn.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# irgsh-go\n\n[![Actions Status](https://github.com/BlankOn/irgsh-go/workflows/master/badge.svg)](https://github.com/BlankOn/irgsh-go/actions) [![Go Report Card](https://goreportcard.com/badge/github.com/BlankOn/irgsh-go)](https://goreportcard.com/report/github.com/BlankOn/irgsh-go) [![codecov](https://codecov.io/gh/BlankOn/irgsh-go/branch/master/graph/badge.svg)](https://codecov.io/gh/BlankOn/irgsh-go) [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/BlankOn/irgsh-go)\n\nIRGSH (https://groups.google.com/d/msg/blankon-dev/yvceclWjSw8/HZUL_m6-BS4J, pronunciation: *irgis*) is an all-in-one tool to create and maintain Debian-derived GNU/Linux distribution: from packaging to repository, from ISO build to release management. This codebase is a complete rewrite of the old IRGSH components (https://github.com/BlankOn?q=irgsh).\n\nThis is still under heavy development, therefore you should not rely on this for production since it still subject to breaking API changes.\n\nPatches, suggestions and comments are welcome!\n\n## Complete installation\n\n\nYou need Docker, Redis and these packages,\n\n```\ngpg pbuilder debootstrap devscripts curl reprepro dh-make\n```\n\nInstall all deps + released IRGSH with this command bellow,\n\n```\ncurl -L -o- https://raw.githubusercontent.com/BlankOn/irgsh-go/master/install.sh | bash\n```\n\nThe command will install the irgsh binaries, default configuration and daemons. A spesial user named `irgsh` will also be added to your system.\n\n## Package maintainer installation\n\n```\ncurl -L -o- https://raw.githubusercontent.com/BlankOn/irgsh-go/master/install-cli.sh | bash\n```\n\nThe command will install the irgsh-cli binary to your system.\n\n## Package maintainer update\n\nPackage maintainer can update their irgsh-cli by running the same command as installation or using `sudo irgsh-cli update` to let irgsh-cli updates itself.\n\n## Components\n\nA minimal IRGSH ecosystem contains three services and a CLI tool.\n\n- `irgsh-chief` acts as the master. The others (also applied to`irgsh-cli`) will talk to the chief. The chief also provides a web user interface for workers and pipelines monitoring.\n- `irgsh-builder` is the builder worker of IRGSH.\n- `irgsh-repo` will serves as repository so it may need huge volume of storage.\n- `irgsh-cli` is a client-side tool to maintain packages.\n\n### Architecture\n\n\u003cimg src=\"utils/assets/irgsh-distributed-architecture.png\"\u003e\n\n\u003cimg src=\"utils/assets/irgsh-flow.png\"\u003e\n\nGPG signature is used as authentication bearer on any submission attempt. Hence, you will need to register maintainer's public key to `irgsh`'s GPG keystore (read Initial setup).\n\n## Initial setup\n\n#### IRGSH\n\nPlease refer to `/etc/irgsh/config.yaml` for available preferences. Change it as you need.\n\n```\nirgsh-init\n```\n\n#### CLI tool\n\nThis CLI tool intended to be used on maintainer's local system. It need to be configured first to define the `irgsh-chief` instance address and your GPG key as package mantainer,\n\n```\nirgsh-cli config --chief http://irgsh.blankonlinux.or.id:8080 --key B113D905C417D9C31DAD9F0E509A356412B6E77F\n```\n\n#### Registering a maintainer\n\nA maintaner should have a GPG keypair on his machine. His/her public key need to be registered to `irgsh`'s GPG key store.\n\nExport maintainer's GPG public key\n\n```\ngpg --armor --export 0D7D9A42E03ACFA2933227F7A13769F4DB99B6CD \u003e /path/to/maintainer-public.key\n```\n\nThe `public.key` file need to be transfered into where `irgsh-chief` live. Then import the maintainer's public key (on behalf of `irgsh`),\n\n```\ngpg --import \u003c /path/to/maintainer-public.key\n```\n\nYou can check the list of registered maintainer (on behalf of `irgsh`),\n\n```\ngpg -k\n```\n\n## Run\n\n#### The Services\n\nYou can start them with,\n\n```\nsudo systemctl start irgsh-chief\nsudo systemctl start irgsh-builder\nsudo systemctl start irgsh-repo\n```\nTheir logs are available at `/var/log/irgsh/`. After these three services are up and running, you may continue to work with `irgsh-cli`\n\n#### CLI\n\nSubmit a package,\n\n```\nirgsh-cli submit --source https://github.com/BlankOn/bromo-theme.git --package https://github.com/BlankOn-packages/bromo-theme.git\n```\n\nCheck the status of a pipeline,\n\n```\nirgsh-cli status 2019-04-01-174135_1ddbb9fe-0517-4cb0-9096-640f17532cf9\n```\n\nInspect the log of a pipeline,\n\n```\nirgsh-cli log  2019-04-01-174135_1ddbb9fe-0517-4cb0-9096-640f17532cf9\n```\n\nRunning `irgsh-cli status` and `irgsh-cli log` without argument will referenced to the latest submitted pipeline ID.\n\n## FAQ\n\n### Why rewrite it?\n\nIRGSH was written in Python 2.6.x and it depends on some old and deprecated libraries. Even one of them (in a specific version, respectively) is no longer exists on the internet. A real dependency hell. It’s hard to deploy IRGSH in a modern operating system and it keeps alynne.blankonlinux.or.id from an important system upgrade. The IRGSH was also very modular but combining them into a working distributed cluster takes time and quite steep learning curve. We still need to prepare a lot of things manually before doing that. Pbuilder needs to be configured and setup. Which also true for the reprepro repository. No easy way.\n\nAlthough, there is no doubt that the old IRGSH does its work well.\n\n### Why Go?\n\nFor its portable compiled binary.\n\n### Can I run the workers on different machines?\n\nYou can. Just make sure these workers pointed out to the same Redis server (see `/etc/irgsh/config.yaml`). Also please consider this, https://redis.io/topics/security.\n\n### Why is Docker required?\n\nTo build a package using `pbuilder`, `sudo` or root privilege is required but it's not okay to rely on root privilege for repetitive tasks. To get rid of this, we containerized the build process.\n\n## Troubleshooting notes\n\n### No secret key\n\nThe error message may be like this,\n```\ngpg: skipped \"41B4FC0A57E7F7F8DD94E0AA2D21BB5FAA32AF3F\": No secret key\ngpg: /tmp/debsign.QNCSozgK/blankon-keyring_2016.09.04-4.2.dsc: clear-sign failed: No secret key\ndebsign: gpg error occurred!  Aborting....\ndebuild: fatal error at line 1112:\nrunning debsign failed\n```\n\nIt may caused either by:\n\n- Your defined key for signing is not available on your GPG keystore. Please redefine it with `rgsh-cli config --chief https://irgsh.blankonlinux.or.id --key YOURKEYIDENTITY`\n- The latest maintainer information that written in the debian/changelog does not matched with the one on your GPG keystore. Please adjust the changelog file.\n\n## Todos\n\n### CLI\n\n- Submit :heavy_check_mark:\n- GPG signing :heavy_check_mark:\n- Logging :heavy_check_mark:\n\n### Chief\n\n- Auth (GPG or mutual auth) :heavy_check_mark:\n- WebSocket\n- Builder registration\n- Repo registration\n\n### Builder\n\n- Init:\n  - base.tgz :heavy_check_mark:\n- Clone :heavy_check_mark:\n- Signing :heavy_check_mark:\n- Build :heavy_check_mark:\n- Upload :heavy_check_mark:\n- Dockerized pbuilder :heavy_check_mark:\n- Multiarch support\n- RPM support\n\n### Repo\n\n- Init :heavy_check_mark:\n- Sync :heavy_check_mark:\n- Download :heavy_check_mark:\n- Inject :heavy_check_mark:\n- Rebuild repo :heavy_check_mark:\n- Multiarch support\n- RPM support\n\n### PabrikCD\n\n- Build\n- Upload\n\n### Release management\n\n- Release cycle (RC, alpha, beta, final)\n- Patches/Updates after release\n\n### Others\n\n- No sudo needed :heavy_check_mark:\n- Daemonized instances :heavy_check_mark:\n- Dockerized instances (docker-compose)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblankon%2Firgsh-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblankon%2Firgsh-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblankon%2Firgsh-go/lists"}