mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-04 20:05:51 +00:00
feat: New docker images structure, tools image (#2185)
This commit is contained in:
17
.github/actions/build_docker_image/action.yml
vendored
17
.github/actions/build_docker_image/action.yml
vendored
@@ -5,9 +5,6 @@ inputs:
|
|||||||
images:
|
images:
|
||||||
description: Name of the images to use as a base name
|
description: Name of the images to use as a base name
|
||||||
required: true
|
required: true
|
||||||
dockerhub_repo:
|
|
||||||
description: DockerHub repository name
|
|
||||||
required: true
|
|
||||||
push_image:
|
push_image:
|
||||||
description: Whether to push the image to the registry (true/false)
|
description: Whether to push the image to the registry (true/false)
|
||||||
required: true
|
required: true
|
||||||
@@ -20,15 +17,19 @@ inputs:
|
|||||||
platforms:
|
platforms:
|
||||||
description: Platforms to build the image for (e.g. linux/amd64,linux/arm64)
|
description: Platforms to build the image for (e.g. linux/amd64,linux/arm64)
|
||||||
required: true
|
required: true
|
||||||
description:
|
|
||||||
|
dockerhub_repo:
|
||||||
|
description: DockerHub repository name
|
||||||
|
required: false
|
||||||
|
dockerhub_description:
|
||||||
description: Short description of the image
|
description: Short description of the image
|
||||||
required: true
|
required: false
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: composite
|
using: composite
|
||||||
steps:
|
steps:
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
if: ${{ inputs.push_image == 'true' }}
|
if: ${{ inputs.push_image == 'true' && inputs.dockerhub_repo != '' }}
|
||||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
||||||
with:
|
with:
|
||||||
username: ${{ env.DOCKERHUB_USER }}
|
username: ${{ env.DOCKERHUB_USER }}
|
||||||
@@ -62,11 +63,11 @@ runs:
|
|||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
|
||||||
- name: Update DockerHub description
|
- name: Update DockerHub description
|
||||||
if: ${{ inputs.push_image == 'true' }}
|
if: ${{ inputs.push_image == 'true' && inputs.dockerhub_repo != '' }}
|
||||||
uses: peter-evans/dockerhub-description@432a30c9e07499fd01da9f8a49f0faf9e0ca5b77 # v4.0.2
|
uses: peter-evans/dockerhub-description@432a30c9e07499fd01da9f8a49f0faf9e0ca5b77 # v4.0.2
|
||||||
with:
|
with:
|
||||||
username: ${{ env.DOCKERHUB_USER }}
|
username: ${{ env.DOCKERHUB_USER }}
|
||||||
password: ${{ env.DOCKERHUB_PW }}
|
password: ${{ env.DOCKERHUB_PW }}
|
||||||
repository: ${{ inputs.dockerhub_repo }}
|
repository: ${{ inputs.dockerhub_repo }}
|
||||||
short-description: ${{ inputs.description }}
|
short-description: ${{ inputs.dockerhub_description }}
|
||||||
readme-filepath: ${{ inputs.directory }}/README.md
|
readme-filepath: ${{ inputs.directory }}/README.md
|
||||||
|
|||||||
@@ -85,16 +85,16 @@ jobs:
|
|||||||
- name: Build Docker image
|
- name: Build Docker image
|
||||||
uses: ./.github/actions/build_docker_image
|
uses: ./.github/actions/build_docker_image
|
||||||
env:
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
|
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
|
||||||
DOCKERHUB_PW: ${{ secrets.DOCKERHUB_PW }}
|
DOCKERHUB_PW: ${{ secrets.DOCKERHUB_PW }}
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
rippleci/clio
|
|
||||||
ghcr.io/xrplf/clio
|
ghcr.io/xrplf/clio
|
||||||
dockerhub_repo: rippleci/clio
|
rippleci/clio
|
||||||
push_image: ${{ inputs.publish_image }}
|
push_image: ${{ inputs.publish_image }}
|
||||||
directory: docker/clio
|
directory: docker/clio
|
||||||
tags: ${{ inputs.tags }}
|
tags: ${{ inputs.tags }}
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
description: Clio is an XRP Ledger API server.
|
dockerhub_repo: rippleci/clio
|
||||||
|
dockerhub_description: Clio is an XRP Ledger API server.
|
||||||
|
|||||||
108
.github/workflows/update_docker_ci.yml
vendored
108
.github/workflows/update_docker_ci.yml
vendored
@@ -9,6 +9,7 @@ on:
|
|||||||
|
|
||||||
- "docker/ci/**"
|
- "docker/ci/**"
|
||||||
- "docker/compilers/**"
|
- "docker/compilers/**"
|
||||||
|
- "docker/tools/**"
|
||||||
push:
|
push:
|
||||||
branches: [develop]
|
branches: [develop]
|
||||||
paths:
|
paths:
|
||||||
@@ -16,10 +17,9 @@ on:
|
|||||||
|
|
||||||
- ".github/actions/build_docker_image/**"
|
- ".github/actions/build_docker_image/**"
|
||||||
|
|
||||||
# CI image must update when either its Dockerfile changes
|
|
||||||
# or any compilers changed and were pushed by hand
|
|
||||||
- "docker/ci/**"
|
- "docker/ci/**"
|
||||||
- "docker/compilers/**"
|
- "docker/compilers/**"
|
||||||
|
- "docker/tools/**"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
@@ -28,22 +28,115 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_and_push:
|
gcc:
|
||||||
name: Build and push docker image
|
name: Build and push GCC docker image
|
||||||
runs-on: [self-hosted, heavy]
|
runs-on: [self-hosted, heavy]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5
|
||||||
|
with:
|
||||||
|
files: "docker/compilers/gcc/**"
|
||||||
|
|
||||||
|
- uses: ./.github/actions/build_docker_image
|
||||||
|
if: steps.changed-files.outputs.any_changed == 'true'
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
|
||||||
|
DOCKERHUB_PW: ${{ secrets.DOCKERHUB_PW }}
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
ghcr.io/xrplf/clio-gcc
|
||||||
|
rippleci/clio_gcc
|
||||||
|
push_image: ${{ github.event_name != 'pull_request' }}
|
||||||
|
directory: docker/compilers/gcc
|
||||||
|
tags: |
|
||||||
|
type=raw,value=latest
|
||||||
|
type=raw,value=12
|
||||||
|
type=raw,value=${{ github.sha }}
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
dockerhub_repo: rippleci/clio_gcc
|
||||||
|
dockerhub_description: GCC compiler for XRPLF/clio.
|
||||||
|
|
||||||
|
clang:
|
||||||
|
name: Build and push Clang docker image
|
||||||
|
runs-on: [self-hosted, heavy]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5
|
||||||
|
with:
|
||||||
|
files: "docker/compilers/clang/**"
|
||||||
|
|
||||||
|
- uses: ./.github/actions/build_docker_image
|
||||||
|
if: steps.changed-files.outputs.any_changed == 'true'
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
|
||||||
|
DOCKERHUB_PW: ${{ secrets.DOCKERHUB_PW }}
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
ghcr.io/xrplf/clio-clang
|
||||||
|
rippleci/clio_clang
|
||||||
|
push_image: ${{ github.event_name != 'pull_request' }}
|
||||||
|
directory: docker/compilers/clang
|
||||||
|
tags: |
|
||||||
|
type=raw,value=latest
|
||||||
|
type=raw,value=16
|
||||||
|
type=raw,value=${{ github.sha }}
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
dockerhub_repo: rippleci/clio_clang
|
||||||
|
dockerhub_description: Clang compiler for XRPLF/clio.
|
||||||
|
|
||||||
|
tools:
|
||||||
|
name: Build and push tools docker image
|
||||||
|
runs-on: [self-hosted, heavy]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5
|
||||||
|
with:
|
||||||
|
files: "docker/tools/**"
|
||||||
|
|
||||||
|
- uses: ./.github/actions/build_docker_image
|
||||||
|
if: steps.changed-files.outputs.any_changed == 'true'
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
ghcr.io/xrplf/clio-tools
|
||||||
|
push_image: ${{ github.event_name != 'pull_request' }}
|
||||||
|
directory: docker/tools
|
||||||
|
tags: |
|
||||||
|
type=raw,value=latest
|
||||||
|
type=raw,value=${{ github.sha }}
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
|
||||||
|
ci:
|
||||||
|
name: Build and push CI docker image
|
||||||
|
runs-on: [self-hosted, heavy]
|
||||||
|
needs: [gcc, clang, tools]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: ./.github/actions/build_docker_image
|
- uses: ./.github/actions/build_docker_image
|
||||||
env:
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
|
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
|
||||||
DOCKERHUB_PW: ${{ secrets.DOCKERHUB_PW }}
|
DOCKERHUB_PW: ${{ secrets.DOCKERHUB_PW }}
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
rippleci/clio_ci
|
rippleci/clio_ci
|
||||||
ghcr.io/xrplf/clio-ci
|
ghcr.io/xrplf/clio-ci
|
||||||
dockerhub_repo: rippleci/clio_ci
|
|
||||||
push_image: ${{ github.event_name != 'pull_request' }}
|
push_image: ${{ github.event_name != 'pull_request' }}
|
||||||
directory: docker/ci
|
directory: docker/ci
|
||||||
tags: |
|
tags: |
|
||||||
@@ -51,4 +144,5 @@ jobs:
|
|||||||
type=raw,value=gcc_12_clang_16
|
type=raw,value=gcc_12_clang_16
|
||||||
type=raw,value=${{ github.sha }}
|
type=raw,value=${{ github.sha }}
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
description: CI image for XRPLF/clio.
|
dockerhub_repo: rippleci/clio_ci
|
||||||
|
dockerhub_description: CI image for XRPLF/clio.
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
---
|
---
|
||||||
ignored:
|
ignored:
|
||||||
- DL3003
|
- DL3003
|
||||||
|
- DL3007
|
||||||
- DL3008
|
- DL3008
|
||||||
- DL3013
|
- DL3013
|
||||||
- DL3015
|
|
||||||
- DL3027
|
|
||||||
- DL3047
|
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
FROM rippleci/clio_clang:16
|
FROM ghcr.io/xrplf/clio-gcc:12 AS clio-gcc
|
||||||
|
FROM ghcr.io/xrplf/clio-tools:latest AS clio-tools
|
||||||
|
|
||||||
|
FROM ghcr.io/xrplf/clio-clang:16
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
ARG TARGETARCH
|
|
||||||
|
|
||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
@@ -13,23 +16,22 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|||||||
USER root
|
USER root
|
||||||
WORKDIR /root
|
WORKDIR /root
|
||||||
|
|
||||||
ENV CCACHE_VERSION=4.10.2 \
|
ARG LLVM_TOOLS_VERSION=19
|
||||||
LLVM_TOOLS_VERSION=19 \
|
|
||||||
GH_VERSION=2.40.0 \
|
|
||||||
DOXYGEN_VERSION=1.12.0 \
|
|
||||||
CLANG_BUILD_ANALYZER_VERSION=1.6.0 \
|
|
||||||
GIT_CLIFF_VERSION=2.8.0
|
|
||||||
|
|
||||||
# Add repositories
|
# Add repositories
|
||||||
RUN apt-get -qq update \
|
RUN apt-get update \
|
||||||
&& apt-get -qq install -y --no-install-recommends --no-install-suggests gnupg wget curl software-properties-common \
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||||
|
curl \
|
||||||
|
gnupg \
|
||||||
|
wget \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
&& echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-${LLVM_TOOLS_VERSION} main" >> /etc/apt/sources.list \
|
&& echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-${LLVM_TOOLS_VERSION} main" >> /etc/apt/sources.list \
|
||||||
&& wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \
|
&& wget --progress=dot:giga -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
|
||||||
apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# Install packages
|
# Install packages
|
||||||
RUN apt update -qq \
|
RUN apt-get update \
|
||||||
&& apt install -y --no-install-recommends --no-install-suggests \
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||||
bison \
|
bison \
|
||||||
clang-tidy-${LLVM_TOOLS_VERSION} \
|
clang-tidy-${LLVM_TOOLS_VERSION} \
|
||||||
clang-tools-${LLVM_TOOLS_VERSION} \
|
clang-tools-${LLVM_TOOLS_VERSION} \
|
||||||
@@ -49,12 +51,18 @@ RUN apt update -qq \
|
|||||||
conan==1.62 \
|
conan==1.62 \
|
||||||
gcovr \
|
gcovr \
|
||||||
pre-commit \
|
pre-commit \
|
||||||
&& apt-get clean && apt remove -y software-properties-common
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Install gcc-12 and make ldconfig aware of the new libstdc++ location (for gcc)
|
# Install gcc-12 and make ldconfig aware of the new libstdc++ location (for gcc)
|
||||||
# Note: Clang is using libc++ instead
|
# Note: Clang is using libc++ instead
|
||||||
COPY --from=rippleci/clio_gcc:12.3.0 /gcc12.deb /
|
COPY --from=clio-gcc /gcc12.deb /
|
||||||
RUN apt update && apt-get install -y binutils libc6-dev \
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||||
|
binutils \
|
||||||
|
libc6-dev \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
&& dpkg -i /gcc12.deb \
|
&& dpkg -i /gcc12.deb \
|
||||||
&& rm -rf /gcc12.deb \
|
&& rm -rf /gcc12.deb \
|
||||||
&& ldconfig
|
&& ldconfig
|
||||||
@@ -68,43 +76,13 @@ RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100 \
|
|||||||
&& update-alternatives --install /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-12 100 \
|
&& update-alternatives --install /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-12 100 \
|
||||||
&& update-alternatives --install /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-12 100
|
&& update-alternatives --install /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-12 100
|
||||||
|
|
||||||
WORKDIR /tmp
|
COPY --from=clio-tools \
|
||||||
|
/usr/local/bin/ccache \
|
||||||
# Install ccache from source
|
/usr/local/bin/doxygen \
|
||||||
RUN wget "https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}.tar.gz" \
|
/usr/local/bin/ClangBuildAnalyzer \
|
||||||
&& tar xf "ccache-${CCACHE_VERSION}.tar.gz" \
|
/usr/local/bin/git-cliff \
|
||||||
&& cd "ccache-${CCACHE_VERSION}" \
|
/usr/local/bin/gh \
|
||||||
&& mkdir build && cd build \
|
/usr/local/bin/
|
||||||
&& cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. \
|
|
||||||
&& cmake --build . --target install \
|
|
||||||
&& rm -rf /tmp/* /var/tmp/*
|
|
||||||
|
|
||||||
# Install doxygen from source
|
|
||||||
RUN wget "https://github.com/doxygen/doxygen/releases/download/Release_${DOXYGEN_VERSION//./_}/doxygen-${DOXYGEN_VERSION}.src.tar.gz" \
|
|
||||||
&& tar xf "doxygen-${DOXYGEN_VERSION}.src.tar.gz" \
|
|
||||||
&& cd "doxygen-${DOXYGEN_VERSION}" \
|
|
||||||
&& mkdir build && cd build \
|
|
||||||
&& cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. \
|
|
||||||
&& cmake --build . --target install \
|
|
||||||
&& rm -rf /tmp/* /var/tmp/*
|
|
||||||
|
|
||||||
# Install ClangBuildAnalyzer
|
|
||||||
RUN wget "https://github.com/aras-p/ClangBuildAnalyzer/releases/download/v${CLANG_BUILD_ANALYZER_VERSION}/ClangBuildAnalyzer-linux" \
|
|
||||||
&& chmod +x ClangBuildAnalyzer-linux \
|
|
||||||
&& mv ClangBuildAnalyzer-linux /usr/bin/ClangBuildAnalyzer \
|
|
||||||
&& rm -rf /tmp/* /var/tmp/*
|
|
||||||
|
|
||||||
# Install git-cliff
|
|
||||||
RUN wget "https://github.com/orhun/git-cliff/releases/download/v${GIT_CLIFF_VERSION}/git-cliff-${GIT_CLIFF_VERSION}-x86_64-unknown-linux-musl.tar.gz" \
|
|
||||||
&& tar xf git-cliff-${GIT_CLIFF_VERSION}-x86_64-unknown-linux-musl.tar.gz \
|
|
||||||
&& mv git-cliff-${GIT_CLIFF_VERSION}/git-cliff /usr/bin/git-cliff \
|
|
||||||
&& rm -rf /tmp/* /var/tmp/*
|
|
||||||
|
|
||||||
# Install gh
|
|
||||||
RUN wget "https://github.com/cli/cli/releases/download/v${GH_VERSION}/gh_${GH_VERSION}_linux_${TARGETARCH}.tar.gz" \
|
|
||||||
&& tar xf gh_${GH_VERSION}_linux_${TARGETARCH}.tar.gz \
|
|
||||||
&& mv gh_${GH_VERSION}_linux_${TARGETARCH}/bin/gh /usr/bin/gh \
|
|
||||||
&& rm -rf /tmp/* /var/tmp/*
|
|
||||||
|
|
||||||
WORKDIR /root
|
WORKDIR /root
|
||||||
|
|
||||||
|
|||||||
@@ -2,14 +2,17 @@ FROM ubuntu:22.04
|
|||||||
|
|
||||||
COPY ./clio_server /opt/clio/bin/clio_server
|
COPY ./clio_server /opt/clio/bin/clio_server
|
||||||
|
|
||||||
RUN ln -s /opt/clio/bin/clio_server /usr/local/bin/clio_server && \
|
RUN ln -s /opt/clio/bin/clio_server /usr/local/bin/clio_server \
|
||||||
mkdir -p /opt/clio/etc/ && \
|
&& mkdir -p /opt/clio/etc/ \
|
||||||
mkdir -p /opt/clio/log/ && \
|
&& mkdir -p /opt/clio/log/ \
|
||||||
groupadd -g 10001 clio && \
|
&& groupadd -g 10001 clio \
|
||||||
useradd -u 10000 -g 10001 -s /bin/bash clio && \
|
&& useradd -u 10000 -g 10001 -s /bin/bash clio \
|
||||||
chown clio:clio /opt/clio/log && \
|
&& chown clio:clio /opt/clio/log \
|
||||||
apt update && \
|
&& apt-get update \
|
||||||
apt install -y libatomic1
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||||
|
libatomic1 \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
USER clio
|
USER clio
|
||||||
ENTRYPOINT ["/opt/clio/bin/clio_server"]
|
ENTRYPOINT ["/opt/clio/bin/clio_server"]
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
FROM ubuntu:focal
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
|
||||||
ARG TARGETARCH
|
|
||||||
|
|
||||||
SHELL ["/bin/bash", "-c"]
|
|
||||||
|
|
||||||
# hadolint ignore=DL3002
|
|
||||||
USER root
|
|
||||||
WORKDIR /root
|
|
||||||
|
|
||||||
ENV CLANG_VERSION=16
|
|
||||||
|
|
||||||
RUN apt update -qq \
|
|
||||||
&& apt install -qq -y --no-install-recommends --no-install-suggests \
|
|
||||||
wget software-properties-common gnupg
|
|
||||||
|
|
||||||
RUN wget https://apt.llvm.org/llvm.sh \
|
|
||||||
&& chmod +x llvm.sh \
|
|
||||||
&& ./llvm.sh ${CLANG_VERSION} \
|
|
||||||
&& rm -rf llvm.sh \
|
|
||||||
&& apt-get install -y libc++-16-dev libc++abi-16-dev
|
|
||||||
30
docker/compilers/clang/Dockerfile
Normal file
30
docker/compilers/clang/Dockerfile
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
SHELL ["/bin/bash", "-c"]
|
||||||
|
|
||||||
|
# hadolint ignore=DL3002
|
||||||
|
USER root
|
||||||
|
WORKDIR /root
|
||||||
|
|
||||||
|
ARG CLANG_VERSION=16
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||||
|
wget \
|
||||||
|
software-properties-common \
|
||||||
|
gnupg \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN wget --progress=dot:giga https://apt.llvm.org/llvm.sh \
|
||||||
|
&& chmod +x llvm.sh \
|
||||||
|
&& ./llvm.sh ${CLANG_VERSION} \
|
||||||
|
&& rm -rf llvm.sh \
|
||||||
|
&& apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||||
|
libc++-${CLANG_VERSION}-dev \
|
||||||
|
libc++abi-${CLANG_VERSION}-dev \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
@@ -1,48 +1,59 @@
|
|||||||
FROM ubuntu:focal as build
|
FROM ubuntu:20.04 AS build
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
ARG TARGETARCH
|
ARG TARGETARCH
|
||||||
ARG UBUNTU_VERSION=20.04
|
ARG UBUNTU_VERSION=20.04
|
||||||
ARG GCC_VERSION=12.3.0
|
ARG GCC_VERSION=12.3.0
|
||||||
ARG BUILD_VERSION=1
|
ARG BUILD_VERSION=2
|
||||||
|
|
||||||
RUN apt update && apt install -y wget build-essential file flex libz-dev libzstd-dev
|
RUN apt-get update \
|
||||||
RUN wget https://gcc.gnu.org/pub/gcc/releases/gcc-$GCC_VERSION/gcc-$GCC_VERSION.tar.gz \
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||||
|
build-essential \
|
||||||
|
file \
|
||||||
|
flex \
|
||||||
|
libz-dev \
|
||||||
|
libzstd-dev \
|
||||||
|
software-properties-common \
|
||||||
|
wget \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN wget --progress=dot:giga https://gcc.gnu.org/pub/gcc/releases/gcc-$GCC_VERSION/gcc-$GCC_VERSION.tar.gz \
|
||||||
&& tar xf gcc-$GCC_VERSION.tar.gz \
|
&& tar xf gcc-$GCC_VERSION.tar.gz \
|
||||||
&& cd /gcc-$GCC_VERSION && ./contrib/download_prerequisites
|
&& cd /gcc-$GCC_VERSION && ./contrib/download_prerequisites
|
||||||
|
|
||||||
RUN mkdir /${TARGETARCH}-gcc-12
|
RUN mkdir /${TARGETARCH}-gcc-12
|
||||||
WORKDIR /${TARGETARCH}-gcc-12
|
WORKDIR /${TARGETARCH}-gcc-12
|
||||||
RUN /gcc-$GCC_VERSION/configure \
|
RUN /gcc-$GCC_VERSION/configure \
|
||||||
--with-pkgversion="clio-build-$BUILD_VERSION https://github.com/XRPLF/clio" \
|
--with-pkgversion="clio-build-$BUILD_VERSION https://github.com/XRPLF/clio" \
|
||||||
--enable-languages=c,c++ \
|
--enable-languages=c,c++ \
|
||||||
--prefix=/usr \
|
--prefix=/usr \
|
||||||
--with-gcc-major-version-only \
|
--with-gcc-major-version-only \
|
||||||
--program-suffix=-12 \
|
--program-suffix=-12 \
|
||||||
--enable-shared \
|
--enable-shared \
|
||||||
--enable-linker-build-id \
|
--enable-linker-build-id \
|
||||||
--libexecdir=/usr/lib \
|
--libexecdir=/usr/lib \
|
||||||
--without-included-gettext \
|
--without-included-gettext \
|
||||||
--enable-threads=posix \
|
--enable-threads=posix \
|
||||||
--libdir=/usr/lib \
|
--libdir=/usr/lib \
|
||||||
--disable-nls \
|
--disable-nls \
|
||||||
--enable-clocale=gnu \
|
--enable-clocale=gnu \
|
||||||
--enable-libstdcxx-backtrace=yes \
|
--enable-libstdcxx-backtrace=yes \
|
||||||
--enable-libstdcxx-debug \
|
--enable-libstdcxx-debug \
|
||||||
--enable-libstdcxx-time=yes \
|
--enable-libstdcxx-time=yes \
|
||||||
--with-default-libstdcxx-abi=new \
|
--with-default-libstdcxx-abi=new \
|
||||||
--enable-gnu-unique-object \
|
--enable-gnu-unique-object \
|
||||||
--disable-vtable-verify \
|
--disable-vtable-verify \
|
||||||
--enable-plugin \
|
--enable-plugin \
|
||||||
--enable-default-pie \
|
--enable-default-pie \
|
||||||
--with-system-zlib \
|
--with-system-zlib \
|
||||||
--enable-libphobos-checking=release \
|
--enable-libphobos-checking=release \
|
||||||
--with-target-system-zlib=auto \
|
--with-target-system-zlib=auto \
|
||||||
--disable-werror \
|
--disable-werror \
|
||||||
--enable-cet \
|
--enable-cet \
|
||||||
--disable-multilib \
|
--disable-multilib \
|
||||||
--without-cuda-driver \
|
--without-cuda-driver \
|
||||||
--enable-checking=release \
|
--enable-checking=release \
|
||||||
&& make -j "$(nproc)" \
|
&& make -j "$(nproc)" \
|
||||||
&& make install-strip DESTDIR=/gcc-$GCC_VERSION-$BUILD_VERSION-ubuntu-$UBUNTU_VERSION \
|
&& make install-strip DESTDIR=/gcc-$GCC_VERSION-$BUILD_VERSION-ubuntu-$UBUNTU_VERSION \
|
||||||
&& mkdir -p /gcc-$GCC_VERSION-$BUILD_VERSION-ubuntu-$UBUNTU_VERSION/usr/share/gdb/auto-load/usr/lib64 \
|
&& mkdir -p /gcc-$GCC_VERSION-$BUILD_VERSION-ubuntu-$UBUNTU_VERSION/usr/share/gdb/auto-load/usr/lib64 \
|
||||||
@@ -58,11 +69,16 @@ RUN mkdir /gcc-$GCC_VERSION-$BUILD_VERSION-ubuntu-$UBUNTU_VERSION/DEBIAN \
|
|||||||
&& dpkg-deb --build --root-owner-group /gcc-$GCC_VERSION-$BUILD_VERSION-ubuntu-$UBUNTU_VERSION /gcc12.deb
|
&& dpkg-deb --build --root-owner-group /gcc-$GCC_VERSION-$BUILD_VERSION-ubuntu-$UBUNTU_VERSION /gcc12.deb
|
||||||
|
|
||||||
# Create final image
|
# Create final image
|
||||||
FROM ubuntu:focal as gcc
|
FROM ubuntu:20.04
|
||||||
COPY --from=build /gcc12.deb /
|
COPY --from=build /gcc12.deb /
|
||||||
|
|
||||||
# Make gcc-12 available but also leave gcc12.deb for others to copy if needed
|
# Make gcc-12 available but also leave gcc12.deb for others to copy if needed
|
||||||
RUN apt update && apt-get install -y binutils libc6-dev \
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||||
|
binutils \
|
||||||
|
libc6-dev \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
&& dpkg -i /gcc12.deb
|
&& dpkg -i /gcc12.deb
|
||||||
|
|
||||||
RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100 \
|
RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100 \
|
||||||
64
docker/tools/Dockerfile
Normal file
64
docker/tools/Dockerfile
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
ARG TARGETARCH
|
||||||
|
|
||||||
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends --no-install-suggests \
|
||||||
|
bison \
|
||||||
|
build-essential \
|
||||||
|
cmake \
|
||||||
|
flex \
|
||||||
|
ninja-build \
|
||||||
|
software-properties-common \
|
||||||
|
wget \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
WORKDIR /tmp
|
||||||
|
|
||||||
|
ARG CCACHE_VERSION=4.11.3
|
||||||
|
RUN wget --progress=dot:giga "https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}.tar.gz" \
|
||||||
|
&& tar xf "ccache-${CCACHE_VERSION}.tar.gz" \
|
||||||
|
&& cd "ccache-${CCACHE_VERSION}" \
|
||||||
|
&& mkdir build \
|
||||||
|
&& cd build \
|
||||||
|
&& cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTING=False .. \
|
||||||
|
&& cmake --build . --target install \
|
||||||
|
&& rm -rf /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
ARG DOXYGEN_VERSION=1.12.0
|
||||||
|
RUN wget --progress=dot:giga "https://github.com/doxygen/doxygen/releases/download/Release_${DOXYGEN_VERSION//./_}/doxygen-${DOXYGEN_VERSION}.src.tar.gz" \
|
||||||
|
&& tar xf "doxygen-${DOXYGEN_VERSION}.src.tar.gz" \
|
||||||
|
&& cd "doxygen-${DOXYGEN_VERSION}" \
|
||||||
|
&& mkdir build \
|
||||||
|
&& cd build \
|
||||||
|
&& cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. \
|
||||||
|
&& cmake --build . --target install \
|
||||||
|
&& rm -rf /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
ARG CLANG_BUILD_ANALYZER_VERSION=1.6.0
|
||||||
|
RUN wget --progress=dot:giga "https://github.com/aras-p/ClangBuildAnalyzer/archive/refs/tags/v${CLANG_BUILD_ANALYZER_VERSION}.tar.gz" \
|
||||||
|
&& tar xf "v${CLANG_BUILD_ANALYZER_VERSION}.tar.gz" \
|
||||||
|
&& cd "ClangBuildAnalyzer-${CLANG_BUILD_ANALYZER_VERSION}" \
|
||||||
|
&& mkdir build \
|
||||||
|
&& cd build \
|
||||||
|
&& cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. \
|
||||||
|
&& cmake --build . --target install \
|
||||||
|
&& rm -rf /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
ARG GIT_CLIFF_VERSION=2.9.1
|
||||||
|
RUN wget --progress=dot:giga "https://github.com/orhun/git-cliff/releases/download/v${GIT_CLIFF_VERSION}/git-cliff-${GIT_CLIFF_VERSION}-x86_64-unknown-linux-musl.tar.gz" \
|
||||||
|
&& tar xf git-cliff-${GIT_CLIFF_VERSION}-x86_64-unknown-linux-musl.tar.gz \
|
||||||
|
&& mv git-cliff-${GIT_CLIFF_VERSION}/git-cliff /usr/local/bin/git-cliff \
|
||||||
|
&& rm -rf /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
ARG GH_VERSION=2.74.0
|
||||||
|
RUN wget --progress=dot:giga "https://github.com/cli/cli/releases/download/v${GH_VERSION}/gh_${GH_VERSION}_linux_${TARGETARCH}.tar.gz" \
|
||||||
|
&& tar xf gh_${GH_VERSION}_linux_${TARGETARCH}.tar.gz \
|
||||||
|
&& mv gh_${GH_VERSION}_linux_${TARGETARCH}/bin/gh /usr/local/bin/gh \
|
||||||
|
&& rm -rf /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
WORKDIR /root
|
||||||
Reference in New Issue
Block a user