mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2025-12-23 06:30:05 +00:00
ci: add check-builder-rust-version job in release and change release-dev-builder-images trigger condition (#4615)
This commit is contained in:
@@ -1,6 +1,12 @@
|
|||||||
name: Release dev-builder images
|
name: Release dev-builder images
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- rust-toolchain.toml
|
||||||
|
- 'docker/dev-builder/**'
|
||||||
workflow_dispatch: # Allows you to run this workflow manually.
|
workflow_dispatch: # Allows you to run this workflow manually.
|
||||||
inputs:
|
inputs:
|
||||||
release_dev_builder_ubuntu_image:
|
release_dev_builder_ubuntu_image:
|
||||||
|
|||||||
10
.github/workflows/release.yml
vendored
10
.github/workflows/release.yml
vendored
@@ -98,6 +98,16 @@ permissions:
|
|||||||
contents: write # Allows the action to create a release.
|
contents: write # Allows the action to create a release.
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
check-builder-rust-version:
|
||||||
|
name: Check rust version in builder
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Check Rust toolchain version
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
./scripts/check-builder-rust-version.sh
|
||||||
|
|
||||||
allocate-runners:
|
allocate-runners:
|
||||||
name: Allocate runners
|
name: Allocate runners
|
||||||
if: ${{ github.repository == 'GreptimeTeam/greptimedb' }}
|
if: ${{ github.repository == 'GreptimeTeam/greptimedb' }}
|
||||||
|
|||||||
12
Makefile
12
Makefile
@@ -8,7 +8,7 @@ CARGO_BUILD_OPTS := --locked
|
|||||||
IMAGE_REGISTRY ?= docker.io
|
IMAGE_REGISTRY ?= docker.io
|
||||||
IMAGE_NAMESPACE ?= greptime
|
IMAGE_NAMESPACE ?= greptime
|
||||||
IMAGE_TAG ?= latest
|
IMAGE_TAG ?= latest
|
||||||
DEV_IMAGE_TAG ?= 2024-06-06-b4b105ad-20240827021230
|
DEV_BUILDER_IMAGE_TAG ?= 2024-06-06-b4b105ad-20240827021230
|
||||||
BUILDX_MULTI_PLATFORM_BUILD ?= false
|
BUILDX_MULTI_PLATFORM_BUILD ?= false
|
||||||
BUILDX_BUILDER_NAME ?= gtbuilder
|
BUILDX_BUILDER_NAME ?= gtbuilder
|
||||||
BASE_IMAGE ?= ubuntu
|
BASE_IMAGE ?= ubuntu
|
||||||
@@ -78,7 +78,7 @@ build: ## Build debug version greptime.
|
|||||||
build-by-dev-builder: ## Build greptime by dev-builder.
|
build-by-dev-builder: ## Build greptime by dev-builder.
|
||||||
docker run --network=host \
|
docker run --network=host \
|
||||||
-v ${PWD}:/greptimedb -v ${CARGO_REGISTRY_CACHE}:/root/.cargo/registry \
|
-v ${PWD}:/greptimedb -v ${CARGO_REGISTRY_CACHE}:/root/.cargo/registry \
|
||||||
-w /greptimedb ${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/dev-builder-${BASE_IMAGE}:${DEV_IMAGE_TAG} \
|
-w /greptimedb ${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/dev-builder-${BASE_IMAGE}:${DEV_BUILDER_IMAGE_TAG} \
|
||||||
make build \
|
make build \
|
||||||
CARGO_EXTENSION="${CARGO_EXTENSION}" \
|
CARGO_EXTENSION="${CARGO_EXTENSION}" \
|
||||||
CARGO_PROFILE=${CARGO_PROFILE} \
|
CARGO_PROFILE=${CARGO_PROFILE} \
|
||||||
@@ -92,7 +92,7 @@ build-by-dev-builder: ## Build greptime by dev-builder.
|
|||||||
build-android-bin: ## Build greptime binary for android.
|
build-android-bin: ## Build greptime binary for android.
|
||||||
docker run --network=host \
|
docker run --network=host \
|
||||||
-v ${PWD}:/greptimedb -v ${CARGO_REGISTRY_CACHE}:/root/.cargo/registry \
|
-v ${PWD}:/greptimedb -v ${CARGO_REGISTRY_CACHE}:/root/.cargo/registry \
|
||||||
-w /greptimedb ${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/dev-builder-android:${DEV_IMAGE_TAG} \
|
-w /greptimedb ${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/dev-builder-android:${DEV_BUILDER_IMAGE_TAG} \
|
||||||
make build \
|
make build \
|
||||||
CARGO_EXTENSION="ndk --platform 23 -t aarch64-linux-android" \
|
CARGO_EXTENSION="ndk --platform 23 -t aarch64-linux-android" \
|
||||||
CARGO_PROFILE=release \
|
CARGO_PROFILE=release \
|
||||||
@@ -106,7 +106,7 @@ build-android-bin: ## Build greptime binary for android.
|
|||||||
strip-android-bin: build-android-bin ## Strip greptime binary for android.
|
strip-android-bin: build-android-bin ## Strip greptime binary for android.
|
||||||
docker run --network=host \
|
docker run --network=host \
|
||||||
-v ${PWD}:/greptimedb \
|
-v ${PWD}:/greptimedb \
|
||||||
-w /greptimedb ${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/dev-builder-android:${DEV_IMAGE_TAG} \
|
-w /greptimedb ${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/dev-builder-android:${DEV_BUILDER_IMAGE_TAG} \
|
||||||
bash -c '$${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-debug /greptimedb/target/aarch64-linux-android/release/greptime'
|
bash -c '$${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip --strip-debug /greptimedb/target/aarch64-linux-android/release/greptime'
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
@@ -146,7 +146,7 @@ dev-builder: multi-platform-buildx ## Build dev-builder image.
|
|||||||
docker buildx build --builder ${BUILDX_BUILDER_NAME} \
|
docker buildx build --builder ${BUILDX_BUILDER_NAME} \
|
||||||
--build-arg="RUST_TOOLCHAIN=${RUST_TOOLCHAIN}" \
|
--build-arg="RUST_TOOLCHAIN=${RUST_TOOLCHAIN}" \
|
||||||
-f docker/dev-builder/${BASE_IMAGE}/Dockerfile \
|
-f docker/dev-builder/${BASE_IMAGE}/Dockerfile \
|
||||||
-t ${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/dev-builder-${BASE_IMAGE}:${DEV_IMAGE_TAG} ${BUILDX_MULTI_PLATFORM_BUILD_OPTS} .
|
-t ${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/dev-builder-${BASE_IMAGE}:${DEV_BUILDER_IMAGE_TAG} ${BUILDX_MULTI_PLATFORM_BUILD_OPTS} .
|
||||||
|
|
||||||
.PHONY: multi-platform-buildx
|
.PHONY: multi-platform-buildx
|
||||||
multi-platform-buildx: ## Create buildx multi-platform builder.
|
multi-platform-buildx: ## Create buildx multi-platform builder.
|
||||||
@@ -204,7 +204,7 @@ stop-etcd: ## Stop single node etcd for testing purpose.
|
|||||||
run-it-in-container: start-etcd ## Run integration tests in dev-builder.
|
run-it-in-container: start-etcd ## Run integration tests in dev-builder.
|
||||||
docker run --network=host \
|
docker run --network=host \
|
||||||
-v ${PWD}:/greptimedb -v ${CARGO_REGISTRY_CACHE}:/root/.cargo/registry -v /tmp:/tmp \
|
-v ${PWD}:/greptimedb -v ${CARGO_REGISTRY_CACHE}:/root/.cargo/registry -v /tmp:/tmp \
|
||||||
-w /greptimedb ${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/dev-builder-${BASE_IMAGE}:${DEV_IMAGE_TAG} \
|
-w /greptimedb ${IMAGE_REGISTRY}/${IMAGE_NAMESPACE}/dev-builder-${BASE_IMAGE}:${DEV_BUILDER_IMAGE_TAG} \
|
||||||
make test sqlness-test BUILD_JOBS=${BUILD_JOBS}
|
make test sqlness-test BUILD_JOBS=${BUILD_JOBS}
|
||||||
|
|
||||||
.PHONY: start-cluster
|
.PHONY: start-cluster
|
||||||
|
|||||||
42
scripts/check-builder-rust-version.sh
Executable file
42
scripts/check-builder-rust-version.sh
Executable file
@@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
RUST_TOOLCHAIN_VERSION_FILE="rust-toolchain.toml"
|
||||||
|
DEV_BUILDER_UBUNTU_REGISTRY="docker.io"
|
||||||
|
DEV_BUILDER_UBUNTU_NAMESPACE="greptime"
|
||||||
|
DEV_BUILDER_UBUNTU_NAME="dev-builder-ubuntu"
|
||||||
|
|
||||||
|
function check_rust_toolchain_version() {
|
||||||
|
DEV_BUILDER_IMAGE_TAG=$(grep "DEV_BUILDER_IMAGE_TAG ?= " Makefile | cut -d= -f2 | sed 's/^[ \t]*//')
|
||||||
|
if [ -z "$DEV_BUILDER_IMAGE_TAG" ]; then
|
||||||
|
echo "Error: No DEV_BUILDER_IMAGE_TAG found in Makefile"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
DEV_BUILDER_UBUNTU_IMAGE="$DEV_BUILDER_UBUNTU_REGISTRY/$DEV_BUILDER_UBUNTU_NAMESPACE/$DEV_BUILDER_UBUNTU_NAME:$DEV_BUILDER_IMAGE_TAG"
|
||||||
|
|
||||||
|
CURRENT_VERSION=$(grep -Eo '[0-9]{4}-[0-9]{2}-[0-9]{2}' "$RUST_TOOLCHAIN_VERSION_FILE")
|
||||||
|
if [ -z "$CURRENT_VERSION" ]; then
|
||||||
|
echo "Error: No rust toolchain version found in $RUST_TOOLCHAIN_VERSION_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
RUST_TOOLCHAIN_VERSION_IN_BUILDER=$(docker run "$DEV_BUILDER_UBUNTU_IMAGE" rustc --version | grep -Eo '[0-9]{4}-[0-9]{2}-[0-9]{2}')
|
||||||
|
if [ -z "$RUST_TOOLCHAIN_VERSION_IN_BUILDER" ]; then
|
||||||
|
echo "Error: No rustc version found in $DEV_BUILDER_UBUNTU_IMAGE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Compare the version and the difference should be less than 1 day.
|
||||||
|
current_rust_toolchain_seconds=$(date -d "$CURRENT_VERSION" +%s)
|
||||||
|
rust_toolchain_in_dev_builder_ubuntu_seconds=$(date -d "$RUST_TOOLCHAIN_VERSION_IN_BUILDER" +%s)
|
||||||
|
date_diff=$(( (current_rust_toolchain_seconds - rust_toolchain_in_dev_builder_ubuntu_seconds) / 86400 ))
|
||||||
|
|
||||||
|
if [ $date_diff -gt 1 ]; then
|
||||||
|
echo "Error: The rust toolchain '$RUST_TOOLCHAIN_VERSION_IN_BUILDER' in builder '$DEV_BUILDER_UBUNTU_IMAGE' maybe outdated, please update it to '$CURRENT_VERSION'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_rust_toolchain_version
|
||||||
Reference in New Issue
Block a user