{"id":21085861,"url":"https://github.com/zbeekman/brew-gha-profiling","last_synced_at":"2026-02-22T14:04:30.177Z","repository":{"id":152719832,"uuid":"237983147","full_name":"zbeekman/brew-GHA-profiling","owner":"zbeekman","description":"Get detailed homebrew config and profile installations on GH Actions","archived":false,"fork":false,"pushed_at":"2024-09-03T21:00:32.000Z","size":770,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-19T20:50:59.708Z","etag":null,"topics":["actions","brew","github-actions","homebrew","profiling"],"latest_commit_sha":null,"homepage":"http://izaakbeekman.com/brew-GHA-profiling","language":"Shell","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/zbeekman.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}},"created_at":"2020-02-03T14:22:05.000Z","updated_at":"2021-09-06T10:29:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"912a021c-013e-4851-89b4-2d010e11492d","html_url":"https://github.com/zbeekman/brew-GHA-profiling","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/zbeekman%2Fbrew-GHA-profiling","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbeekman%2Fbrew-GHA-profiling/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbeekman%2Fbrew-GHA-profiling/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zbeekman%2Fbrew-GHA-profiling/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zbeekman","download_url":"https://codeload.github.com/zbeekman/brew-GHA-profiling/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234875009,"owners_count":18900063,"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":["actions","brew","github-actions","homebrew","profiling"],"created_at":"2024-11-19T20:37:00.588Z","updated_at":"2025-10-01T14:30:37.769Z","avatar_url":"https://github.com/zbeekman.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Profiling and Getting Detailed Homebrew-on-Github-Actions Setup Information\n\n| Push build | ![Build (push)](https://github.com/zbeekman/brew-GHA-profiling/workflows/Brew%20Info/badge.svg?event=push) |\n| ---: | --- |\n| __Cron deploy__ | ![Cron Deploy](https://github.com/zbeekman/brew-GHA-profiling/workflows/Brew%20Info/badge.svg?event=schedule) |\n\n## About\n\nThis repository generates timing and configuration data for the default [Homebrew] installation on GitHub Actions `macos-latest` runner.\nTo browse a very thorough dump of the default [Homebrew] configuration and default packages visit the [`gh-pages` branch],\nor the [rendered website]. (http://izaakbeekman.com/brew-GHA-profiling)\n\n[Homebrew]: https://brew.sh\n[`gh-pages` branch]: https://github.com/zbeekman/brew-GHA-profiling/tree/gh-pages\n[rendered website]: https://izaakbeekman.com/brew-GHA-profiling\n\n## Status\n\nCurrently, I'm collecting samples of baseline timing data so I can try to see if any of my hand tuning optimizations make any difference.\nYou can browse the CSV files on the [`gh-pages` branch] or by following the links on the [rendered website].\nI set the workflow to run, in theory, every hour, so if all goes to plan there will be about 24 baseline cases soon.\nThen I will move on to some optimization experiments.\n\n## Planned optimization experiments\n\n### Tweaking environment variables\n\nBy default, it looks like GitHub is turning off automatic update checking with `HOMEBREW_NO_AUTO_UPDATE`, which is a good start.\nI'm going to test (in batch) the following additional variables that may (or may not) improve install times:\n\n- `HOMEBREW_NO_ANALYTICS`\n- `HOMEBREW_NO_GITHUB_API`\n- `HOMEBREW_NO_INSTALL_CLEANUP`\n- `HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK`\n\nThe last option won't make a difference most of the time,\nbut it will cause you job to fail rather than attempt to build tooling from source when there is a binary package available yet.\nThis is only relavent when there is a network hiccup or some other similar exception and homebrew cannot fetch a bottle for a package.\nBut this will save GitHub some compute time and make it so that your CI jobs fail rapidly rather than compile a whole bunch of tooling from source.\n\n### Caching\n\nThe next optimization attempt will be to cache and restore the `$(brew --cache)` directory.\nInitial experiments suggest that GitHub actions are not proxying downloads, but this may be incorrect.\nIf we can do this ourselves, we should see a bit of a speedup.\nIt would be nice to cache more homebrew state, including the entire dependency tree of the requested packages in the Cellar,\nbut, these files may be to large and there's no good/easy way that I know of to extract and cache just the requested packages (and their dependencies).\n\n[workflows]: ./.github/workflows\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzbeekman%2Fbrew-gha-profiling","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzbeekman%2Fbrew-gha-profiling","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzbeekman%2Fbrew-gha-profiling/lists"}