mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-27 14:05:50 +00:00
Compare commits
31 Commits
fix-ips-fi
...
self-hoste
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8be811c7d1 | ||
|
|
09c00851b4 | ||
|
|
b8622e9312 | ||
|
|
4510d9c6f2 | ||
|
|
699765041f | ||
|
|
1d9eed58b5 | ||
|
|
7d1622e54d | ||
|
|
be3c3d2bde | ||
|
|
0fba76363a | ||
|
|
466491e3f5 | ||
|
|
177a9f4c91 | ||
|
|
8f272aa950 | ||
|
|
73b78625c0 | ||
|
|
5cc7e6dc19 | ||
|
|
95f753b1d3 | ||
|
|
f5857b4e4f | ||
|
|
02112928ec | ||
|
|
c815533e6a | ||
|
|
915fcaaa95 | ||
|
|
55a938a9b3 | ||
|
|
1d34d880ec | ||
|
|
97be8fa41e | ||
|
|
94e0cef62f | ||
|
|
f6f96865c1 | ||
|
|
2e4e5eaff1 | ||
|
|
2e96ae905d | ||
|
|
d02af3c891 | ||
|
|
6f559a6032 | ||
|
|
9980e8f9be | ||
|
|
fe17dde005 | ||
|
|
4eb1e4105a |
17
.github/actions/xahau-ga-build/action.yml
vendored
17
.github/actions/xahau-ga-build/action.yml
vendored
@@ -28,6 +28,10 @@ inputs:
|
|||||||
description: 'Cache version for invalidation'
|
description: 'Cache version for invalidation'
|
||||||
required: false
|
required: false
|
||||||
default: '1'
|
default: '1'
|
||||||
|
cache_enabled:
|
||||||
|
description: 'Whether to use cache'
|
||||||
|
required: false
|
||||||
|
default: 'true'
|
||||||
ccache_enabled:
|
ccache_enabled:
|
||||||
description: 'Whether to use ccache'
|
description: 'Whether to use ccache'
|
||||||
required: false
|
required: false
|
||||||
@@ -72,7 +76,7 @@ runs:
|
|||||||
echo "name=${SAFE_BRANCH}" >> $GITHUB_OUTPUT
|
echo "name=${SAFE_BRANCH}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Restore ccache directory for main branch
|
- name: Restore ccache directory for main branch
|
||||||
if: inputs.ccache_enabled == 'true'
|
if: inputs.cache_enabled == 'true' && inputs.ccache_enabled == 'true'
|
||||||
id: ccache-restore
|
id: ccache-restore
|
||||||
uses: ./.github/actions/xahau-ga-cache-restore
|
uses: ./.github/actions/xahau-ga-cache-restore
|
||||||
with:
|
with:
|
||||||
@@ -84,7 +88,7 @@ runs:
|
|||||||
cache-type: ccache-main
|
cache-type: ccache-main
|
||||||
|
|
||||||
- name: Restore ccache directory for current branch
|
- name: Restore ccache directory for current branch
|
||||||
if: inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name != inputs.main_branch
|
if: inputs.cache_enabled == 'true' && inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name != inputs.main_branch
|
||||||
id: ccache-restore-current-branch
|
id: ccache-restore-current-branch
|
||||||
uses: ./.github/actions/xahau-ga-cache-restore
|
uses: ./.github/actions/xahau-ga-cache-restore
|
||||||
with:
|
with:
|
||||||
@@ -103,6 +107,11 @@ runs:
|
|||||||
# Create cache directories
|
# Create cache directories
|
||||||
mkdir -p ~/.ccache-main ~/.ccache-current
|
mkdir -p ~/.ccache-main ~/.ccache-current
|
||||||
|
|
||||||
|
# Keep config separate from cache_dir so configs aren't swapped when CCACHE_DIR changes between steps
|
||||||
|
mkdir -p ~/.config/ccache
|
||||||
|
export CCACHE_CONFIGPATH="$HOME/.config/ccache/ccache.conf"
|
||||||
|
echo "CCACHE_CONFIGPATH=$CCACHE_CONFIGPATH" >> $GITHUB_ENV
|
||||||
|
|
||||||
# Configure ccache settings AFTER cache restore (prevents stale cached config)
|
# Configure ccache settings AFTER cache restore (prevents stale cached config)
|
||||||
ccache --set-config=max_size=${{ inputs.ccache_max_size }}
|
ccache --set-config=max_size=${{ inputs.ccache_max_size }}
|
||||||
ccache --set-config=hash_dir=${{ inputs.ccache_hash_dir }}
|
ccache --set-config=hash_dir=${{ inputs.ccache_hash_dir }}
|
||||||
@@ -237,14 +246,14 @@ runs:
|
|||||||
run: ccache -s
|
run: ccache -s
|
||||||
|
|
||||||
- name: Save ccache directory for main branch
|
- name: Save ccache directory for main branch
|
||||||
if: success() && inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name == inputs.main_branch
|
if: success() && inputs.cache_enabled == 'true' && inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name == inputs.main_branch
|
||||||
uses: actions/cache/save@v4
|
uses: actions/cache/save@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.ccache-main
|
path: ~/.ccache-main
|
||||||
key: ${{ steps.ccache-restore.outputs.cache-primary-key }}
|
key: ${{ steps.ccache-restore.outputs.cache-primary-key }}
|
||||||
|
|
||||||
- name: Save ccache directory for current branch
|
- name: Save ccache directory for current branch
|
||||||
if: success() && inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name != inputs.main_branch
|
if: success() && inputs.cache_enabled == 'true' && inputs.ccache_enabled == 'true' && steps.safe-branch.outputs.name != inputs.main_branch
|
||||||
uses: actions/cache/save@v4
|
uses: actions/cache/save@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.ccache-current
|
path: ~/.ccache-current
|
||||||
|
|||||||
11
.github/actions/xahau-ga-dependencies/action.yml
vendored
11
.github/actions/xahau-ga-dependencies/action.yml
vendored
@@ -76,6 +76,17 @@ runs:
|
|||||||
${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-
|
${{ runner.os }}-conan-v${{ inputs.cache_version }}-${{ inputs.compiler-id }}-
|
||||||
cache-type: Conan
|
cache-type: Conan
|
||||||
|
|
||||||
|
- name: Configure Conan cache paths
|
||||||
|
if: inputs.cache_enabled == 'false'
|
||||||
|
shell: bash
|
||||||
|
# For self-hosted runners, register cache paths to be used as volumes
|
||||||
|
# This allows the cache to be shared between containers
|
||||||
|
run: |
|
||||||
|
mkdir -p /.conan-cache/conan2 /.conan-cache/conan2_download /.conan-cache/conan2_sources
|
||||||
|
echo 'core.cache:storage_path=/.conan-cache/conan2' > ~/.conan2/global.conf
|
||||||
|
echo 'core.download:download_cache=/.conan-cache/conan2_download' >> ~/.conan2/global.conf
|
||||||
|
echo 'core.sources:download_cache=/.conan-cache/conan2_sources' >> ~/.conan2/global.conf
|
||||||
|
|
||||||
- name: Configure Conan
|
- name: Configure Conan
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
6
.github/workflows/build-in-docker.yml
vendored
6
.github/workflows/build-in-docker.yml
vendored
@@ -33,7 +33,7 @@ jobs:
|
|||||||
fetch-depth: 2 # Only get the last 2 commits, to avoid fetching all history
|
fetch-depth: 2 # Only get the last 2 commits, to avoid fetching all history
|
||||||
|
|
||||||
build:
|
build:
|
||||||
runs-on: [self-hosted, vanity]
|
runs-on: [self-hosted, xahaud-build]
|
||||||
needs: [checkout]
|
needs: [checkout]
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@@ -74,7 +74,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
tests:
|
tests:
|
||||||
runs-on: [self-hosted, vanity]
|
runs-on: [self-hosted, xahaud-build]
|
||||||
needs: [build, checkout]
|
needs: [build, checkout]
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@@ -84,7 +84,7 @@ jobs:
|
|||||||
run: /bin/bash docker-unit-tests.sh
|
run: /bin/bash docker-unit-tests.sh
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
runs-on: [self-hosted, vanity]
|
runs-on: [self-hosted, xahaud-build]
|
||||||
needs: [tests, checkout]
|
needs: [tests, checkout]
|
||||||
if: always()
|
if: always()
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
54
.github/workflows/xahau-ga-nix.yml
vendored
54
.github/workflows/xahau-ga-nix.yml
vendored
@@ -14,7 +14,7 @@ concurrency:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
matrix-setup:
|
matrix-setup:
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, generic, 20.04]
|
||||||
container: python:3-slim
|
container: python:3-slim
|
||||||
outputs:
|
outputs:
|
||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||||
@@ -176,7 +176,18 @@ jobs:
|
|||||||
|
|
||||||
build:
|
build:
|
||||||
needs: matrix-setup
|
needs: matrix-setup
|
||||||
runs-on: ubuntu-latest
|
runs-on: [self-hosted, generic, 20.04]
|
||||||
|
container:
|
||||||
|
image: ubuntu:24.04
|
||||||
|
volumes:
|
||||||
|
- /home/runner/.conan-cache:/.conan-cache
|
||||||
|
- /home/runner/.ccache-main:/github/home/.ccache-main
|
||||||
|
- /home/runner/.ccache-current:/github/home/.ccache-current
|
||||||
|
options: >-
|
||||||
|
--privileged
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
outputs:
|
outputs:
|
||||||
artifact_name: ${{ steps.set-artifact-name.outputs.artifact_name }}
|
artifact_name: ${{ steps.set-artifact-name.outputs.artifact_name }}
|
||||||
strategy:
|
strategy:
|
||||||
@@ -191,23 +202,22 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Get commit message
|
|
||||||
id: get-commit-message
|
|
||||||
uses: ./.github/actions/xahau-ga-get-commit-message
|
|
||||||
with:
|
|
||||||
event-name: ${{ github.event_name }}
|
|
||||||
head-commit-message: ${{ github.event.head_commit.message }}
|
|
||||||
pr-head-sha: ${{ github.event.pull_request.head.sha }}
|
|
||||||
|
|
||||||
- name: Install build dependencies
|
- name: Install build dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
apt-get update
|
||||||
sudo apt-get install -y ninja-build ${{ matrix.cc }} ${{ matrix.cxx }} ccache
|
apt-get install -y software-properties-common
|
||||||
|
add-apt-repository ppa:ubuntu-toolchain-r/test -y
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y python3 python-is-python3 pipx
|
||||||
|
pipx ensurepath
|
||||||
|
apt-get install -y cmake ninja-build ${{ matrix.cc }} ${{ matrix.cxx }} ccache
|
||||||
|
apt-get install -y perl # for openssl build
|
||||||
|
apt-get install -y libsqlite3-dev # for xahaud build
|
||||||
|
|
||||||
# Install the specific GCC version needed for Clang
|
# Install the specific GCC version needed for Clang
|
||||||
if [ -n "${{ matrix.clang_gcc_toolchain }}" ]; then
|
if [ -n "${{ matrix.clang_gcc_toolchain }}" ]; then
|
||||||
echo "=== Installing GCC ${{ matrix.clang_gcc_toolchain }} for Clang ==="
|
echo "=== Installing GCC ${{ matrix.clang_gcc_toolchain }} for Clang ==="
|
||||||
sudo apt-get install -y gcc-${{ matrix.clang_gcc_toolchain }} g++-${{ matrix.clang_gcc_toolchain }} libstdc++-${{ matrix.clang_gcc_toolchain }}-dev
|
apt-get install -y gcc-${{ matrix.clang_gcc_toolchain }} g++-${{ matrix.clang_gcc_toolchain }} libstdc++-${{ matrix.clang_gcc_toolchain }}-dev
|
||||||
|
|
||||||
echo "=== GCC versions available after installation ==="
|
echo "=== GCC versions available after installation ==="
|
||||||
ls -la /usr/lib/gcc/x86_64-linux-gnu/ | grep -E "^d"
|
ls -la /usr/lib/gcc/x86_64-linux-gnu/ | grep -E "^d"
|
||||||
@@ -238,7 +248,7 @@ jobs:
|
|||||||
echo "Hiding GCC $version -> renaming to $counter (will be seen as GCC version $counter)"
|
echo "Hiding GCC $version -> renaming to $counter (will be seen as GCC version $counter)"
|
||||||
# Safety check: ensure target doesn't already exist
|
# Safety check: ensure target doesn't already exist
|
||||||
if [ ! -e "/usr/lib/gcc/x86_64-linux-gnu/$counter" ]; then
|
if [ ! -e "/usr/lib/gcc/x86_64-linux-gnu/$counter" ]; then
|
||||||
sudo mv "$dir" "/usr/lib/gcc/x86_64-linux-gnu/$counter"
|
mv "$dir" "/usr/lib/gcc/x86_64-linux-gnu/$counter"
|
||||||
else
|
else
|
||||||
echo "ERROR: Cannot rename GCC $version - /usr/lib/gcc/x86_64-linux-gnu/$counter already exists"
|
echo "ERROR: Cannot rename GCC $version - /usr/lib/gcc/x86_64-linux-gnu/$counter already exists"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -262,11 +272,12 @@ jobs:
|
|||||||
|
|
||||||
# Install libc++ dev packages if using libc++ (not needed for libstdc++)
|
# Install libc++ dev packages if using libc++ (not needed for libstdc++)
|
||||||
if [ "${{ matrix.stdlib }}" = "libcxx" ]; then
|
if [ "${{ matrix.stdlib }}" = "libcxx" ]; then
|
||||||
sudo apt-get install -y libc++-${{ matrix.compiler_version }}-dev libc++abi-${{ matrix.compiler_version }}-dev
|
apt-get install -y libc++-${{ matrix.compiler_version }}-dev libc++abi-${{ matrix.compiler_version }}-dev
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Install Conan 2
|
# Install Conan 2
|
||||||
pip install --upgrade "conan>=2.0,<3"
|
pipx install "conan>=2.0,<3"
|
||||||
|
echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||||
|
|
||||||
- name: Check environment
|
- name: Check environment
|
||||||
run: |
|
run: |
|
||||||
@@ -280,6 +291,14 @@ jobs:
|
|||||||
echo "---- Full Environment ----"
|
echo "---- Full Environment ----"
|
||||||
env
|
env
|
||||||
|
|
||||||
|
- name: Get commit message
|
||||||
|
id: get-commit-message
|
||||||
|
uses: ./.github/actions/xahau-ga-get-commit-message
|
||||||
|
with:
|
||||||
|
event-name: ${{ github.event_name }}
|
||||||
|
head-commit-message: ${{ github.event.head_commit.message }}
|
||||||
|
pr-head-sha: ${{ github.event.pull_request.head.sha }}
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
uses: ./.github/actions/xahau-ga-dependencies
|
uses: ./.github/actions/xahau-ga-dependencies
|
||||||
with:
|
with:
|
||||||
@@ -293,6 +312,7 @@ jobs:
|
|||||||
cc: ${{ matrix.cc }}
|
cc: ${{ matrix.cc }}
|
||||||
cxx: ${{ matrix.cxx }}
|
cxx: ${{ matrix.cxx }}
|
||||||
stdlib: ${{ matrix.stdlib }}
|
stdlib: ${{ matrix.stdlib }}
|
||||||
|
cache_enabled: 'false' # Disable caching for self hosted runner
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
uses: ./.github/actions/xahau-ga-build
|
uses: ./.github/actions/xahau-ga-build
|
||||||
@@ -307,6 +327,8 @@ jobs:
|
|||||||
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
main_branch: ${{ env.MAIN_BRANCH_NAME }}
|
||||||
stdlib: ${{ matrix.stdlib }}
|
stdlib: ${{ matrix.stdlib }}
|
||||||
clang_gcc_toolchain: ${{ matrix.clang_gcc_toolchain || '' }}
|
clang_gcc_toolchain: ${{ matrix.clang_gcc_toolchain || '' }}
|
||||||
|
cache_enabled: 'false' # Disable caching for self hosted runner
|
||||||
|
ccache_max_size: '100G'
|
||||||
|
|
||||||
- name: Set artifact name
|
- name: Set artifact name
|
||||||
id: set-artifact-name
|
id: set-artifact-name
|
||||||
|
|||||||
@@ -484,61 +484,44 @@ OverlayImpl::start()
|
|||||||
m_peerFinder->setConfig(config);
|
m_peerFinder->setConfig(config);
|
||||||
m_peerFinder->start();
|
m_peerFinder->start();
|
||||||
|
|
||||||
auto addIps = [this](std::vector<std::string> ips, bool fixed) {
|
auto addIps = [&](std::vector<std::string> bootstrapIps) -> void {
|
||||||
beast::Journal const& j = app_.journal("Overlay");
|
beast::Journal const& j = app_.journal("Overlay");
|
||||||
for (auto& ip : ips)
|
for (auto& ip : bootstrapIps)
|
||||||
{
|
{
|
||||||
std::size_t pos = ip.find('#');
|
std::size_t pos = ip.find('#');
|
||||||
if (pos != std::string::npos)
|
if (pos != std::string::npos)
|
||||||
ip.erase(pos);
|
ip.erase(pos);
|
||||||
|
|
||||||
JLOG(j.trace())
|
JLOG(j.trace()) << "Found boostrap IP: " << ip;
|
||||||
<< "Found " << (fixed ? "fixed" : "bootstrap") << " IP: " << ip;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_resolver.resolve(
|
m_resolver.resolve(
|
||||||
ips,
|
bootstrapIps,
|
||||||
[this, fixed](
|
[&](std::string const& name,
|
||||||
std::string const& name,
|
|
||||||
std::vector<beast::IP::Endpoint> const& addresses) {
|
std::vector<beast::IP::Endpoint> const& addresses) {
|
||||||
|
std::vector<std::string> ips;
|
||||||
|
ips.reserve(addresses.size());
|
||||||
beast::Journal const& j = app_.journal("Overlay");
|
beast::Journal const& j = app_.journal("Overlay");
|
||||||
std::string const base("config: ");
|
|
||||||
|
|
||||||
std::vector<beast::IP::Endpoint> eps;
|
|
||||||
eps.reserve(addresses.size());
|
|
||||||
for (auto const& addr : addresses)
|
for (auto const& addr : addresses)
|
||||||
{
|
{
|
||||||
auto ep = addr.port() == 0 ? addr.at_port(DEFAULT_PEER_PORT)
|
std::string addrStr = addr.port() == 0
|
||||||
: addr;
|
? to_string(addr.at_port(DEFAULT_PEER_PORT))
|
||||||
JLOG(j.trace())
|
: to_string(addr);
|
||||||
<< "Parsed " << (fixed ? "fixed" : "bootstrap")
|
JLOG(j.trace()) << "Parsed boostrap IP: " << addrStr;
|
||||||
<< " IP: " << ep;
|
ips.push_back(addrStr);
|
||||||
eps.push_back(ep);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eps.empty())
|
std::string const base("config: ");
|
||||||
return;
|
if (!ips.empty())
|
||||||
|
m_peerFinder->addFallbackStrings(base + name, ips);
|
||||||
if (fixed)
|
|
||||||
{
|
|
||||||
m_peerFinder->addFixedPeer(base + name, eps);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
std::vector<std::string> strs;
|
|
||||||
strs.reserve(eps.size());
|
|
||||||
for (auto const& ep : eps)
|
|
||||||
strs.push_back(to_string(ep));
|
|
||||||
m_peerFinder->addFallbackStrings(base + name, strs);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!app_.config().IPS.empty())
|
if (!app_.config().IPS.empty())
|
||||||
addIps(app_.config().IPS, false);
|
addIps(app_.config().IPS);
|
||||||
|
|
||||||
if (!app_.config().IPS_FIXED.empty())
|
if (!app_.config().IPS_FIXED.empty())
|
||||||
addIps(app_.config().IPS_FIXED, true);
|
addIps(app_.config().IPS_FIXED);
|
||||||
|
|
||||||
auto const timer = std::make_shared<Timer>(*this);
|
auto const timer = std::make_shared<Timer>(*this);
|
||||||
std::lock_guard lock(mutex_);
|
std::lock_guard lock(mutex_);
|
||||||
|
|||||||
Reference in New Issue
Block a user