3 releases
0.1.2 | Aug 13, 2024 |
---|---|
0.1.1 | Aug 12, 2024 |
0.1.0 | Aug 12, 2024 |
#109 in Build Utils
65KB
1.5K
SLoC
bgt
Bitcoin Guix Tag Builder
About
bgt is a tool to perform automated or semi-automated Guix builds of Bitcoin Core.
These can be manually initiated, or trigger when a new tag is detected via polling the GitHub API.
It can build, attest, and codesign tagged Bitcoin Core releases.
Requirements
- You will need to install and setup Guix for Bitcoin Core by following Bitcoin Core's INSTALL.md.
- (optional) For attesting (signing) you will need a GPG key configured in your default keyring.
- You will need a fork of the bitcoin-core/guix.sigs repository.
- For pull requests to this repository, you will need your GPG key to be in the guix.sigs builder-keys which can be done via a pull request.
- (optional) To use
--auto
mode (automatically open pull requests against guix.sigs) you will need a github token with the appropriate permissions (repo).
Installation
To install bgt-builder, you need to have Rust and Cargo installed on your system. Then, you can install it either using Cargo:
cargo install bgt
Or from source:
git clone https://github.com/bitcoin-dev-tools/bgt-builder.git bgt
cd bgt
cargo install --path .
Usage
After installation, you can use the bgt
command to interact with the tool.
To see the available commands run:
bgt
Setup
Run the setup wizard to configure bgt:
bgt setup
This will guide you through setting up your GPG key ID, signer name, and other necessary configurations.
Build
Build a specific tag of Bitcoin Core:
bgt build <tag>
Replace <tag>
with the specific version tag you want to build, e.g., v27.1
.
Attest
Attest to non-codesigned build outputs:
bgt attest <tag>
Codesign
Attach codesignatures to existing non-codesigned outputs and attest:
bgt codesign <tag>
Watch
Run a continuous watcher to monitor for new tags and automatically build them, optionally as a background daemon:
bgt watch start <--daemon>
Stop a background watcher daemon
bgt watch stop
This command will poll the GitHub API for new tags and automatically build, attest, and codesign new releases.
Clean
Clean up Guix build directories while leaving caches intact:
bgt clean
Show Config
View the current configuration settings:
bgt show-config
Additional Options
--multi-package
: UseJOBS=1 ADDITIONAL_GUIX_COMMON_FLAGS='--max-jobs=8'
for building. This can be added to any command.
Logging
bgt uses environment variables for logging configuration. You can set the RUST_LOG
environment variable to control the log level. For example:
RUST_LOG=debug bgt build v27.1
This will run the build command with debug-level logging.
Contributing
Contributions to bgt are welcome! Please feel free to submit issues and pull requests on our GitHub repository.
License
See license.
Plans
- implement Guix building
- permit building a specified tag
- enable signing
- add advanced GPG signing solutions (tbd)
- remove some dependencies
Dependencies
~16–30MB
~493K SLoC