surpher/PactSwift

Task: Find an alternative option for storing big binary files

Closed this issue · 2 comments

❕ Problem Statement

Currently the binaries for libpact_mock_server.a built from Rust codebase exceed GitHub's file size 100MB limit. All of the binaries in PactSwift are tracked with git-lfs and stored in GitHub-LFS. Unfortunately GitHub LFS is not free for open source projects and it is charged depending on storage and bandwidth. Each time someone pulls from LFS, the bandwidth gets "eaten" into by about 250MB! And for macOS running tests in CLI, surpher/PactMockServer contains these binaries again due to SPM limitation ons! These costs could potentially explode if any and all CI pipelines continuously pull from PactSwift LFS.

💬 Task Description

Research possible workarounds of storing big files/binaries in a secure remote location

👩‍🔧 Technical Design Notes

  • Reducing the size of the binaries has already been attempted, but haven't had luck reducing the size.
  • Could we store the binaries in a S3 bucket or similar?,
  • using scripts to fetch the binaries on build if they don't exist?
  • Any and all suggestions to avoid charges for an open source project are welcome.

🤝 Relationships

  • Other Related Issues: #30

Framework for macOS builds a dynamic library to be used on the machine running the tests. It requires the user of PactSwift to install Rust-lang on that machine. Since having Rust-lang is now a requirement on the machine we can build the static binary as part of an Xcode Build Phase. It takes a bit longer to build the first time (carthage update) but it means we can provide PactSwift as OSS without worrying about GitHub LFS limitations.

Irrelevant with implementation of #45