This directory contains GitHub Actions workflows for the WhatCoin project.
The main comprehensive CI/CD pipeline that includes:
- Multi-platform builds: Ubuntu (GCC/Clang), macOS (Clang), Windows (MSVC)
- Dependency installation: All required libraries and tools
- Code linting: Clang-format checks
- Security scanning: CodeQL analysis
- Release automation: Automatic release creation with artifacts
Triggers:
- Push to
master
,main
, ordevelop
branches - Pull requests to
master
,main
, ordevelop
branches - Release publication events
A simplified CI workflow for faster feedback:
- Single platform: Ubuntu only
- Essential dependencies: Core build requirements
- Quick build and test: Optimized for speed
Triggers:
- Push to
master
,main
, ordevelop
branches - Pull requests to
master
,main
, ordevelop
branches
Optimizes build times by caching dependencies:
- vcpkg cache: Caches vcpkg dependencies
- Build cache: Caches build artifacts
The workflows install the following dependencies:
build-essential
- C/C++ compiler and build toolscmake
- Build systempkg-config
- Package configurationlibboost-all-dev
- Boost C++ librarieslibssl-dev
- OpenSSL development fileslibzmq3-dev
- ZeroMQ librarylibpgm-dev
- OpenPGM librarylibunbound-dev
- DNS resolver librarylibsodium-dev
- Cryptography librarylibunwind8-dev
- Stack unwinding libraryliblzma-dev
- LZMA compression librarylibreadline6-dev
- Readline librarylibldns-dev
- DNS toolkit library
cmake
- Build systempkg-config
- Package configurationboost
- Boost C++ librariesopenssl
- OpenSSL libraryzeromq
- ZeroMQ librarylibpgm
- OpenPGM libraryunbound
- DNS resolver librarylibsodium
- Cryptography librarylibunwind
- Stack unwinding libraryxz
- LZMA compression libraryreadline
- Readline libraryldns
- DNS toolkit library
vcpkg
- C++ package manager- Dependencies installed via vcpkg:
boost
,openssl
,zeromq
,libsodium
- For development: The Quick CI workflow provides fast feedback
- For releases: The full CI/CD pipeline ensures multi-platform compatibility
- For security: CodeQL analysis runs automatically on all builds
To modify the workflows:
- Edit the appropriate
.yml
file in.github/workflows/
- The workflows use GitHub's latest actions and best practices
- Dependencies can be added/removed as needed
- Build configurations can be adjusted in the CMake steps
- Build failures: Check that all dependencies are properly installed
- Test failures: Ensure the test suite is compatible with the build environment
- Cache issues: Clear the cache by pushing a commit with
[skip cache]
in the message
- Check the Actions tab in your GitHub repository
- Review the logs for specific error messages
- Verify that the workflow files are properly formatted YAML