{"id":42514766,"url":"https://github.com/boringcache/buildkit-action","last_synced_at":"2026-03-10T22:15:00.376Z","repository":{"id":332334532,"uuid":"1132943310","full_name":"boringcache/buildkit-action","owner":"boringcache","description":"Cache BuildKit layers with BoringCache for raw buildctl builds.","archived":false,"fork":false,"pushed_at":"2026-03-05T13:04:47.000Z","size":2612,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-05T13:45:33.937Z","etag":null,"topics":["caching","ci","cicd","dependency-management","github-actions","utilities"],"latest_commit_sha":null,"homepage":"https://boringcache.com","language":"TypeScript","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/boringcache.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-12T17:01:30.000Z","updated_at":"2026-03-05T13:04:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"81b9f47f-3a66-4e58-b200-9564758dcec1","html_url":"https://github.com/boringcache/buildkit-action","commit_stats":null,"previous_names":["boringcache/buildkit-action"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/boringcache/buildkit-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boringcache%2Fbuildkit-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boringcache%2Fbuildkit-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boringcache%2Fbuildkit-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boringcache%2Fbuildkit-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boringcache","download_url":"https://codeload.github.com/boringcache/buildkit-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boringcache%2Fbuildkit-action/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30132585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T14:41:47.141Z","status":"ssl_error","status_checked_at":"2026-03-05T14:41:21.567Z","response_time":93,"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":["caching","ci","cicd","dependency-management","github-actions","utilities"],"created_at":"2026-01-28T14:34:56.732Z","updated_at":"2026-03-05T15:00:38.312Z","avatar_url":"https://github.com/boringcache.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# boringcache/buildkit-action\n\nCache BuildKit layers with BoringCache for raw `buildctl` builds. Runs a local OCI registry proxy for lazy layer restore.\n\nLayers are fetched on demand during `buildctl build` and pushed through the proxy — no bulk restore/save steps needed. Caches are content-addressed — identical content is never re-uploaded.\n\n## Quick start\n\n```yaml\n- uses: boringcache/buildkit-action@v1\n  with:\n    buildkit-host: tcp://127.0.0.1:1234\n    workspace: my-org/my-project\n    image: ghcr.io/${{ github.repository }}\n    tags: latest,${{ github.sha }}\n  env:\n    BORINGCACHE_API_TOKEN: ${{ secrets.BORINGCACHE_API_TOKEN }}\n```\n\nCache is automatically restored before build and saved after.\n\n## Mental model\n\nBy default, this action runs a local OCI registry proxy (`boringcache serve`) that BuildKit talks to via `type=registry` cache flags. Layers are fetched lazily on cache hit and pushed through the proxy during the build — no bulk restore/save steps needed.\n\nYou still control your Dockerfile, build args, and output settings.\n\nNotes:\n- TLS inputs accept either file paths or raw PEM strings.\n- Set `output` for custom buildctl outputs (for example, `type=local,dest=./out`).\n- Set `cache-backend: local` to fall back to the older bulk restore/save flow with `type=local` cache flags.\n- For Docker buildx builds, use `boringcache/docker-action` instead.\n\n## Common patterns\n\n### Simple buildctl build\n\n```yaml\n- uses: boringcache/buildkit-action@v1\n  with:\n    buildkit-host: tcp://127.0.0.1:1234\n    workspace: my-org/my-project\n    image: ghcr.io/${{ github.repository }}\n    tags: latest,${{ github.sha }}\n  env:\n    BORINGCACHE_API_TOKEN: ${{ secrets.BORINGCACHE_API_TOKEN }}\n```\n\n### Separate restore/save actions (advanced)\n\n```yaml\n- uses: boringcache/buildkit-action/restore@v1\n  id: cache\n  with:\n    workspace: my-org/my-project\n\n- name: Build with buildctl\n  run: |\n    buildctl --addr $BUILDKIT_HOST build \\\n      --frontend dockerfile.v0 \\\n      --local context=. \\\n      --local dockerfile=. \\\n      --import-cache ${{ steps.cache.outputs.import-cache }} \\\n      --export-cache ${{ steps.cache.outputs.export-cache }} \\\n      --output type=image,name=my-app:latest,push=false\n\n- uses: boringcache/buildkit-action/save@v1\n  with:\n    workspace: my-org/my-project\n    cache-tag: ${{ steps.cache.outputs.cache-tag }}\n```\n\n## Inputs\n\n| Input | Required | Default | Description |\n|-------|----------|---------|-------------|\n| `buildkit-host` | Yes | - | BuildKit address (e.g., `tcp://buildkit:1234`). |\n| `image` | Yes | - | Base image name (e.g., `ghcr.io/org/app`). |\n| `workspace` | No | repo name | Workspace in `org/repo` form. Defaults to `BORINGCACHE_DEFAULT_WORKSPACE` or repo name. |\n| `context` | No | `.` | Build context path. |\n| `dockerfile` | No | `Dockerfile` | Dockerfile path. |\n| `tags` | No | `latest` | Image tags (comma or newline separated). |\n| `push` | No | `false` | Push image to registry. |\n| `output` | No | - | Custom `buildctl --output` string. When set, `image`, `tags`, and `push` are ignored. |\n| `build-args` | No | - | Build arguments (newline-separated `KEY=VALUE`). |\n| `secrets` | No | - | BuildKit secrets (newline separated). |\n| `ssh` | No | - | SSH specs for BuildKit (newline separated). |\n| `target` | No | - | Target build stage. |\n| `platforms` | No | - | Target platforms (e.g., `linux/amd64,linux/arm64`). |\n| `no-cache` | No | `false` | Build without cache. |\n| `cache-mode` | No | `max` | BuildKit cache mode (`min` or `max`). |\n| `cache-tag` | No | slugified image name | Cache tag for BoringCache. |\n| `cli-version` | No | `v1.7.2` | BoringCache CLI version. Set to `skip` to disable installation. |\n| `buildkit-tls-ca` | No | - | TLS CA certificate (path or PEM). |\n| `buildkit-tls-cert` | No | - | TLS client certificate (path or PEM). |\n| `buildkit-tls-key` | No | - | TLS client key (path or PEM). |\n| `buildkit-tls-skip-verify` | No | `false` | Skip TLS verification. |\n| `cache-backend` | No | `registry` | Cache backend: `registry` (lazy proxy) or `local` (bulk restore/save). |\n| `proxy-port` | No | `5000` | Port for the BoringCache registry proxy. |\n| `registry-tag` | No | - | Optional human-readable alias tag passed to `boringcache docker-registry`. |\n| `proxy-no-git` | No | `false` | Pass `--no-git` to `boringcache docker-registry`. |\n| `proxy-no-platform` | No | `false` | Pass `--no-platform` to `boringcache docker-registry`. |\n| `verbose` | No | `false` | Enable verbose CLI output. |\n| `exclude` | No | - | Glob pattern to exclude files from cache. |\n\n## Outputs\n\n| Output | Description |\n|--------|-------------|\n| `digest` | Image digest from buildctl metadata |\n\n## Platform behavior\n\nPlatform scoping is what makes it safe to reuse caches across machines.\n\nBy default, caches are isolated by OS and architecture. This action uses your existing BuildKit daemon, so ensure it supports the target platforms you specify.\n\n## Environment variables\n\n| Variable | Description |\n|----------|-------------|\n| `BORINGCACHE_API_TOKEN` | API token for BoringCache authentication |\n| `BORINGCACHE_DEFAULT_WORKSPACE` | Default workspace if not specified in inputs |\n\n## Troubleshooting\n\n- Cache not restored: ensure `BORINGCACHE_API_TOKEN` is set and the workspace exists.\n- TLS connection failures: verify `buildkit-tls-*` values and `buildkit-tls-skip-verify`.\n- buildctl output missing: check `output` and `push` settings.\n\n## Release notes\n\nSee https://github.com/boringcache/buildkit-action/releases.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboringcache%2Fbuildkit-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboringcache%2Fbuildkit-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboringcache%2Fbuildkit-action/lists"}