diff --git a/.github/workflows/publish-ubuntu-22.04-images.yaml b/.github/workflows/publish-ubuntu-22.04-images.yaml index 9735c1058085..43cd01b1c125 100644 --- a/.github/workflows/publish-ubuntu-22.04-images.yaml +++ b/.github/workflows/publish-ubuntu-22.04-images.yaml @@ -32,3 +32,7 @@ jobs: run: | docker build -t ghcr.io/userver-framework/ubuntu-22.04-userver-pg:${USERVER_IMAGE_TAG} -f scripts/docker/ubuntu-22.04-pg.dockerfile . docker push ghcr.io/userver-framework/ubuntu-22.04-userver-pg:${USERVER_IMAGE_TAG} + - name: Build the ubuntu-22.04-userver-pg-dev Docker image + run: | + docker build -t ghcr.io/userver-framework/ubuntu-22.04-userver-pg-dev:${USERVER_IMAGE_TAG} -f scripts/docker/ubuntu-22.04-pg-dev.dockerfile . + docker push ghcr.io/userver-framework/ubuntu-22.04-userver-pg-dev:${USERVER_IMAGE_TAG} diff --git a/.mapping.json b/.mapping.json index 683bc52c7364..56d4fefa2dbb 100644 --- a/.mapping.json +++ b/.mapping.json @@ -3440,6 +3440,8 @@ "scripts/docker/pip-install.sh":"taxi/uservices/userver/scripts/docker/pip-install.sh", "scripts/docker/run_as_user.sh":"taxi/uservices/userver/scripts/docker/run_as_user.sh", "scripts/docker/setup-base-ubuntu-22.04-env.sh":"taxi/uservices/userver/scripts/docker/setup-base-ubuntu-22.04-env.sh", + "scripts/docker/setup-dev.sh":"taxi/uservices/userver/scripts/docker/setup-dev.sh", + "scripts/docker/ubuntu-22.04-pg-dev.dockerfile":"taxi/uservices/userver/scripts/docker/ubuntu-22.04-pg-dev.dockerfile", "scripts/docker/ubuntu-22.04-pg.dockerfile":"taxi/uservices/userver/scripts/docker/ubuntu-22.04-pg.dockerfile", "scripts/docker/ubuntu-22.04.dockerfile":"taxi/uservices/userver/scripts/docker/ubuntu-22.04.dockerfile", "scripts/docs/README.md":"taxi/uservices/userver/scripts/docs/README.md", diff --git a/scripts/docker/setup-dev.sh b/scripts/docker/setup-dev.sh new file mode 100644 index 000000000000..8ed6323dd488 --- /dev/null +++ b/scripts/docker/setup-dev.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Exit on any error and treat unset variables as errors, print all commands +set -euox pipefail + +# Install a proper compilation toolchain +apt update +DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \ + clang-18 \ + lld-18 \ + llvm-18 \ + clangd-18 \ + clang-format-18 \ + clang-tidy-18 \ + libclang-rt-18-dev +apt clean all + +# Prefer clang-18 toolchain by default +update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 100 +update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100 +update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 100 +update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100 +update-alternatives --install /usr/bin/lld lld /usr/bin/lld-18 100 +update-alternatives --install /usr/bin/ld ld /usr/bin/lld 100 +update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-18 100 +update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-18 100 +update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-18 100 + +# Create user "user" for non-root access to services in devcontainer +USERNAME=user +USER_UID=1000 +USER_GID=$USER_UID +groupadd --gid $USER_GID $USERNAME \ + && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \ + && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \ + && chmod 0440 /etc/sudoers.d/$USERNAME diff --git a/scripts/docker/ubuntu-22.04-pg-dev.dockerfile b/scripts/docker/ubuntu-22.04-pg-dev.dockerfile new file mode 100644 index 000000000000..e273c7a5a87d --- /dev/null +++ b/scripts/docker/ubuntu-22.04-pg-dev.dockerfile @@ -0,0 +1,6 @@ +FROM ghcr.io/userver-framework/ubuntu-22.04-userver-pg:latest + +COPY scripts/docker/setup-dev.sh /userver_tmp/ +RUN /userver_tmp/setup-dev.sh && rm -rf /userver_tmp + +EXPOSE 8080-8100