From 760ba1a44c665b3c1447f1cd62e00d2165a3e70f Mon Sep 17 00:00:00 2001 From: "denis.patrakeev" Date: Wed, 1 Nov 2023 16:47:18 +0300 Subject: [PATCH] [DO-107] 14-node20 (!1) DO-107 Reviewed-on: https://git.avroid.tech/Docker/clang-format/pulls/1 Co-authored-by: denis.patrakeev Co-committed-by: denis.patrakeev --- .gitignore | 6 ++++ CHANGELOG.md | 13 +++++++++ Dockerfile | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 35 ++++++++++++++++++++++++ README.md | 30 ++++++++++++++++++-- 5 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 Dockerfile create mode 100644 Makefile diff --git a/.gitignore b/.gitignore index 8c2b884..cba20bd 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,9 @@ # Built Visual Studio Code Extensions *.vsix +*~ +**/.DS_Store + +# pyCharm +.idea + diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d81f613 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,13 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [14-node20] - 2023-11-01 + +### Added +* image with clang-format 11 based on Ubuntu 22.04 +* install NodeJS 20 for work Gitea Actions +* add bash util parallel diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..960eb6b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,77 @@ +ARG DOCKER_REGISTRY=harbor.avroid.tech/docker-hub-proxy/library +ARG UBUNTU_VERSION=22.04 + +# https://hub.docker.com/_/ubuntu +FROM ${DOCKER_REGISTRY}/ubuntu:${UBUNTU_VERSION} + +LABEL maintainer="devops " \ + description="Image with LLVM clang-format, for check sources" \ + tools.nodejs.version="20.9.0" + +ARG CLANG_TOOLS_VERSION=14 +ARG NODEJS_VERSION=20.9.0 + +ARG UID=2000 +ARG GID=2000 +ARG USER=jenkins +ARG USER_GROUP=jenkins +ARG USER_HOME=/home/${USER} + +# Nexus +ARG NEXUS_DOMAIN_NAME='nexus.avroid.tech' +ARG NEXUS_URL="https://${NEXUS_DOMAIN_NAME}" + +ENV TZ Europe/Moscow + +# Подавляем вывод в консоль интерактивных диалогов у служебных команд +ENV DEBIAN_FRONTEND noninteractive + +RUN sed -ie "s/deb\ http\:\/\/archive.ubuntu.com\/ubuntu/deb\ [trusted=yes] https\:\/\/${NEXUS_DOMAIN_NAME}\/repository\/all-apt-proxy-archive-ubuntu-com/g" /etc/apt/sources.list \ + && sed -ie "s/deb\ http\:\/\/security.ubuntu.com\/ubuntu/deb\ [trusted=yes] https\:\/\/${NEXUS_DOMAIN_NAME}\/repository\/all-apt-proxy-security-ubuntu-com/g" /etc/apt/sources.list \ + && echo "Acquire::https::${NEXUS_DOMAIN_NAME}::Verify-Peer \"false\";" > /etc/apt/apt.conf.d/99nexus_proxy_cert \ + && apt-get update \ + && apt-get install -y \ + tzdata \ + apt-utils \ + ca-certificates \ + software-properties-common \ + wget \ + gnupg \ + && ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \ + && dpkg-reconfigure -f noninteractive tzdata \ + && apt-get dist-upgrade -y \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ + && groupadd -g ${GID} ${USER_GROUP} \ + && useradd -m -d ${USER_HOME} -g ${GID} -u ${UID} --shell /bin/bash ${USER} + +# Install NodeJS from base repo and fix version NodeJS for work Gitea Actions +RUN apt update \ + && apt install -y \ + nodejs \ + npm \ + && npm i -g n \ + && npm i -g corepack \ + && n install ${NODEJS_VERSION} \ + && apt clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +# clan-format from official repository with mirror on Nexus +RUN wget -O - "${NEXUS_URL}/repository/all-raw-proxy-apt-llvm-org/llvm-snapshot.gpg.key" | apt-key add - \ + && add-apt-repository \ + "deb ${NEXUS_URL}/repository/all-apt-proxy-apt-llvm-org/jammy/ llvm-toolchain-jammy-${CLANG_TOOLS_VERSION} main" \ + && apt-get update \ + && apt-get install -y \ + clang-format-${CLANG_TOOLS_VERSION} \ + clang-tidy-${CLANG_TOOLS_VERSION} \ + parallel \ + && ln -s /usr/bin/clang-format-${CLANG_TOOLS_VERSION} /usr/bin/clang-format \ + && ln -s /usr/bin/clang-tidy-${CLANG_TOOLS_VERSION} /usr/bin/clang-tidy \ + && apt clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +USER ${USER} + +WORKDIR ${USER_HOME} + +CMD ["/bin/bash"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3456ef8 --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ +.PHONY: all build push getTag clean + +IMAGE_NAME = clang-format +IMAGE_GROUP = devops +APP_VERSION = 14 +REVISION = -node20 +IMAGE_TAG = $(APP_VERSION)$(REVISION) +DOCKER_REGISTRY = harbor.avroid.tech + +all: + @echo 'DEFAULT:' + @echo ' make build' + @echo ' make push' + @echo ' make getTag' + @echo ' make clean' + +build: + DOCKER_BUILDKIT=1 docker build \ + --no-cache \ + --pull \ + --platform linux/amd64 \ + -t $(DOCKER_REGISTRY)/$(IMAGE_GROUP)/$(IMAGE_NAME):$(IMAGE_TAG) \ + --build-arg CLANG_TOOLS_VERSION=$(APP_VERSION) . + +push: +ifeq ($(CI), false) + docker login https://$(DOCKER_REGISTRY) +endif + docker push $(DOCKER_REGISTRY)/$(IMAGE_GROUP)/$(IMAGE_NAME):$(IMAGE_TAG) + +getTag: + @echo $(IMAGE_TAG) + +clean: + docker rmi $(DOCKER_REGISTRY)/$(IMAGE_GROUP)/$(IMAGE_NAME):$(IMAGE_TAG) diff --git a/README.md b/README.md index 0c34ebd..44f0fe9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,29 @@ -# clang-format +# Clang-format -Image with clang-format for check sources \ No newline at end of file +## Данный репозиторий содержит clang-format для автоматического форматирование кода на C/С++ + +Для сборки образа выполните + +```bash +make build +``` + +Для загрузки образа в harbor выполните + +```bash +make push +``` + +Для просмотра версии тега докер образа выполните + +```bash +make getTag +``` + +Для удаления образа из системы выполните + +```bash +make clean +``` + +За версию clang-format отвечает директива APP_VERSION в [Makefile](./Makefile#L5)