Home / Companies / Blacksmith / Blog / April 2024

April 2024 Summaries

4 posts from Blacksmith

Filter
Month: Year:
Post Summaries Back to Blog
Jest test suites can often be accelerated substantially in GitHub Actions through vertical scaling with more CPU cores or horizontal scaling with test sharding. In a benchmark, a test suite took about 18–19 minutes on a 2-vCPU runner, 9 minutes 37 seconds on 4 vCPUs, 5 minutes 31 seconds on 8 vCPUs, and 3 minutes 34 seconds on 16 vCPUs, though larger machines may face diminishing returns from shared I/O and memory constraints. Splitting the suite into eight Jest shards running simultaneously on separate 2-vCPU runners reduced the longest shard’s duration to 2 minutes 44 seconds, outperforming the 16-vCPU configuration while costing $0.096 compared with $0.128 for the larger runner and $0.076 for the original 2-vCPU run. Sharding is most effective when test execution time greatly exceeds repeated setup time, such as dependency installation, and workflows can use fail-fast behavior to cancel remaining shards after a failure and limit unnecessary costs.
Apr 29, 2024 977 words in the original blog post.
Blacksmith’s founders describe their W24 Y Combinator experience, beginning with nine months of exploring ideas before identifying persistent problems with continuous-integration compute and committing to build a solution. YC’s $500,000 investment, structured through equity and an uncapped MFN SAFE, provided runway, while the three-month program offered structured peer groups, partner office hours, Bookface resources, and pressure to make rapid measurable progress. The team moved temporarily to San Francisco, gained early product feedback and customers from fellow batch companies, and used YC’s public launch channels to generate additional interest and traction before fundraising. During a two-week fundraising effort involving roughly 70 calls, Blacksmith initially found more success with angels than institutional investors, then improved its pitch to fit venture firms’ investment frameworks and secured a lead offer that increased subsequent investor interest. The founders conclude that YC gave first-time founders useful access to advice, customers, fundraising networks, and an execution-focused culture that helped them avoid scaling prematurely and focus on building products users want.
Apr 22, 2024 1,535 words in the original blog post.
Docker layer caching can substantially accelerate GitHub Actions image builds by reusing unchanged layers, but GitHub-hosted runners are ephemeral and cannot reliably retain local caches between jobs. The described approach stores BuildKit cache artifacts separately in AWS Elastic Container Registry, beginning with a standard workflow that authenticates to ECR and builds and pushes an image. Remote caching requires Docker Buildx, configured through the setup-buildx GitHub Action and a builder instance, with cache-from pointing to an existing ECR cache image and cache-to publishing updated cache layers using registry-compatible options. The workflow supports private ECR repositories, while public ECR requires different cache reference URLs, and ECR IAM permissions may need to include authorization, image retrieval, and layer-upload operations to avoid 403 errors.
Apr 15, 2024 705 words in the original blog post.
Docker layer caching can substantially accelerate GitHub Actions CI builds by reusing filesystem layers created by Dockerfile instructions, especially when Dockerfiles place rarely changing dependencies before frequently updated application code. A basic Buildx-based workflow has no caching by default, but caching can be added through GitHub Actions’ native cache, an inline registry cache, or a separate registry-backed cache. GitHub’s cache is simple to configure with `cache-from` and `cache-to` using the `gha` backend, but its 10 GB repository limit, eviction behavior, and limited sharing make it less suitable for larger projects. Inline registry caching embeds cache data in the published image and enables reuse across systems without GitHub cache limits, though it can enlarge images and only caches final-stage layers in multi-stage builds. A dedicated registry cache stores build artifacts separately, supports caching intermediate multi-stage layers through `mode=max`, and offers additional compression and naming controls, making it the most capable option despite requiring more setup.
Apr 06, 2024 1,482 words in the original blog post.