Skip to content

Change from Travis/CircleCi in favor of Github Actions#14

Open
yan-pi wants to merge 7 commits into
ClubeBitcoinUnB:masterfrom
yan-pi:ci/github-actions
Open

Change from Travis/CircleCi in favor of Github Actions#14
yan-pi wants to merge 7 commits into
ClubeBitcoinUnB:masterfrom
yan-pi:ci/github-actions

Conversation

@yan-pi

@yan-pi yan-pi commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Closes #2

Migrates the project CI from the legacy CircleCI/Travis setup to GitHub Actions.

This builds on @IsaqueFranklin native macOS work, which handled the main Apple Silicon compatibility path. I worked on top of that to make the build reproducible across GitHub-hosted Ubuntu, macOS arm64, and Nix.

What Changed

  • Added GitHub Actions CI with three checks:
    • Nix BTC checks via nix flake check
    • Native Ubuntu 24.04 build
    • Native macOS arm64 build
  • Added native Python binding smoke checks for Linux and macOS.
  • Pinned RocksDB to 8.9.1 for Nix and native macOS compatibility.
  • Kept BlockSci on C++17 and made that requirement explicit at the CMake target level.
  • Fixed RocksDB DB ownership handling to stay compatible with RocksDB 8.x’s DB** API.

Why

Newer RocksDB versions require newer C++ features and have API changes that do not match BlockSci’s current C++17 codebase. Pinning RocksDB gives us a stable build target without forcing a larger RocksDB modernization in this PR.

The Nix check is currently slow, around 50 minutes on GitHub Actions, because it does a cold build without a binary cache. This can be improved later with Cachix or another Nix binary cache.

Validation

  • Native Linux build passes in GitHub Actions.
  • Native macOS arm64 build passes in GitHub Actions.
  • Nix BTC check passes in GitHub Actions.
  • Local nix flake check --no-build passes.

IsaqueFranklin and others added 6 commits June 29, 2026 19:45
RocksDB 8 opens databases through DB** out parameters. Keep the raw pointer during Open/OpenForReadOnly and transfer ownership into the existing unique_ptr after a successful open.

Co-authored-by: Isaque Franklin <isaque@harlock.xyz>
Make the C++17 requirement part of the exported target contract so native and Python extension builds inherit the same standard consistently.
Use a pinned RocksDB release compatible with BlockSci's existing C++17 DB** API instead of nixpkgs' newer RocksDB packages. Patch the common RocksDB namespace header with <cstdint> for newer GCC/libstdc++ include strictness.
Allow the unpackaged dependency script to build RocksDB 8.9.1 into the local prefix when BLOCKSCI_BUILD_ROCKSDB=1. Document the macOS path so native builds avoid Homebrew's newer RocksDB ABI/API expectations.

Co-authored-by: Isaque Franklin <isaque@harlock.xyz>
Add PR checks for the Nix BTC path plus native Ubuntu and macOS arm64 builds. The native macOS path builds pinned RocksDB and passes explicit CMake package locations to the Python binding build.
@yan-pi
yan-pi requested a review from edilmedeiros July 6, 2026 15:23
@yan-pi yan-pi changed the title Ci/GitHub actions Change from Travis/CircleCi in favor of Github Actions Jul 6, 2026
@yan-pi
yan-pi force-pushed the ci/github-actions branch from 8c93377 to f9d53a1 Compare July 6, 2026 15:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Change circleci for github actions

2 participants