Last active
October 17, 2024 13:52
-
-
Save clifinger/b74b657b30a736c6f236bb12f2b23f81 to your computer and use it in GitHub Desktop.
BedrockDb compile and cluser
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
# Requires bash 4.2 or greater because of use of `-v` for testing variables being set | |
# Returns 1 if version doesn't match | |
function bashVersionCheck() | |
{ | |
[ -z $BASH_VERSIO ] && return 1 | |
# If it's set, check the version | |
case $BASH_VERSIO in | |
5.*) return 0 ;; | |
4.1) return 1 ;; | |
4.0) return 1 ;; | |
4.*) return 0 ;; | |
?) return 1;; | |
esac | |
} | |
if [ $(bashVersionCheck) ]; then | |
echo "Requires bash 4.2 or greater" | |
exit -1 | |
fi | |
NO_ARG_PARAMS=("VERBOSE" "QUIET" "CLEAN") | |
ONE_ARG_PARAMS=("SERVER_HOST" "NODE_NAME" "PEER_LIST" "PRIORITY" "PLUGINS" "CACHE_SIZE" "WORKER_THREADS" "QUERY_LOG" "MAX_JOURNAL_SIZE" "SYNCHRONOUS") | |
function toLowerCase() | |
{ | |
echo "$1" | tr '[:upper:]' '[:lower:]' | |
} | |
function toSnakeCase() | |
{ | |
lowered=$(toLowerCase $1) | |
arr=(${lowered//_/ }) | |
printf -v ccase %s "${arr[@]^}" | |
echo "${lowered:0:1}${ccase:1}" | |
} | |
PARAMS="" | |
# Add default database path | |
DB_PATH="/var/db/bedrock.db" | |
PARAMS="$PARAMS -db $DB_PATH -nodeHost 0.0.0.0:9000 -serverHost 0.0.0.0:8888" | |
for i in "${NO_ARG_PARAMS[@]}" | |
do | |
: | |
if [ -v "$i" ]; then | |
export PARAMS="$PARAMS -$(toLowerCase ${i:0:1})" | |
fi | |
done | |
for i in "${ONE_ARG_PARAMS[@]}" | |
do | |
: | |
if [ -v "$i" ]; then | |
export PARAMS="$PARAMS -$(toSnakeCase ${i}) ${!i}" | |
fi | |
done | |
exec /sbin/setuser bedrock /usr/local/bin/bedrock $PARAMS >> /var/log/bedrock.log 2>&1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
services: | |
bedrock-node0: | |
build: | |
context: ./docker/bedrock | |
dockerfile: Dockerfile | |
container_name: bedrock-node0 | |
ports: | |
- "8888:8888" | |
networks: | |
bedrock-cluster: | |
aliases: | |
- node0 | |
volumes: | |
- bedrock-db-node0:/db | |
environment: | |
- NODE_NAME=node0 | |
- PRIORITY=100 | |
- PEER_LIST=node1:9000,node2:9000 | |
bedrock-node1: | |
build: | |
context: ./docker/bedrock | |
dockerfile: Dockerfile | |
container_name: bedrock-node1 | |
ports: | |
- "8887:8888" | |
networks: | |
bedrock-cluster: | |
aliases: | |
- node1 | |
volumes: | |
- bedrock-db-node1:/db | |
environment: | |
- NODE_NAME=node1 | |
- PRIORITY=101 | |
- PEER_LIST=node0:9000,node2:9000 | |
bedrock-node2: | |
build: | |
context: ./docker/bedrock | |
dockerfile: Dockerfile | |
container_name: bedrock-node2 | |
ports: | |
- "8889:8888" | |
networks: | |
bedrock-cluster: | |
aliases: | |
- node2 | |
volumes: | |
- bedrock-db-node2:/db | |
environment: | |
- NODE_NAME=node2 | |
- PRIORITY=102 | |
- PEER_LIST=node0:9000,node1:9000 | |
networks: | |
bedrock-cluster: | |
driver: bridge | |
volumes: | |
bedrock-db-node0: | |
bedrock-db-node1: | |
bedrock-db-node2: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM phusion/baseimage:noble-1.0.0 | |
ARG DEBIAN_FRONTEND=noninteractive | |
# Install necessary packages | |
RUN apt-get update && apt-get install -y software-properties-common && \ | |
apt-get install -y build-essential libpcre++ zlib1g | |
COPY ./ /src | |
RUN cp /src/bedrock /usr/local/bin/ | |
RUN chmod +x /usr/local/bin/bedrock | |
RUN mkdir -p /var/db | |
RUN touch /var/db/bedrock.db | |
EXPOSE 8888 | |
EXPOSE 9000 | |
RUN mkdir -p /etc/service/bedrock/ | |
COPY bedrock.sh /etc/service/bedrock/run | |
RUN chmod +x /etc/service/bedrock/run | |
RUN adduser --disabled-password --gecos "" bedrock \ | |
&& adduser bedrock bedrock \ | |
&& chown -R bedrock:bedrock /db | |
CMD ["/sbin/my_init"] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Utiliser une image de base Ubuntu récente | |
FROM ubuntu:22.04 | |
# Éviter les interactions pendant l'installation | |
ENV DEBIAN_FRONTEND=noninteractive | |
# Installer apt-fast et les outils nécessaires | |
RUN apt-get update && apt-get install -y software-properties-common gnupg wget && \ | |
add-apt-repository ppa:apt-fast/stable && \ | |
apt-get update && apt-get -y install apt-fast | |
# Configurer apt-fast | |
RUN echo debconf apt-fast/maxdownloads string 16 | debconf-set-selections && \ | |
echo debconf apt-fast/dlflag boolean true | debconf-set-selections && \ | |
echo debconf apt-fast/aptmanager string apt-get | debconf-set-selections | |
# Ajouter les clés GPG nécessaires | |
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA9EF27F && \ | |
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C | |
# Ajouter le PPA ubuntu-toolchain-r/test | |
RUN add-apt-repository ppa:ubuntu-toolchain-r/test | |
# Ajouter le dépôt LLVM | |
RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \ | |
echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main" >> /etc/apt/sources.list.d/llvm.list | |
# Mettre à jour et installer les dépendances | |
RUN apt-fast update && apt-fast install -y \ | |
wget \ | |
gnupg \ | |
software-properties-common \ | |
lsb-release \ | |
ccache \ | |
zlib1g-dev \ | |
rsyslog \ | |
cmake \ | |
libpcre2-dev \ | |
libpcre3-dev \ | |
libsodium-dev \ | |
libgpgme11-dev \ | |
libstdc++-13-dev \ | |
make \ | |
linux-headers-generic \ | |
git \ | |
clang-18 \ | |
lldb-18 \ | |
lld-18 \ | |
clangd-18 \ | |
clang-tidy-18 \ | |
clang-format-18 \ | |
clang-tools-18 \ | |
llvm-18-dev \ | |
llvm-18-tools \ | |
libomp-18-dev \ | |
libc++-18-dev \ | |
libc++abi-18-dev \ | |
libclang-common-18-dev \ | |
libclang-18-dev \ | |
libclang-cpp18-dev \ | |
libunwind-18-dev \ | |
&& rm -rf /var/lib/apt/lists/* | |
# Configurer les alternatives pour utiliser Clang 18 par défaut | |
RUN update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 100 && \ | |
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 100 | |
# Configurer ccache | |
ENV CCACHE_DIR=/ccache | |
RUN mkdir -p $CCACHE_DIR && chmod 777 $CCACHE_DIR | |
ENV PATH="/usr/lib/ccache:$PATH" | |
# Créer et définir le répertoire de travail | |
WORKDIR /app | |
# Copier les fichiers sources dans le conteneur | |
COPY ./bedrock /app/bedrock | |
# Compiler le projet | |
WORKDIR /app/bedrock | |
# Copier et rendre exécutable le script ci_tests.sh | |
COPY ./bedrock/ci_tests.sh /app/bedrock/ci_tests.sh | |
RUN chmod +x /app/bedrock/ci_tests.sh | |
ENV CC="clang-18" | |
ENV CXX="clang++-18" | |
# Exécuter le script ci_tests.sh | |
RUN make -j64 | |
# Créer un répertoire pour les artefacts de build | |
RUN mkdir -p /output | |
RUN cp bedrock /output/ | |
# Définir le volume pour partager les artefacts | |
VOLUME /output |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment