mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-08-18 12:08:22 +00:00
f5f5d468bb
* chore: update CI config Signed-off-by: shuiyisong <xixing.sys@gmail.com> * chore: add CI Signed-off-by: shuiyisong <xixing.sys@gmail.com> * chore: update CI config Signed-off-by: shuiyisong <xixing.sys@gmail.com> * ci: report otelgen runner diagnostics Signed-off-by: shuiyisong <xixing.sys@gmail.com> * chore: add script to draw result diagram Signed-off-by: shuiyisong <xixing.sys@gmail.com> --------- Signed-off-by: shuiyisong <xixing.sys@gmail.com>
117 lines
4.8 KiB
Docker
117 lines
4.8 KiB
Docker
FROM golang:1.23@sha256:e87b2a5f6df2dff71ea330d55d54f4979eb380ae58a7e3aabc9d53121243e689 AS otelgen
|
|
|
|
ARG OTELGEN_COMMIT=863a3f395d062c7322cc1de08a38774b7fdaa6c8
|
|
|
|
RUN git init /tmp/otelgen \
|
|
&& git -C /tmp/otelgen remote add origin https://github.com/WenyXu/otelgen.git \
|
|
&& git -C /tmp/otelgen fetch --depth=1 origin "${OTELGEN_COMMIT}" \
|
|
&& test "$(git -C /tmp/otelgen rev-parse FETCH_HEAD)" = "${OTELGEN_COMMIT}" \
|
|
&& git -C /tmp/otelgen checkout --detach FETCH_HEAD \
|
|
&& cd /tmp/otelgen \
|
|
&& CGO_ENABLED=0 go build -trimpath \
|
|
-ldflags "-s -w -X main.version=${OTELGEN_COMMIT} -X main.commit=${OTELGEN_COMMIT}" \
|
|
-o /usr/local/bin/otelgen ./cmd/otelgen
|
|
|
|
FROM ghcr.io/astral-sh/uv@sha256:3d868e555f8f1dbc324afa005066cd11e1053fc4743b9808ca8025283e65efa5 AS uv
|
|
FROM ghcr.io/actions/actions-runner@sha256:08c30b0a7105f64bddfc485d2487a22aa03932a791402393352fdf674bda2c29
|
|
|
|
USER root
|
|
|
|
ARG SCCACHE_VERSION=0.16.0
|
|
ARG SCCACHE_SHA256=aec995a83ad3dff3d14b6314e08858b7b73d35ca85a5bcf3d3a9ec07dee35588
|
|
ARG RUSTUP_INIT_VERSION=1.29.0
|
|
ARG RUSTUP_INIT_TARGET=x86_64-unknown-linux-gnu
|
|
ARG RUSTUP_INIT_SHA256=4acc9acc76d5079515b46346a485974457b5a79893cfb01112423c89aeb5aa10
|
|
ARG RUST_TOOLCHAIN=nightly-2026-03-21
|
|
|
|
ENV RUSTUP_HOME=/opt/rustup \
|
|
CARGO_HOME=/opt/cargo \
|
|
RUSTUP_TOOLCHAIN=${RUST_TOOLCHAIN} \
|
|
RUSTUP_AUTO_INSTALL=0 \
|
|
PATH=/opt/cargo/bin:${PATH}
|
|
|
|
RUN apt-get update \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
ca-certificates \
|
|
clang \
|
|
cmake \
|
|
curl \
|
|
git \
|
|
gzip \
|
|
jq \
|
|
libprotobuf-dev \
|
|
libssl-dev \
|
|
mold \
|
|
openssh-client \
|
|
pkg-config \
|
|
protobuf-compiler \
|
|
python3 \
|
|
sudo \
|
|
tar \
|
|
unzip \
|
|
wget \
|
|
xz-utils \
|
|
zip \
|
|
zstd \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
COPY --from=uv /uv /uvx /usr/local/bin/
|
|
COPY --from=otelgen /usr/local/bin/otelgen /usr/local/bin/otelgen
|
|
|
|
RUN curl --fail --location --silent --show-error \
|
|
--output /tmp/sccache.tar.gz \
|
|
"https://github.com/mozilla/sccache/releases/download/v${SCCACHE_VERSION}/sccache-v${SCCACHE_VERSION}-x86_64-unknown-linux-musl.tar.gz" \
|
|
&& echo "${SCCACHE_SHA256} /tmp/sccache.tar.gz" | sha256sum --check --status - \
|
|
&& mkdir --parents /tmp/sccache \
|
|
&& tar --extract --gzip --file /tmp/sccache.tar.gz \
|
|
--directory /tmp/sccache --strip-components=1 \
|
|
"sccache-v${SCCACHE_VERSION}-x86_64-unknown-linux-musl/sccache" \
|
|
&& install --mode=0755 /tmp/sccache/sccache /usr/local/bin/sccache \
|
|
&& rm -rf /tmp/sccache.tar.gz /tmp/sccache
|
|
|
|
RUN curl --fail --location --silent --show-error \
|
|
--output /tmp/rustup-init \
|
|
"https://static.rust-lang.org/rustup/archive/${RUSTUP_INIT_VERSION}/${RUSTUP_INIT_TARGET}/rustup-init" \
|
|
&& echo "${RUSTUP_INIT_SHA256} /tmp/rustup-init" | sha256sum --check --status - \
|
|
&& chmod 0755 /tmp/rustup-init \
|
|
&& /tmp/rustup-init -y --profile minimal --default-toolchain "${RUST_TOOLCHAIN}" --no-modify-path \
|
|
&& rm -f /tmp/rustup-init \
|
|
&& chown -R root:root /opt/rustup /opt/cargo \
|
|
&& chmod -R go-w /opt/rustup /opt/cargo \
|
|
&& find /opt/rustup /opt/cargo -type d -exec chmod 0755 {} + \
|
|
&& find /opt/rustup /opt/cargo -type f -exec chmod a+r {} +
|
|
|
|
USER runner
|
|
|
|
RUN set -eu \
|
|
&& test "$(id -u)" = "1001" \
|
|
&& temporary_cargo_home="$(mktemp --directory)" \
|
|
&& temporary_proto_dir="" \
|
|
&& cleanup() { rm -rf "${temporary_cargo_home}" "${temporary_proto_dir}"; } \
|
|
&& trap cleanup 0 \
|
|
&& export CARGO_HOME="${temporary_cargo_home}" \
|
|
&& test "${RUSTUP_AUTO_INSTALL}" = "0" \
|
|
&& rustup --version \
|
|
&& cargo --version \
|
|
&& rustc --version \
|
|
&& active_toolchain="$(rustup show active-toolchain)" \
|
|
&& printf 'Active toolchain: %s\n' "${active_toolchain}" \
|
|
&& case "${active_toolchain}" in "${RUST_TOOLCHAIN}-x86_64-unknown-linux-gnu"|"${RUST_TOOLCHAIN}-x86_64-unknown-linux-gnu "*) ;; *) exit 1;; esac \
|
|
&& test ! -w /opt/rustup \
|
|
&& test ! -w /opt/cargo/bin \
|
|
&& test -r /usr/include/google/protobuf/any.proto \
|
|
&& test -r /usr/include/google/protobuf/empty.proto \
|
|
&& temporary_proto_dir="$(mktemp --directory)" \
|
|
&& printf '%s\n' \
|
|
'syntax = "proto3";' \
|
|
'package smoke;' \
|
|
'import "google/protobuf/any.proto";' \
|
|
'import "google/protobuf/empty.proto";' \
|
|
'message Smoke { google.protobuf.Any any = 1; google.protobuf.Empty empty = 2; }' \
|
|
> "${temporary_proto_dir}/smoke.proto" \
|
|
&& protoc --proto_path="${temporary_proto_dir}" --proto_path=/usr/include \
|
|
--descriptor_set_out="${temporary_proto_dir}/smoke.pb" \
|
|
"${temporary_proto_dir}/smoke.proto" \
|
|
&& test -s "${temporary_proto_dir}/smoke.pb"
|