{"id":18926052,"url":"https://github.com/getpagespeed/buildstrap","last_synced_at":"2026-03-15T00:30:17.518Z","repository":{"id":134154127,"uuid":"386720584","full_name":"GetPageSpeed/buildstrap","owner":"GetPageSpeed","description":"Bootstrap generation of CircleCI configuration for RPM builds","archived":false,"fork":false,"pushed_at":"2025-01-27T03:27:06.000Z","size":254,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-27T04:24:36.428Z","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/GetPageSpeed.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}},"created_at":"2021-07-16T17:49:01.000Z","updated_at":"2025-01-27T03:27:09.000Z","dependencies_parsed_at":"2024-04-27T04:29:10.028Z","dependency_job_id":"fd28a7b3-b9c6-4b58-b239-217a968abef8","html_url":"https://github.com/GetPageSpeed/buildstrap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetPageSpeed%2Fbuildstrap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetPageSpeed%2Fbuildstrap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetPageSpeed%2Fbuildstrap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GetPageSpeed%2Fbuildstrap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GetPageSpeed","download_url":"https://codeload.github.com/GetPageSpeed/buildstrap/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239921837,"owners_count":19718844,"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":[],"created_at":"2024-11-08T11:14:21.649Z","updated_at":"2026-03-15T00:30:17.455Z","avatar_url":"https://github.com/GetPageSpeed.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# buildstrap\n\nBootstrap generation of CircleCI config.yml for RPM builds of the latest OS releases.\nCreates `generated_config.yml` that builds and deploys RPM against supported OS versions.\n\n## Benefits\n\nThis allows for a more centralized and unified `config.yml` across many spec repositories.\nFurthermore, the `config.yml` itself becomes more dynamic and auto-maintained to have builds\nagainst recent operating systems.\n\n## Setup\n\nThe buildstrap automatically updates `generated_config.yml` by running `~/buildstrap/cron.sh` on\nthe GetPageSpeed build server daily.\n\nThe list of operating systems supported can be updated in `matrix.yml`.\nThe `rpmbuilder` images are tagged based on expected RPM dist tag of an operating system, e.g.\n`getpagespeed/rpmbuilder:amzn2`.\n\nSo `matrix.yml` file simply specifies the operating system label as understood by `lastversion` and\ntheir corresponding dist tag in order to build against the correct `rpmbuilder` image.\n\nThe `matrix.json` file contains all distros and their versions, used in various workflows.\n\nAs a special case, we also create `generated_config_nginx.yml` which creates workflows bound to\nthe many branches of NGINX we build against: `master` (aka `stable`), `mainline` and `plesk`.\n\nExample of implementation can be found in nginx-module-pagespeed-rpm.\n\n### Project setup\n\n```bash\ncd /rpm/project/dir\nmkdir -p .circleci\ncurl https://raw.githubusercontent.com/GetPageSpeed/buildstrap/main/config.yml -o .circleci/config.yml\n```\n\nFor memory/CPU intensive builds, run this instead:\n\n```bash\ncd /rpm/project/dir\nmkdir -p .circleci\ncurl https://raw.githubusercontent.com/GetPageSpeed/buildstrap/main/config_large.yml -o .circleci/config.yml\n```\n\nIn other words, copy `config.yml` (single branch project) or `config_nginx.yml` (NGINX module project) into\n`.circleci/config.yml' of a spec project. Use `config_large.yml` for \"heavy\" binaries which\nlikely to exceed RAM on the small default CircleCi resource class.\n\nIn CircleCi, navigate to Project settings \u003e Advanced -\u003e Dynamic config using setup workflows.\n\n## Usage in a spec project repository\n\nRefer to [`wrk` example](https://github.com/GetPageSpeed/wrk-rpm/blob/master/.circleci/config.yml).\nIn the static config.yml we use `setup: true` and fetch the recent `generated_config.yml`.\n\nIn this way, whenever the software is updated (GitHub repo is changed), we build it against desired\nset of operating systems.\n\nHowever, when a new operating system is released, there is no automatic rebuild of the package.\nThis can be implemented by triggering CircleCi workflows for individual spec projects using API.\n\nFor a software that is regularly updated, triggering workflows isn't required...\n\nAnyway, triggering the build is possible via API like the following, e.g.:\n\n```bash\ncurl --request POST \\\n  --url https://circleci.com/api/v2/project/github/GetPageSpeed/guetzli-rpm/pipeline \\\n  --header 'Circle-Token: xxx' \\\n  --header 'content-type: application/json' \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetpagespeed%2Fbuildstrap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetpagespeed%2Fbuildstrap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetpagespeed%2Fbuildstrap/lists"}