[DO-107] 14-node20 (!1)

DO-107

Reviewed-on: https://git.avroid.tech/Docker/clang-format/pulls/1
Co-authored-by: denis.patrakeev <denis.patrakeev@avroid.tech>
Co-committed-by: denis.patrakeev <denis.patrakeev@avroid.tech>
This commit is contained in:
denis.patrakeev
2023-11-01 16:47:18 +03:00
committed by Denis Patrakeev
parent 49838445bd
commit 760ba1a44c
5 changed files with 159 additions and 2 deletions

6
.gitignore vendored
View File

@@ -12,3 +12,9 @@
# Built Visual Studio Code Extensions # Built Visual Studio Code Extensions
*.vsix *.vsix
*~
**/.DS_Store
# pyCharm
.idea

13
CHANGELOG.md Normal file
View File

@@ -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

77
Dockerfile Normal file
View File

@@ -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 <devops@avroid.tech>" \
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"]

35
Makefile Normal file
View File

@@ -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)

View File

@@ -1,3 +1,29 @@
# clang-format # Clang-format
Image with clang-format for check sources ## Данный репозиторий содержит clang-format для автоматического форматирование кода на C/С++
Для сборки образа выполните
```bash
make build
```
Для загрузки образа в harbor выполните
```bash
make push
```
Для просмотра версии тега докер образа выполните
```bash
make getTag
```
Для удаления образа из системы выполните
```bash
make clean
```
За версию clang-format отвечает директива APP_VERSION в [Makefile](./Makefile#L5)