Update Workflow (#193)

This commit is contained in:
Denis Angell
2023-11-09 19:01:50 +01:00
committed by GitHub
parent 63bb1906ed
commit 43cb255337
9 changed files with 34 additions and 262 deletions

View File

@@ -1,2 +1,7 @@
# Ignore everything
*
# Allow files and directories
!/build-core.sh
!/build-full.sh
!/release-builder.sh

View File

@@ -11,21 +11,19 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
hbb: builder:
strategy:
fail-fast: true
runs-on: [self-hosted, vanity] runs-on: [self-hosted, vanity]
steps: steps:
- name: checkout - uses: actions/checkout@v3
uses: actions/checkout@v3 with:
- name: Set branch name clean: false
run: echo "GITHUB_BRANCH=${{ github.head_ref || github.ref }}" >> $GITHUB_ENV
- name: Build using Docker - name: Build using Docker
run: docker build -f xahaud.binary.dockerfile --build-arg GITHUB_RUN_NUMBER=${{ github.run_number }} --build-arg GITHUB_BRANCH=${{ env.GITHUB_BRANCH }} -t transia/xahaud-binary:${{ github.sha }} . run: /bin/bash release-builder.sh
- name: Release using Docker
run: /bin/bash release.sh ${{ env.GITHUB_BRANCH }} ${{ github.run_number }} ${{ github.sha }} unittests:
- name: Test using Docker needs: builder
run: docker run --rm -i transia/xahaud-binary:${{ github.sha }} sh -c '/io/release-build/xahaud -u' runs-on: [self-hosted, vanity]
- name: Clean up Docker steps:
run: docker rmi transia/xahaud-binary:${{ github.sha }} - name: Unit tests
run: /bin/bash docker-unit-tests.sh

View File

@@ -1,123 +0,0 @@
# docker build -t transia/xahaud-hbb-deps .
# Use the Holy Build Box image as the base image
FROM ghcr.io/foobarwidget/holy-build-box-x64
# Set the user to root and the group to the current user's group ID
# Note: You will need to replace `$(id -g)` with the actual group ID or remove it if not needed
# USER root:$(id -g)
# Install wget and other necessary tools
RUN /hbb_exe/activate-exec bash -c "yum update -y && \
yum install -y wget lz4 lz4-devel git llvm13-static.x86_64 llvm13-devel.x86_64 devtoolset-10-binutils zlib-static ncurses-static \
devtoolset-7-gcc-c++ \
devtoolset-9-gcc-c++ \
devtoolset-10-gcc-c++ \
snappy snappy-devel \
zlib zlib-devel \
lz4-devel \
libasan && \
yum clean all && \
rm -rf /var/cache/yum"
COPY . /io/
# Create and set the working directory to /io
WORKDIR /io
# Set file permissions mask
RUN /hbb_exe/activate-exec bash -c "umask 0000"
ENV ZSTD_VERSION="1.1.3" \
BOOST_ROOT="/usr/local/src/boost_1_75_0" \
Boost_LIBRARY_DIRS="/usr/local/lib" \
BOOST_INCLUDEDIR="/usr/local/src/boost_1_75_0" \
LLVM_DIR="/usr/lib64/llvm13/lib/cmake/llvm/" \
LLVM_LIBRARY_DIR="/usr/lib64/llvm13/lib/"
# Install ZStd 1.1.3
RUN /hbb_exe/activate-exec bash -c "source /opt/rh/devtoolset-7/enable && echo '-- Install ZStd 1.1.3 --' && \
yum install epel-release -y && \
wget -nc -q -O zstd-${ZSTD_VERSION}.tar.gz https://github.com/facebook/zstd/archive/v${ZSTD_VERSION}.tar.gz && \
tar xzvf zstd-${ZSTD_VERSION}.tar.gz && \
cd zstd-${ZSTD_VERSION} && \
make -j$(nproc) install && \
cd .. && \
rm -rf zstd-${ZSTD_VERSION} zstd-${ZSTD_VERSION}.tar.gz"
# Install Cmake 3.23.1
RUN /hbb_exe/activate-exec bash -c "source /opt/rh/devtoolset-7/enable && echo '-- Install Cmake 3.23.1 --' && \
wget -nc -q https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-linux-x86_64.tar.gz && \
tar -xzf cmake-3.23.1-linux-x86_64.tar.gz -C /hbb/ && \
rm cmake-3.23.1-linux-x86_64.tar.gz"
# Install Boost 1.75.0
RUN /hbb_exe/activate-exec bash -c "source /opt/rh/devtoolset-7/enable && echo '-- Install Boost 1.75.0 --' && \
wget -nc -q https://boostorg.jfrog.io/artifactory/main/release/1.75.0/source/boost_1_75_0.tar.gz && \
tar -xzf boost_1_75_0.tar.gz && \
cd boost_1_75_0 && \
./bootstrap.sh && \
./b2 link=static -j$(nproc) && \
./b2 install && \
cd ../ && \
rm -rf boost_1_75_0 boost_1_75_0.tar.gz"
# Install Protobuf 3.20.0
RUN /hbb_exe/activate-exec bash -c "source /opt/rh/devtoolset-7/enable && echo '-- Install Protobuf 3.20.0 --' && \
wget -nc -q https://github.com/protocolbuffers/protobuf/releases/download/v3.20.0/protobuf-all-3.20.0.tar.gz && \
tar -xzf protobuf-all-3.20.0.tar.gz && \
cd protobuf-3.20.0/ && \
./autogen.sh && \
./configure --prefix=/usr --disable-shared link=static && \
make -j$(nproc) && \
make install && \
cd .. && \
rm -rf protobuf-3.20.0 protobuf-all-3.20.0.tar.gz"
# Build LLD
RUN /hbb_exe/activate-exec bash -c "source /opt/rh/devtoolset-7/enable && echo '-- Build LLD --' && \
ln /usr/bin/llvm-config-13 /usr/bin/llvm-config && \
mv /opt/rh/devtoolset-9/root/usr/bin/ar /opt/rh/devtoolset-9/root/usr/bin/ar-9 && \
ln /opt/rh/devtoolset-10/root/usr/bin/ar /opt/rh/devtoolset-9/root/usr/bin/ar && \
wget -nc -q https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/lld-13.0.1.src.tar.xz && \
wget -nc -q https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/libunwind-13.0.1.src.tar.xz && \
tar -xf lld-13.0.1.src.tar.xz && \
tar -xf libunwind-13.0.1.src.tar.xz && \
cp -r libunwind-13.0.1.src/include libunwind-13.0.1.src/src lld-13.0.1.src/ && \
cd lld-13.0.1.src && \
rm -rf build CMakeCache.txt && \
mkdir build && \
cd build && \
cmake .. -DLLVM_LIBRARY_DIR=/usr/lib64/llvm13/lib/ -DCMAKE_INSTALL_PREFIX=/usr/lib64/llvm13/ -DCMAKE_BUILD_TYPE=Release && \
make -j$(nproc) install && \
ln -s /usr/lib64/llvm13/lib/include/lld /usr/include/lld && \
cp /usr/lib64/llvm13/lib/liblld*.a /usr/local/lib/ && \
cd ../../ && \
rm -rf lld-13.0.1.src libunwind-13.0.1.src lld-13.0.1.src.tar.xz libunwind-13.0.1.src.tar.xz"
# Build WasmEdge
RUN /hbb_exe/activate-exec bash -c "source /opt/rh/devtoolset-9/enable && echo '-- Build WasmEdge --' && \
wget -nc -q https://github.com/WasmEdge/WasmEdge/archive/refs/tags/0.11.2.zip && \
unzip -o 0.11.2.zip && \
cd WasmEdge-0.11.2 && \
mkdir build && \
cd build && \
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DWASMEDGE_BUILD_SHARED_LIB=OFF \
-DWASMEDGE_BUILD_STATIC_LIB=ON \
-DWASMEDGE_BUILD_AOT_RUNTIME=ON \
-DWASMEDGE_FORCE_DISABLE_LTO=ON \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DWASMEDGE_LINK_LLVM_STATIC=ON \
-DWASMEDGE_BUILD_PLUGINS=OFF \
-DWASMEDGE_LINK_TOOLS_STATIC=ON \
-DBoost_NO_BOOST_CMAKE=ON -DLLVM_DIR=/usr/lib64/llvm13/lib/cmake/llvm/ -DLLVM_LIBRARY_DIR=/usr/lib64/llvm13/lib/ && \
make -j$(nproc) install && \
cp -r include/api/wasmedge /usr/include/ && \
cd ../../ && \
rm -rf WasmEdge-0.11.2 0.11.2.zip"
# Set the entrypoint to the activate-exec script with bash
# This will be the default command that runs when the container starts
ENTRYPOINT ["/hbb_exe/activate-exec"]
CMD ["bash"]

View File

@@ -12,7 +12,14 @@ umask 0000;
cd /io/ && cd /io/ &&
echo "Importing env... Lines:" && echo "Importing env... Lines:" &&
cat .env|wc -l && cat .env|wc -l &&
source .env && source .env
echo $?
if [[ "$?" -ne "0" ]]; then
echo "ERR no .env found/sourced"
exit 127
fi
perl -i -pe "s/^(\\s*)-DBUILD_SHARED_LIBS=OFF/\\1-DBUILD_SHARED_LIBS=OFF\\n\\1-DROCKSDB_BUILD_SHARED=OFF/g" Builds/CMake/deps/Rocksdb.cmake && perl -i -pe "s/^(\\s*)-DBUILD_SHARED_LIBS=OFF/\\1-DBUILD_SHARED_LIBS=OFF\\n\\1-DROCKSDB_BUILD_SHARED=OFF/g" Builds/CMake/deps/Rocksdb.cmake &&
mv Builds/CMake/deps/WasmEdge.cmake Builds/CMake/deps/WasmEdge.old && mv Builds/CMake/deps/WasmEdge.cmake Builds/CMake/deps/WasmEdge.old &&
echo "find_package(LLVM REQUIRED CONFIG) echo "find_package(LLVM REQUIRED CONFIG)
@@ -53,6 +60,7 @@ else
fi fi
cd ..; cd ..;
mv src/ripple/net/impl/RegisterSSLCerts.cpp.old src/ripple/net/impl/RegisterSSLCerts.cpp; mv src/ripple/net/impl/RegisterSSLCerts.cpp.old src/ripple/net/impl/RegisterSSLCerts.cpp;
mv Builds/CMake/deps/Rocksdb.cmake.old Builds/CMake/deps/Rocksdb.cmake; mv Builds/CMake/deps/Rocksdb.cmake.old Builds/CMake/deps/Rocksdb.cmake;
mv Builds/CMake/deps/WasmEdge.old Builds/CMake/deps/WasmEdge.cmake; mv Builds/CMake/deps/WasmEdge.old Builds/CMake/deps/WasmEdge.cmake;

View File

@@ -152,6 +152,13 @@ echo "Persisting ENV:"
cat .env cat .env
./build-core.sh "$1" "$2" "$3" "$4" ./build-core.sh "$1" "$2" "$3" "$4"
echo $?
if [[ "$?" -ne "0" ]]; then
echo "ERR build-core.sh non 0 exit code"
exit 127
fi
echo "END [ build-core.sh ]" echo "END [ build-core.sh ]"
echo "END INSIDE CONTAINER - FULL" echo "END INSIDE CONTAINER - FULL"

View File

@@ -1,17 +0,0 @@
#!/bin/bash
set -e
umask 0000;
# Create a temporary container
container_id=$(docker create transia/xahaud-binary:$3)
# Copy the xahaud and release.info files from the container to the host
docker cp $container_id:/io/release-build/xahaud /data/builds/$(date +%Y).$(date +%-m).$(date +%-d)-$1+$2
docker cp $container_id:/io/release-build/release.info /data/builds/$(date +%Y).$(date +%-m).$(date +%-d)-$1+$2.releaseinfo
# Remove the temporary container
docker rm $container_id
# Print the published build
echo "Published build to: http://build.xahau.tech/"
echo $(date +%Y).$(date +%-m).$(date +%-d)-$1+$2

View File

@@ -302,7 +302,6 @@ public:
"temDST_IS_SRC" : -279, "temDST_IS_SRC" : -279,
"temDST_NEEDED" : -278, "temDST_NEEDED" : -278,
"temHOOK_DATA_TOO_LARGE" : -253, "temHOOK_DATA_TOO_LARGE" : -253,
"temHOOK_REJECTED" : -252,
"temINVALID" : -277, "temINVALID" : -277,
"temINVALID_ACCOUNT_ID" : -268, "temINVALID_ACCOUNT_ID" : -268,
"temINVALID_COUNT" : -266, "temINVALID_COUNT" : -266,

View File

@@ -1,47 +0,0 @@
#!/bin/bash
if [ "`grep certbundle.h src/ripple/net/impl/RegisterSSLCerts.cpp | wc -l`" -eq "0" ]
then
cp src/ripple/net/impl/RegisterSSLCerts.cpp src/ripple/net/impl/RegisterSSLCerts.cpp.old
perl -i -pe "s/^{/{
#ifdef EMBEDDED_CA_BUNDLE
BIO *cbio = BIO_new_mem_buf(ca_bundle.data(), ca_bundle.size());
X509_STORE *cts = SSL_CTX_get_cert_store(ctx.native_handle());
if(!cts || !cbio)
JLOG(j.warn())
<< \"Failed to create cts\/cbio when loading embedded certs.\";
else
{
X509_INFO *itmp;
int i, count = 0, type = X509_FILETYPE_PEM;
STACK_OF(X509_INFO) *inf = PEM_X509_INFO_read_bio(cbio, NULL, NULL, NULL);
if (!inf)
{
BIO_free(cbio);
JLOG(j.warn())
<< \"Failed to read cbio when loading embedded certs.\";
}
else
{
for (i = 0; i < sk_X509_INFO_num(inf); i++)
{
itmp = sk_X509_INFO_value(inf, i);
if (itmp->x509)
{
X509_STORE_add_cert(cts, itmp->x509);
count++;
}
if (itmp->crl)
{
X509_STORE_add_crl(cts, itmp->crl);
count++;
}
}
sk_X509_INFO_pop_free(inf, X509_INFO_free);
BIO_free(cbio);
}
}
#endif/g" src/ripple/net/impl/RegisterSSLCerts.cpp &&
sed -i "s/#include <ripple\/net\/RegisterSSLCerts.h>/\0\n#include <certs\/certbundle.h>/g" src/ripple/net/impl/RegisterSSLCerts.cpp
fi

View File

@@ -1,58 +0,0 @@
# docker build -f xahaud.binary.dockerfile -t transia/xahaud-binary .
# Use a base image that includes the necessary build tools and libraries
FROM transia/xahaud-hbb-deps
ARG GITHUB_BRANCH
ARG GITHUB_RUN_NUMBER
# Copy the project source code into the container
COPY . /io
# Set the working directory
WORKDIR /io
# Create directory for certificates
RUN mkdir -p src/certs
# Download the certificate bundle
RUN curl --silent -k https://raw.githubusercontent.com/RichardAH/rippled-release-builder/main/ca-bundle/certbundle.h -o src/certs/certbundle.h
# Check if certbundle.h needs to be included in RegisterSSLCerts.cpp
RUN ./ssl_script.sh
# Set file permissions
RUN /hbb_exe/activate-exec bash -c "umask 0000"
# Modify Rocksdb.cmake
# RUN cp Builds/CMake/deps/Rocksdb.cmake Builds/CMake/deps/Rocksdb.cmake.old
RUN perl -i -pe "s/^(\\s*)-DBUILD_SHARED_LIBS=OFF/\\1-DBUILD_SHARED_LIBS=OFF\\n\\1-DROCKSDB_BUILD_SHARED=OFF/g" Builds/CMake/deps/Rocksdb.cmake
# Replace WasmEdge.cmake with a new configuration
RUN /hbb_exe/activate-exec bash -c "echo -e 'find_package(LLVM REQUIRED CONFIG)\nmessage(STATUS \"Found LLVM ${LLVM_PACKAGE_VERSION}\")\nmessage(STATUS \"Using LLVMConfig.cmake in: \${LLVM_DIR}\")\nadd_library (wasmedge STATIC IMPORTED GLOBAL)\nset_target_properties(wasmedge PROPERTIES IMPORTED_LOCATION \${WasmEdge_LIB})\ntarget_link_libraries (ripple_libs INTERFACE wasmedge)\nadd_library (NIH::WasmEdge ALIAS wasmedge)\nmessage(\"WasmEdge DONE\")' > Builds/CMake/deps/WasmEdge.cmake"
# Update BuildInfo.cpp with the current date and Git information
RUN sed -i s/\"0.0.0\"/\"$(date +%Y).$(date +%-m).$(date +%-d)-${GITHUB_BRANCH}+${GITHUB_RUN_NUMBER}\"/g src/ripple/protocol/impl/BuildInfo.cpp
# Create build directory
RUN /hbb_exe/activate-exec bash -c "mkdir -p release-build"
# Configure the build with CMake
RUN /hbb_exe/activate-exec bash -c "cd release-build && source /opt/rh/devtoolset-10/enable && cmake .. -DCMAKE_BUILD_TYPE=Release -DBoost_NO_BOOST_CMAKE=ON -DLLVM_DIR=/usr/lib64/llvm13/lib/cmake/llvm/ -DLLVM_LIBRARY_DIR=/usr/lib64/llvm13/lib/ -DWasmEdge_LIB=/usr/local/lib64/libwasmedge.a && make -j$(nproc) VERBOSE=1"
# Strip the binary and rename it
RUN /hbb_exe/activate-exec bash -c "cd release-build && strip -s rippled && mv rippled xahaud"
# Create release information
RUN cd release-build && \
echo "Build host: $(hostname)" > release.info && \
echo "Build date: $(date)" >> release.info && \
echo "Build md5: $(md5sum xahaud)" >> release.info && \
echo "Git remotes:" >> release.info && \
git remote -v >> release.info && \
echo "Git status:" >> release.info && \
git status -v >> release.info && \
echo "Git log [last 20]:" >> release.info && \
git log -n 20 >> release.info
ENTRYPOINT ["/hbb_exe/activate-exec"]
CMD ["bash"]