diff --git a/.github/workflows/package_all.yaml b/.github/workflows/package_all.yaml index 1573dfc7f..e0b2e6714 100644 --- a/.github/workflows/package_all.yaml +++ b/.github/workflows/package_all.yaml @@ -73,6 +73,23 @@ jobs: name: debian-10 path: build/output/debian-10/memgraph*.deb + debian-11: + runs-on: [self-hosted, DockerMgBuild] + timeout-minutes: 60 + steps: + - name: "Set up repository" + uses: actions/checkout@v2 + with: + fetch-depth: 0 # Required because of release/get_version.py + - name: "Build package" + run: | + ./release/package/run.sh package debian-11 + - name: "Upload package" + uses: actions/upload-artifact@v2 + with: + name: debian-11 + path: build/output/debian-11/memgraph*.deb + docker: runs-on: [self-hosted, DockerMgBuild] timeout-minutes: 60 diff --git a/environment/os/debian-11.sh b/environment/os/debian-11.sh new file mode 100755 index 000000000..3db22f8ec --- /dev/null +++ b/environment/os/debian-11.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +set -Eeuo pipefail + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +source "$DIR/../util.sh" + +TOOLCHAIN_BUILD_DEPS=( + coreutils gcc g++ build-essential make # generic build tools + wget # used for archive download + gnupg # used for archive signature verification + tar gzip bzip2 xz-utils unzip # used for archive unpacking + zlib1g-dev # zlib library used for all builds + libexpat1-dev libipt-dev libbabeltrace-dev liblzma-dev python3-dev texinfo # for gdb + libcurl4-openssl-dev # for cmake + libreadline-dev # for cmake and llvm + libffi-dev libxml2-dev # for llvm + libedit-dev libpcre3-dev automake bison # for swig +) + +TOOLCHAIN_RUN_DEPS=( + make # generic build tools + tar gzip bzip2 xz-utils # used for archive unpacking + zlib1g # zlib library used for all builds + libexpat1 libipt2 libbabeltrace1 liblzma5 python3 # for gdb + libcurl4 # for cmake + libreadline8 # for cmake and llvm + libffi7 libxml2 # for llvm +) + +MEMGRAPH_BUILD_DEPS=( + git # source code control + make pkg-config # build system + curl wget # for downloading libs + uuid-dev default-jre-headless # required by antlr + libreadline-dev # for memgraph console + libpython3-dev python3-dev # for query modules + libssl-dev + libseccomp-dev + netcat # tests are using nc to wait for memgraph + python3 virtualenv python3-virtualenv python3-pip # for qa, macro_benchmark and stress tests + python3-yaml # for the configuration generator + libcurl4-openssl-dev # mg-requests + sbcl # for custom Lisp C++ preprocessing + doxygen graphviz # source documentation generators + mono-runtime mono-mcs zip unzip default-jdk-headless # for driver tests + dotnet-sdk-3.1 golang nodejs npm + autoconf # for jemalloc code generation +) + +list() { + echo "$1" +} + +check() { + check_all_dpkg "$1" +} + +install() { + cat >/etc/apt/sources.list <> /home/gh/actions-runner/.env + else + echo "NOTE: export LANG=en_US.utf8" + fi + apt install -y wget + for pkg in $1; do + if [ "$pkg" == dotnet-sdk-3.1 ]; then + if ! dpkg -s "$pkg" 2>/dev/null >/dev/null; then + wget -nv https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb + dpkg -i packages-microsoft-prod.deb + apt-get update + apt-get install -y apt-transport-https dotnet-sdk-3.1 + fi + continue + fi + apt install -y "$pkg" + done +} + +deps=$2"[*]" +"$1" "${!deps}" diff --git a/release/package/debian-11/Dockerfile b/release/package/debian-11/Dockerfile new file mode 100644 index 000000000..876768a68 --- /dev/null +++ b/release/package/debian-11/Dockerfile @@ -0,0 +1,17 @@ +FROM debian:11 + +ARG TOOLCHAIN_VERSION + +# Stops tzdata interactive configuration. +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt update && apt install -y \ + ca-certificates wget git +# Do NOT be smart here and clean the cache because the container is used in the +# stateful context. + +RUN wget -q https://s3-eu-west-1.amazonaws.com/deps.memgraph.io/${TOOLCHAIN_VERSION}/${TOOLCHAIN_VERSION}-binaries-debian-11.tar.gz \ + -O ${TOOLCHAIN_VERSION}-binaries-debian-11.tar.gz \ + && tar xzvf ${TOOLCHAIN_VERSION}-binaries-debian-11.tar.gz -C /opt + +ENTRYPOINT ["sleep", "infinity"] diff --git a/release/package/docker-compose.yml b/release/package/docker-compose.yml index b6ad75faf..9be595cab 100644 --- a/release/package/docker-compose.yml +++ b/release/package/docker-compose.yml @@ -16,6 +16,10 @@ services: build: context: debian-10 container_name: "mgbuild_debian-10" + mgbuild_debian-11: + build: + context: debian-11 + container_name: "mgbuild_debian-11" mgbuild_ubuntu-18.04: build: context: ubuntu-18.04 diff --git a/release/package/run.sh b/release/package/run.sh index a5b64046f..9c3767aec 100755 --- a/release/package/run.sh +++ b/release/package/run.sh @@ -3,7 +3,7 @@ set -Eeuo pipefail SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -SUPPORTED_OS=(centos-7 centos-8 debian-9 debian-10 ubuntu-18.04 ubuntu-20.04) +SUPPORTED_OS=(centos-7 centos-8 debian-9 debian-10 debian-11 ubuntu-18.04 ubuntu-20.04) PROJECT_ROOT="$SCRIPT_DIR/../.." TOOLCHAIN_VERSION="toolchain-v3" ACTIVATE_TOOLCHAIN="source /opt/${TOOLCHAIN_VERSION}/activate"