{"id":20669763,"url":"https://github.com/linuxfabrik/github-project-createrepo","last_synced_at":"2026-03-07T04:33:29.922Z","repository":{"id":220557568,"uuid":"751920751","full_name":"Linuxfabrik/github-project-createrepo","owner":"Linuxfabrik","description":"A script to download RPM release assets from GitHub and create a RPM repository using createrepo. Runs on RHEL 8.","archived":false,"fork":false,"pushed_at":"2025-05-05T09:33:08.000Z","size":15,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-14T04:24:23.595Z","etag":null,"topics":["github","linuxfabrik","rpm"],"latest_commit_sha":null,"homepage":"https://linuxfabrik.ch","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Linuxfabrik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-02-02T16:08:53.000Z","updated_at":"2025-05-05T09:33:12.000Z","dependencies_parsed_at":"2025-01-17T13:30:58.433Z","dependency_job_id":"1c08ae43-5b76-4b1d-83ac-93e57d4f4be6","html_url":"https://github.com/Linuxfabrik/github-project-createrepo","commit_stats":null,"previous_names":["linuxfabrik/github-project-createrepo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Linuxfabrik/github-project-createrepo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Linuxfabrik%2Fgithub-project-createrepo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Linuxfabrik%2Fgithub-project-createrepo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Linuxfabrik%2Fgithub-project-createrepo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Linuxfabrik%2Fgithub-project-createrepo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Linuxfabrik","download_url":"https://codeload.github.com/Linuxfabrik/github-project-createrepo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Linuxfabrik%2Fgithub-project-createrepo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30208085,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T03:24:23.086Z","status":"ssl_error","status_checked_at":"2026-03-07T03:23:11.444Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["github","linuxfabrik","rpm"],"created_at":"2024-11-16T20:16:01.278Z","updated_at":"2026-03-07T04:33:29.871Z","avatar_url":"https://github.com/Linuxfabrik.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Project Createrepo\n\nA script to download RPM release assets from GitHub and create a RPM repository using `createrepo`.\n\nRuns on\n\n* RHEL 8 (and compatible)\n\n\n## Installation\n\nRecommended: Use the [linuxfabrik.lfops.github_project_createrepo LFOps Ansible Role](https://github.com/Linuxfabrik/lfops/tree/main/roles/github_project_createrepo). Alternatively, follow the manual steps below.\n\nClone this repo:\n\n```bash\ncd /opt\ngit clone --recurse-submodules https://github.com/Linuxfabrik/github-project-createrepo.git\n```\n\nCreate your configuration. The default path is `/etc/github-project-createrepo.yml`. Have a look at the `/opt/github-project-createrepo/example.yml` file and the Synopsis below.\n\nInstall the `createrepo` package.\n\nUse a web server that points to the directory named `base_path` in the configuration file.\n\nIf using systemd, set up the timer and service to update your repositories at regular intervals:\n\n```bash\nuseradd --system --home-dir /opt/github-project-createrepo --shell /bin/false github-project-createrepo\n\ncd /opt/github-project-createrepo\ncp -v systemd/github-project-createrepo.service /etc/systemd/system/github-project-createrepo.service\ncp -v systemd/github-project-createrepo.timer /etc/systemd/system/github-project-createrepo.timer\n\n# adjust the OnCalendar option\n$EDITOR /etc/systemd/system/github-project-createrepo.timer\n\nsystemctl daemon-reload\nsystemctl enable --now github-project-createrepo.timer\n\n# make sure the base path exists and can be access both by the webserver user and the github-project-createrepo user\nwebserver_user=apache\nbase_path='/var/www/html/github-repos'\n\nmkdir -p \"$base_path\"\n\nsetfacl --recursive --modify user:$webserver_user:rwx \"$base_path\"\nsetfacl --default --recursive --modify user:$webserver_user:rwx \"$base_path\"\n\nsetfacl --recursive --modify group:$webserver_user:rx \"$base_path\"\nsetfacl --default --recursive --modify group:$webserver_user:rx \"$base_path\"\n\nsetfacl --recursive --modify user:github-project-createrepo:rwx \"$base_path\"\nsetfacl --default --recursive --modify user:github-project-createrepo:rwx \"$base_path\"\n```\n\n\n## Configuration\n\nAn example configuration to create a repository for [mydumper](https://github.com/mydumper/mydumper):\n\n```yaml\nbase_path: '/var/www/html/github-repos'\n\ngithub_repos:\n  - github_user: 'mydumper'\n    github_repo: 'mydumper'\n    relative_target_path: 'mydumper/el/8'\n    rpm_regex: 'mydumper-{latest_version}-\\d\\+.el8.x86_64.rpm'\n```\n\nFull reference:\n\n`base_path`: Mandatory, string. Directory under which all the repos will be placed. This directory has to exist already and should be served by a webserver.\n\n`github_repos`: Optional, list. List of repositories to create from GitHub the latest release assets.\u003cbr\u003eSubkeys:\n\n* `github_user`: Mandatory, string. The username of the GitHub repo path. For example, `'Linuxfabrik'`.\n* `github_repo`: Mandatory, string. The repo name. For example, `'github-project-createrepo'`.\n* `relative_target_path`: Mandatory, string. Target path where the repo should be placed, relative to `base_path`.\n* `rpm_regex`: Optional, string. A [Python Regular Expression](https://docs.python.org/3/howto/regex.html) which will be matched against the names of the release assets to select the correct RPM file. You can use `{latest_version}` as a placeholder, which will be replaced by the latest version (retrieved via the GitHub API) before matching. Note that the regex should only match one file, as the first matching file will be downloaded. Defaults to `'.*{latest_version}.*\\.rpm'`.\n* `number_of_rpms_to_keep`: Optional, int. Number of older RPM files to keep. Note that this simply deletes all older files matching `*.rpm` in the target path directory. Defaults to `3`.\n\n\n## Exit Codes\n\n* 0: success / config valid\n* 1: failed to read config / config invalid\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinuxfabrik%2Fgithub-project-createrepo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinuxfabrik%2Fgithub-project-createrepo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinuxfabrik%2Fgithub-project-createrepo/lists"}