From 8da5949fc519b318882dc276397b08844f713587 Mon Sep 17 00:00:00 2001 From: Yingwen Date: Sat, 21 Jun 2025 18:20:43 +0800 Subject: [PATCH] ci: update 0.12 ci to latest (#6376) * ci: update 0.12 ci to latest Except: - Remove mysql_backend - Remove workflows/grafana.json Signed-off-by: evenyag * ci: update typos Signed-off-by: evenyag * ci: ignore more words Signed-off-by: evenyag --------- Signed-off-by: evenyag --- .github/CODEOWNERS | 2 +- .../build-dev-builder-images/action.yml | 16 +++- .../actions/build-linux-artifacts/action.yml | 4 +- .../build-windows-artifacts/action.yml | 1 - .../actions/release-cn-artifacts/action.yaml | 4 +- .../setup-greptimedb-cluster/action.yml | 24 ++--- .../with-remote-wal.yaml | 7 +- .github/actions/start-runner/action.yml | 2 +- .github/actions/stop-runner/action.yml | 2 +- .github/labeler.yaml | 15 +++ .github/scripts/create-version.sh | 29 +++--- .github/scripts/deploy-greptimedb.sh | 6 +- .github/scripts/update-dev-builder-version.sh | 37 ++++++++ .github/scripts/update-helm-charts-version.sh | 46 +++++++++ .../update-homebrew-greptme-version.sh | 42 +++++++++ .github/scripts/upload-artifacts-to-s3.sh | 2 +- .github/workflows/apidoc.yml | 2 +- .github/workflows/dev-build.yml | 36 ++++--- .github/workflows/develop.yml | 78 ++++++++++----- .github/workflows/docbot.yml | 2 +- .github/workflows/docs.yml | 16 ++-- .github/workflows/nightly-build.yml | 22 ++--- .github/workflows/nightly-ci.yml | 17 ++-- .github/workflows/pr-labeling.yaml | 42 +++++++++ .../workflows/release-dev-builder-images.yaml | 55 ++++++++--- .github/workflows/release.yml | 94 ++++++++++++++----- .github/workflows/semantic-pull-request.yml | 5 +- .gitignore | 7 ++ typos.toml | 4 + 29 files changed, 470 insertions(+), 149 deletions(-) create mode 100644 .github/labeler.yaml create mode 100755 .github/scripts/update-dev-builder-version.sh create mode 100755 .github/scripts/update-helm-charts-version.sh create mode 100755 .github/scripts/update-homebrew-greptme-version.sh create mode 100644 .github/workflows/pr-labeling.yaml diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c167b3649c..dd9209ffcd 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,7 +4,7 @@ * @GreptimeTeam/db-approver -## [Module] Databse Engine +## [Module] Database Engine /src/index @zhongzc /src/mito2 @evenyag @v0y4g3r @waynexia /src/query @evenyag diff --git a/.github/actions/build-dev-builder-images/action.yml b/.github/actions/build-dev-builder-images/action.yml index 9c30caad35..41f6919396 100644 --- a/.github/actions/build-dev-builder-images/action.yml +++ b/.github/actions/build-dev-builder-images/action.yml @@ -41,7 +41,14 @@ runs: username: ${{ inputs.dockerhub-image-registry-username }} password: ${{ inputs.dockerhub-image-registry-token }} - - name: Build and push dev-builder-ubuntu image + - name: Set up qemu for multi-platform builds + uses: docker/setup-qemu-action@v3 + with: + platforms: linux/amd64,linux/arm64 + # The latest version will lead to segmentation fault. + image: tonistiigi/binfmt:qemu-v7.0.0-28 + + - name: Build and push dev-builder-ubuntu image # Build image for amd64 and arm64 platform. shell: bash if: ${{ inputs.build-dev-builder-ubuntu == 'true' }} run: | @@ -52,7 +59,7 @@ runs: IMAGE_NAMESPACE=${{ inputs.dockerhub-image-namespace }} \ DEV_BUILDER_IMAGE_TAG=${{ inputs.version }} - - name: Build and push dev-builder-centos image + - name: Build and push dev-builder-centos image # Only build image for amd64 platform. shell: bash if: ${{ inputs.build-dev-builder-centos == 'true' }} run: | @@ -69,8 +76,7 @@ runs: run: | make dev-builder \ BASE_IMAGE=android \ + BUILDX_MULTI_PLATFORM_BUILD=amd64 \ IMAGE_REGISTRY=${{ inputs.dockerhub-image-registry }} \ IMAGE_NAMESPACE=${{ inputs.dockerhub-image-namespace }} \ - DEV_BUILDER_IMAGE_TAG=${{ inputs.version }} && \ - - docker push ${{ inputs.dockerhub-image-registry }}/${{ inputs.dockerhub-image-namespace }}/dev-builder-android:${{ inputs.version }} + DEV_BUILDER_IMAGE_TAG=${{ inputs.version }} diff --git a/.github/actions/build-linux-artifacts/action.yml b/.github/actions/build-linux-artifacts/action.yml index 4ed82f9ce9..9c88b25075 100644 --- a/.github/actions/build-linux-artifacts/action.yml +++ b/.github/actions/build-linux-artifacts/action.yml @@ -52,7 +52,7 @@ runs: uses: ./.github/actions/build-greptime-binary with: base-image: ubuntu - features: servers/dashboard,pg_kvbackend + features: servers/dashboard cargo-profile: ${{ inputs.cargo-profile }} artifacts-dir: greptime-linux-${{ inputs.arch }}-${{ inputs.version }} version: ${{ inputs.version }} @@ -70,7 +70,7 @@ runs: if: ${{ inputs.arch == 'amd64' && inputs.dev-mode == 'false' }} # Builds greptime for centos if the host machine is amd64. with: base-image: centos - features: servers/dashboard,pg_kvbackend + features: servers/dashboard cargo-profile: ${{ inputs.cargo-profile }} artifacts-dir: greptime-linux-${{ inputs.arch }}-centos-${{ inputs.version }} version: ${{ inputs.version }} diff --git a/.github/actions/build-windows-artifacts/action.yml b/.github/actions/build-windows-artifacts/action.yml index d840660587..2c4ae1f7db 100644 --- a/.github/actions/build-windows-artifacts/action.yml +++ b/.github/actions/build-windows-artifacts/action.yml @@ -47,7 +47,6 @@ runs: shell: pwsh run: make test sqlness-test env: - RUSTUP_WINDOWS_PATH_ADD_BIN: 1 # Workaround for https://github.com/nextest-rs/nextest/issues/1493 RUST_BACKTRACE: 1 SQLNESS_OPTS: "--preserve-state" diff --git a/.github/actions/release-cn-artifacts/action.yaml b/.github/actions/release-cn-artifacts/action.yaml index 886f79bbaf..2825d3f5d0 100644 --- a/.github/actions/release-cn-artifacts/action.yaml +++ b/.github/actions/release-cn-artifacts/action.yaml @@ -64,11 +64,11 @@ inputs: upload-max-retry-times: description: Max retry times for uploading artifacts to S3 required: false - default: "20" + default: "30" upload-retry-timeout: description: Timeout for uploading artifacts to S3 required: false - default: "30" # minutes + default: "120" # minutes runs: using: composite steps: diff --git a/.github/actions/setup-greptimedb-cluster/action.yml b/.github/actions/setup-greptimedb-cluster/action.yml index 7c385c43a9..8a19a192bf 100644 --- a/.github/actions/setup-greptimedb-cluster/action.yml +++ b/.github/actions/setup-greptimedb-cluster/action.yml @@ -8,15 +8,15 @@ inputs: default: 2 description: "Number of Datanode replicas" meta-replicas: - default: 1 + default: 2 description: "Number of Metasrv replicas" - image-registry: + image-registry: default: "docker.io" description: "Image registry" - image-repository: + image-repository: default: "greptime/greptimedb" description: "Image repository" - image-tag: + image-tag: default: "latest" description: 'Image tag' etcd-endpoints: @@ -32,12 +32,12 @@ runs: steps: - name: Install GreptimeDB operator uses: nick-fields/retry@v3 - with: + with: timeout_minutes: 3 max_attempts: 3 shell: bash command: | - helm repo add greptime https://greptimeteam.github.io/helm-charts/ + helm repo add greptime https://greptimeteam.github.io/helm-charts/ helm repo update helm upgrade \ --install \ @@ -48,10 +48,10 @@ runs: --wait-for-jobs - name: Install GreptimeDB cluster shell: bash - run: | + run: | helm upgrade \ --install my-greptimedb \ - --set meta.etcdEndpoints=${{ inputs.etcd-endpoints }} \ + --set meta.backendStorage.etcd.endpoints=${{ inputs.etcd-endpoints }} \ --set meta.enableRegionFailover=${{ inputs.enable-region-failover }} \ --set image.registry=${{ inputs.image-registry }} \ --set image.repository=${{ inputs.image-repository }} \ @@ -59,7 +59,7 @@ runs: --set base.podTemplate.main.resources.requests.cpu=50m \ --set base.podTemplate.main.resources.requests.memory=256Mi \ --set base.podTemplate.main.resources.limits.cpu=2000m \ - --set base.podTemplate.main.resources.limits.memory=2Gi \ + --set base.podTemplate.main.resources.limits.memory=3Gi \ --set frontend.replicas=${{ inputs.frontend-replicas }} \ --set datanode.replicas=${{ inputs.datanode-replicas }} \ --set meta.replicas=${{ inputs.meta-replicas }} \ @@ -72,7 +72,7 @@ runs: - name: Wait for GreptimeDB shell: bash run: | - while true; do + while true; do PHASE=$(kubectl -n my-greptimedb get gtc my-greptimedb -o jsonpath='{.status.clusterPhase}') if [ "$PHASE" == "Running" ]; then echo "Cluster is ready" @@ -86,10 +86,10 @@ runs: - name: Print GreptimeDB info if: always() shell: bash - run: | + run: | kubectl get all --show-labels -n my-greptimedb - name: Describe Nodes if: always() shell: bash - run: | + run: | kubectl describe nodes diff --git a/.github/actions/setup-greptimedb-cluster/with-remote-wal.yaml b/.github/actions/setup-greptimedb-cluster/with-remote-wal.yaml index a97f921f8c..dd230f5691 100644 --- a/.github/actions/setup-greptimedb-cluster/with-remote-wal.yaml +++ b/.github/actions/setup-greptimedb-cluster/with-remote-wal.yaml @@ -2,13 +2,14 @@ meta: configData: |- [runtime] global_rt_size = 4 - + [wal] provider = "kafka" broker_endpoints = ["kafka.kafka-cluster.svc.cluster.local:9092"] num_topics = 3 + auto_prune_interval = "30s" + trigger_flush_threshold = 100 - [datanode] [datanode.client] timeout = "120s" @@ -21,7 +22,7 @@ datanode: [wal] provider = "kafka" broker_endpoints = ["kafka.kafka-cluster.svc.cluster.local:9092"] - linger = "2ms" + overwrite_entry_start_id = true frontend: configData: |- [runtime] diff --git a/.github/actions/start-runner/action.yml b/.github/actions/start-runner/action.yml index 10d482b2bf..78568e26d7 100644 --- a/.github/actions/start-runner/action.yml +++ b/.github/actions/start-runner/action.yml @@ -56,7 +56,7 @@ runs: - name: Start EC2 runner if: startsWith(inputs.runner, 'ec2') - uses: machulav/ec2-github-runner@v2 + uses: machulav/ec2-github-runner@v2.3.8 id: start-linux-arm64-ec2-runner with: mode: start diff --git a/.github/actions/stop-runner/action.yml b/.github/actions/stop-runner/action.yml index 24a720b624..e25a1d8dad 100644 --- a/.github/actions/stop-runner/action.yml +++ b/.github/actions/stop-runner/action.yml @@ -33,7 +33,7 @@ runs: - name: Stop EC2 runner if: ${{ inputs.label && inputs.ec2-instance-id }} - uses: machulav/ec2-github-runner@v2 + uses: machulav/ec2-github-runner@v2.3.8 with: mode: stop label: ${{ inputs.label }} diff --git a/.github/labeler.yaml b/.github/labeler.yaml new file mode 100644 index 0000000000..f62f47a815 --- /dev/null +++ b/.github/labeler.yaml @@ -0,0 +1,15 @@ +ci: + - changed-files: + - any-glob-to-any-file: .github/** + +docker: + - changed-files: + - any-glob-to-any-file: docker/** + +documentation: + - changed-files: + - any-glob-to-any-file: docs/** + +dashboard: + - changed-files: + - any-glob-to-any-file: grafana/** diff --git a/.github/scripts/create-version.sh b/.github/scripts/create-version.sh index e87c74cffb..0369e3ac54 100755 --- a/.github/scripts/create-version.sh +++ b/.github/scripts/create-version.sh @@ -8,24 +8,25 @@ set -e # - If it's a nightly build, the version is 'nightly-YYYYMMDD-$(git rev-parse --short HEAD)', like 'nightly-20230712-e5b243c'. # create_version ${GIHUB_EVENT_NAME} ${NEXT_RELEASE_VERSION} ${NIGHTLY_RELEASE_PREFIX} function create_version() { - # Read from envrionment variables. + # Read from environment variables. if [ -z "$GITHUB_EVENT_NAME" ]; then - echo "GITHUB_EVENT_NAME is empty" + echo "GITHUB_EVENT_NAME is empty" >&2 exit 1 fi if [ -z "$NEXT_RELEASE_VERSION" ]; then - echo "NEXT_RELEASE_VERSION is empty" - exit 1 + echo "NEXT_RELEASE_VERSION is empty, use version from Cargo.toml" >&2 + # NOTE: Need a `v` prefix for the version string. + export NEXT_RELEASE_VERSION=v$(grep '^version = ' Cargo.toml | cut -d '"' -f 2 | head -n 1) fi if [ -z "$NIGHTLY_RELEASE_PREFIX" ]; then - echo "NIGHTLY_RELEASE_PREFIX is empty" + echo "NIGHTLY_RELEASE_PREFIX is empty" >&2 exit 1 fi # Reuse $NEXT_RELEASE_VERSION to identify whether it's a nightly build. - # It will be like 'nigtly-20230808-7d0d8dc6'. + # It will be like 'nightly-20230808-7d0d8dc6'. if [ "$NEXT_RELEASE_VERSION" = nightly ]; then echo "$NIGHTLY_RELEASE_PREFIX-$(date "+%Y%m%d")-$(git rev-parse --short HEAD)" exit 0 @@ -35,7 +36,7 @@ function create_version() { # It will be like 'dev-2023080819-f0e7216c'. if [ "$NEXT_RELEASE_VERSION" = dev ]; then if [ -z "$COMMIT_SHA" ]; then - echo "COMMIT_SHA is empty in dev build" + echo "COMMIT_SHA is empty in dev build" >&2 exit 1 fi echo "dev-$(date "+%Y%m%d-%s")-$(echo "$COMMIT_SHA" | cut -c1-8)" @@ -45,7 +46,7 @@ function create_version() { # Note: Only output 'version=xxx' to stdout when everything is ok, so that it can be used in GitHub Actions Outputs. if [ "$GITHUB_EVENT_NAME" = push ]; then if [ -z "$GITHUB_REF_NAME" ]; then - echo "GITHUB_REF_NAME is empty in push event" + echo "GITHUB_REF_NAME is empty in push event" >&2 exit 1 fi echo "$GITHUB_REF_NAME" @@ -54,15 +55,15 @@ function create_version() { elif [ "$GITHUB_EVENT_NAME" = schedule ]; then echo "$NEXT_RELEASE_VERSION-$NIGHTLY_RELEASE_PREFIX-$(date "+%Y%m%d")" else - echo "Unsupported GITHUB_EVENT_NAME: $GITHUB_EVENT_NAME" + echo "Unsupported GITHUB_EVENT_NAME: $GITHUB_EVENT_NAME" >&2 exit 1 fi } # You can run as following examples: -# GITHUB_EVENT_NAME=push NEXT_RELEASE_VERSION=v0.4.0 NIGHTLY_RELEASE_PREFIX=nigtly GITHUB_REF_NAME=v0.3.0 ./create-version.sh -# GITHUB_EVENT_NAME=workflow_dispatch NEXT_RELEASE_VERSION=v0.4.0 NIGHTLY_RELEASE_PREFIX=nigtly ./create-version.sh -# GITHUB_EVENT_NAME=schedule NEXT_RELEASE_VERSION=v0.4.0 NIGHTLY_RELEASE_PREFIX=nigtly ./create-version.sh -# GITHUB_EVENT_NAME=schedule NEXT_RELEASE_VERSION=nightly NIGHTLY_RELEASE_PREFIX=nigtly ./create-version.sh -# GITHUB_EVENT_NAME=workflow_dispatch COMMIT_SHA=f0e7216c4bb6acce9b29a21ec2d683be2e3f984a NEXT_RELEASE_VERSION=dev NIGHTLY_RELEASE_PREFIX=nigtly ./create-version.sh +# GITHUB_EVENT_NAME=push NEXT_RELEASE_VERSION=v0.4.0 NIGHTLY_RELEASE_PREFIX=nightly GITHUB_REF_NAME=v0.3.0 ./create-version.sh +# GITHUB_EVENT_NAME=workflow_dispatch NEXT_RELEASE_VERSION=v0.4.0 NIGHTLY_RELEASE_PREFIX=nightly ./create-version.sh +# GITHUB_EVENT_NAME=schedule NEXT_RELEASE_VERSION=v0.4.0 NIGHTLY_RELEASE_PREFIX=nightly ./create-version.sh +# GITHUB_EVENT_NAME=schedule NEXT_RELEASE_VERSION=nightly NIGHTLY_RELEASE_PREFIX=nightly ./create-version.sh +# GITHUB_EVENT_NAME=workflow_dispatch COMMIT_SHA=f0e7216c4bb6acce9b29a21ec2d683be2e3f984a NEXT_RELEASE_VERSION=dev NIGHTLY_RELEASE_PREFIX=nightly ./create-version.sh create_version diff --git a/.github/scripts/deploy-greptimedb.sh b/.github/scripts/deploy-greptimedb.sh index f5c3c1de68..bba7c83a07 100755 --- a/.github/scripts/deploy-greptimedb.sh +++ b/.github/scripts/deploy-greptimedb.sh @@ -10,7 +10,7 @@ GREPTIMEDB_IMAGE_TAG=${GREPTIMEDB_IMAGE_TAG:-latest} ETCD_CHART="oci://registry-1.docker.io/bitnamicharts/etcd" GREPTIME_CHART="https://greptimeteam.github.io/helm-charts/" -# Ceate a cluster with 1 control-plane node and 5 workers. +# Create a cluster with 1 control-plane node and 5 workers. function create_kind_cluster() { cat < latest-version.txt diff --git a/.github/workflows/apidoc.yml b/.github/workflows/apidoc.yml index 6bbca5d9a2..eb7a720a42 100644 --- a/.github/workflows/apidoc.yml +++ b/.github/workflows/apidoc.yml @@ -14,7 +14,7 @@ name: Build API docs jobs: apidoc: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/dev-build.yml b/.github/workflows/dev-build.yml index 6697e7331b..fad3e316e8 100644 --- a/.github/workflows/dev-build.yml +++ b/.github/workflows/dev-build.yml @@ -16,11 +16,11 @@ on: description: The runner uses to build linux-amd64 artifacts default: ec2-c6i.4xlarge-amd64 options: - - ubuntu-20.04 - - ubuntu-20.04-8-cores - - ubuntu-20.04-16-cores - - ubuntu-20.04-32-cores - - ubuntu-20.04-64-cores + - ubuntu-22.04 + - ubuntu-22.04-8-cores + - ubuntu-22.04-16-cores + - ubuntu-22.04-32-cores + - ubuntu-22.04-64-cores - ec2-c6i.xlarge-amd64 # 4C8G - ec2-c6i.2xlarge-amd64 # 8C16G - ec2-c6i.4xlarge-amd64 # 16C32G @@ -55,6 +55,11 @@ on: description: Build and push images to DockerHub and ACR required: false default: true + upload_artifacts_to_s3: + type: boolean + description: Whether upload artifacts to s3 + required: false + default: false cargo_profile: type: choice description: The cargo profile to use in building GreptimeDB. @@ -83,7 +88,7 @@ jobs: allocate-runners: name: Allocate runners if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest outputs: linux-amd64-runner: ${{ steps.start-linux-amd64-runner.outputs.label }} linux-arm64-runner: ${{ steps.start-linux-arm64-runner.outputs.label }} @@ -218,7 +223,7 @@ jobs: build-linux-amd64-artifacts, build-linux-arm64-artifacts, ] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest outputs: build-result: ${{ steps.set-build-result.outputs.build-result }} steps: @@ -239,6 +244,13 @@ jobs: push-latest-tag: false # Don't push the latest tag to registry. dev-mode: true # Only build the standard images. + - name: Echo Docker image tag to step summary + run: | + echo "## Docker Image Tag" >> $GITHUB_STEP_SUMMARY + echo "Image Tag: \`${{ needs.allocate-runners.outputs.version }}\`" >> $GITHUB_STEP_SUMMARY + echo "Full Image Name: \`docker.io/${{ vars.IMAGE_NAMESPACE }}/${{ vars.DEV_BUILD_IMAGE_NAME }}:${{ needs.allocate-runners.outputs.version }}\`" >> $GITHUB_STEP_SUMMARY + echo "Pull Command: \`docker pull docker.io/${{ vars.IMAGE_NAMESPACE }}/${{ vars.DEV_BUILD_IMAGE_NAME }}:${{ needs.allocate-runners.outputs.version }}\`" >> $GITHUB_STEP_SUMMARY + - name: Set build result id: set-build-result run: | @@ -251,7 +263,7 @@ jobs: allocate-runners, release-images-to-dockerhub, ] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest continue-on-error: true steps: - uses: actions/checkout@v4 @@ -274,7 +286,7 @@ jobs: aws-cn-access-key-id: ${{ secrets.AWS_CN_ACCESS_KEY_ID }} aws-cn-secret-access-key: ${{ secrets.AWS_CN_SECRET_ACCESS_KEY }} aws-cn-region: ${{ vars.AWS_RELEASE_BUCKET_REGION }} - upload-to-s3: false + upload-to-s3: ${{ inputs.upload_artifacts_to_s3 }} dev-mode: true # Only build the standard images(exclude centos images). push-latest-tag: false # Don't push the latest tag to registry. update-version-info: false # Don't update the version info in S3. @@ -283,7 +295,7 @@ jobs: name: Stop linux-amd64 runner # Only run this job when the runner is allocated. if: ${{ always() }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest needs: [ allocate-runners, build-linux-amd64-artifacts, @@ -309,7 +321,7 @@ jobs: name: Stop linux-arm64 runner # Only run this job when the runner is allocated. if: ${{ always() }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest needs: [ allocate-runners, build-linux-arm64-artifacts, @@ -337,7 +349,7 @@ jobs: needs: [ release-images-to-dockerhub ] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest permissions: issues: write diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index fb454b1857..4e7aafc3cc 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -22,8 +22,9 @@ concurrency: jobs: check-typos-and-docs: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Check typos and docs - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: @@ -36,7 +37,8 @@ jobs: || (echo "'config/config.md' is not up-to-date, please run 'make config-docs'." && exit 1) license-header-check: - runs-on: ubuntu-20.04 + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} + runs-on: ubuntu-latest name: Check License Header steps: - uses: actions/checkout@v4 @@ -45,11 +47,12 @@ jobs: - uses: korandoru/hawkeye@v5 check: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Check runs-on: ${{ matrix.os }} strategy: matrix: - os: [ ubuntu-20.04 ] + os: [ ubuntu-latest ] timeout-minutes: 60 steps: - uses: actions/checkout@v4 @@ -71,8 +74,9 @@ jobs: run: cargo check --locked --workspace --all-targets toml: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Toml Check - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v4 @@ -85,11 +89,12 @@ jobs: run: taplo format --check build: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Build GreptimeDB binaries runs-on: ${{ matrix.os }} strategy: matrix: - os: [ ubuntu-20.04 ] + os: [ ubuntu-latest ] timeout-minutes: 60 steps: - uses: actions/checkout@v4 @@ -127,6 +132,7 @@ jobs: version: current fuzztest: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Fuzz Test needs: build runs-on: ubuntu-latest @@ -183,11 +189,13 @@ jobs: max-total-time: 120 unstable-fuzztest: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Unstable Fuzz Test needs: build-greptime-ci runs-on: ubuntu-latest timeout-minutes: 60 strategy: + fail-fast: false matrix: target: [ "unstable_fuzz_create_table_standalone" ] steps: @@ -215,12 +223,12 @@ jobs: run: | sudo apt update && sudo apt install -y libfuzzer-14-dev cargo install cargo-fuzz cargo-gc-bin --force - - name: Download pre-built binariy + - name: Download pre-built binary uses: actions/download-artifact@v4 with: name: bin path: . - - name: Unzip bianry + - name: Unzip binary run: | tar -xvf ./bin.tar.gz rm ./bin.tar.gz @@ -242,13 +250,19 @@ jobs: name: unstable-fuzz-logs path: /tmp/unstable-greptime/ retention-days: 3 + - name: Describe pods + if: failure() + shell: bash + run: | + kubectl describe pod -n my-greptimedb build-greptime-ci: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Build GreptimeDB binary (profile-CI) runs-on: ${{ matrix.os }} strategy: matrix: - os: [ ubuntu-20.04 ] + os: [ ubuntu-latest ] timeout-minutes: 60 steps: - uses: actions/checkout@v4 @@ -267,7 +281,7 @@ jobs: - name: Install cargo-gc-bin shell: bash run: cargo install cargo-gc-bin --force - - name: Build greptime bianry + - name: Build greptime binary shell: bash # `cargo gc` will invoke `cargo build` with specified args run: cargo gc --profile ci -- --bin greptime --features pg_kvbackend @@ -285,11 +299,13 @@ jobs: version: current distributed-fuzztest: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Fuzz Test (Distributed, ${{ matrix.mode.name }}, ${{ matrix.target }}) runs-on: ubuntu-latest needs: build-greptime-ci timeout-minutes: 60 strategy: + fail-fast: false matrix: target: [ "fuzz_create_table", "fuzz_alter_table", "fuzz_create_database", "fuzz_create_logical_table", "fuzz_alter_logical_table", "fuzz_insert", "fuzz_insert_logical_table" ] mode: @@ -319,9 +335,9 @@ jobs: name: Setup Minio uses: ./.github/actions/setup-minio - if: matrix.mode.kafka - name: Setup Kafka cluser + name: Setup Kafka cluster uses: ./.github/actions/setup-kafka-cluster - - name: Setup Etcd cluser + - name: Setup Etcd cluster uses: ./.github/actions/setup-etcd-cluster # Prepares for fuzz tests - uses: arduino/setup-protoc@v3 @@ -394,6 +410,11 @@ jobs: shell: bash run: | kubectl describe nodes + - name: Describe pod + if: failure() + shell: bash + run: | + kubectl describe pod -n my-greptimedb - name: Export kind logs if: failure() shell: bash @@ -416,11 +437,13 @@ jobs: docker system prune -f distributed-fuzztest-with-chaos: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Fuzz Test with Chaos (Distributed, ${{ matrix.mode.name }}, ${{ matrix.target }}) runs-on: ubuntu-latest needs: build-greptime-ci timeout-minutes: 60 strategy: + fail-fast: false matrix: target: ["fuzz_migrate_mito_regions", "fuzz_migrate_metric_regions", "fuzz_failover_mito_regions", "fuzz_failover_metric_regions"] mode: @@ -465,9 +488,9 @@ jobs: name: Setup Minio uses: ./.github/actions/setup-minio - if: matrix.mode.kafka - name: Setup Kafka cluser + name: Setup Kafka cluster uses: ./.github/actions/setup-kafka-cluster - - name: Setup Etcd cluser + - name: Setup Etcd cluster uses: ./.github/actions/setup-etcd-cluster # Prepares for fuzz tests - uses: arduino/setup-protoc@v3 @@ -541,6 +564,11 @@ jobs: shell: bash run: | kubectl describe nodes + - name: Describe pods + if: failure() + shell: bash + run: | + kubectl describe pod -n my-greptimedb - name: Export kind logs if: failure() shell: bash @@ -563,12 +591,14 @@ jobs: docker system prune -f sqlness: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Sqlness Test (${{ matrix.mode.name }}) needs: build runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: - os: [ ubuntu-20.04 ] + os: [ ubuntu-latest ] mode: - name: "Basic" opts: "" @@ -576,7 +606,7 @@ jobs: - name: "Remote WAL" opts: "-w kafka -k 127.0.0.1:9092" kafka: true - - name: "Pg Kvbackend" + - name: "PostgreSQL KvBackend" opts: "--setup-pg" kafka: false timeout-minutes: 60 @@ -606,8 +636,9 @@ jobs: retention-days: 3 fmt: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Rustfmt - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v4 @@ -623,8 +654,9 @@ jobs: run: make fmt-check clippy: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Clippy - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v4 @@ -648,6 +680,7 @@ jobs: run: make clippy conflict-check: + if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} name: Check for conflict runs-on: ubuntu-latest steps: @@ -658,7 +691,7 @@ jobs: uses: olivernybroe/action-conflict-finder@v4.0 test: - if: github.event_name != 'merge_group' + if: ${{ github.repository == 'GreptimeTeam/greptimedb' && github.event_name != 'merge_group' }} runs-on: ubuntu-22.04-arm timeout-minutes: 60 needs: [conflict-check, clippy, fmt] @@ -704,13 +737,14 @@ jobs: GT_MINIO_ENDPOINT_URL: http://127.0.0.1:9000 GT_ETCD_ENDPOINTS: http://127.0.0.1:2379 GT_POSTGRES_ENDPOINTS: postgres://greptimedb:admin@127.0.0.1:5432/postgres + GT_MYSQL_ENDPOINTS: mysql://greptimedb:admin@127.0.0.1:3306/mysql GT_KAFKA_ENDPOINTS: 127.0.0.1:9092 GT_KAFKA_SASL_ENDPOINTS: 127.0.0.1:9093 UNITTEST_LOG_DIR: "__unittest_logs" coverage: - if: github.event_name == 'merge_group' - runs-on: ubuntu-20.04-8-cores + if: ${{ github.repository == 'GreptimeTeam/greptimedb' && github.event_name == 'merge_group' }} + runs-on: ubuntu-22.04-8-cores timeout-minutes: 60 steps: - uses: actions/checkout@v4 @@ -755,6 +789,7 @@ jobs: GT_MINIO_ENDPOINT_URL: http://127.0.0.1:9000 GT_ETCD_ENDPOINTS: http://127.0.0.1:2379 GT_POSTGRES_ENDPOINTS: postgres://greptimedb:admin@127.0.0.1:5432/postgres + GT_MYSQL_ENDPOINTS: mysql://greptimedb:admin@127.0.0.1:3306/mysql GT_KAFKA_ENDPOINTS: 127.0.0.1:9092 GT_KAFKA_SASL_ENDPOINTS: 127.0.0.1:9093 UNITTEST_LOG_DIR: "__unittest_logs" @@ -768,9 +803,10 @@ jobs: verbose: true # compat: + # if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} # name: Compatibility Test # needs: build - # runs-on: ubuntu-20.04 + # runs-on: ubuntu-22.04 # timeout-minutes: 60 # steps: # - uses: actions/checkout@v4 diff --git a/.github/workflows/docbot.yml b/.github/workflows/docbot.yml index fc79bb4cfe..250a150c02 100644 --- a/.github/workflows/docbot.yml +++ b/.github/workflows/docbot.yml @@ -9,7 +9,7 @@ concurrency: jobs: docbot: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest permissions: pull-requests: write contents: read diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 61f78a84fd..650ea64597 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -31,7 +31,7 @@ name: CI jobs: typos: name: Spell Check with Typos - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: @@ -39,7 +39,7 @@ jobs: - uses: crate-ci/typos@master license-header-check: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest name: Check License Header steps: - uses: actions/checkout@v4 @@ -49,29 +49,29 @@ jobs: check: name: Check - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - run: 'echo "No action required"' fmt: name: Rustfmt - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - run: 'echo "No action required"' clippy: name: Clippy - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - run: 'echo "No action required"' coverage: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - run: 'echo "No action required"' test: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - run: 'echo "No action required"' @@ -80,7 +80,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ ubuntu-20.04 ] + os: [ ubuntu-latest ] mode: - name: "Basic" - name: "Remote WAL" diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index b0b7f3fbe3..6640d1d3df 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -14,11 +14,11 @@ on: description: The runner uses to build linux-amd64 artifacts default: ec2-c6i.4xlarge-amd64 options: - - ubuntu-20.04 - - ubuntu-20.04-8-cores - - ubuntu-20.04-16-cores - - ubuntu-20.04-32-cores - - ubuntu-20.04-64-cores + - ubuntu-22.04 + - ubuntu-22.04-8-cores + - ubuntu-22.04-16-cores + - ubuntu-22.04-32-cores + - ubuntu-22.04-64-cores - ec2-c6i.xlarge-amd64 # 4C8G - ec2-c6i.2xlarge-amd64 # 8C16G - ec2-c6i.4xlarge-amd64 # 16C32G @@ -70,7 +70,7 @@ jobs: allocate-runners: name: Allocate runners if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest outputs: linux-amd64-runner: ${{ steps.start-linux-amd64-runner.outputs.label }} linux-arm64-runner: ${{ steps.start-linux-arm64-runner.outputs.label }} @@ -182,7 +182,7 @@ jobs: build-linux-amd64-artifacts, build-linux-arm64-artifacts, ] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest outputs: nightly-build-result: ${{ steps.set-nightly-build-result.outputs.nightly-build-result }} steps: @@ -214,7 +214,7 @@ jobs: allocate-runners, release-images-to-dockerhub, ] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest # When we push to ACR, it's easy to fail due to some unknown network issues. # However, we don't want to fail the whole workflow because of this. # The ACR have daily sync with DockerHub, so don't worry about the image not being updated. @@ -249,7 +249,7 @@ jobs: name: Stop linux-amd64 runner # Only run this job when the runner is allocated. if: ${{ always() }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest needs: [ allocate-runners, build-linux-amd64-artifacts, @@ -275,7 +275,7 @@ jobs: name: Stop linux-arm64 runner # Only run this job when the runner is allocated. if: ${{ always() }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest needs: [ allocate-runners, build-linux-arm64-artifacts, @@ -303,7 +303,7 @@ jobs: needs: [ release-images-to-dockerhub ] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest permissions: issues: write env: diff --git a/.github/workflows/nightly-ci.yml b/.github/workflows/nightly-ci.yml index 041e1ef673..d4afa2778b 100644 --- a/.github/workflows/nightly-ci.yml +++ b/.github/workflows/nightly-ci.yml @@ -13,7 +13,7 @@ jobs: sqlness-test: name: Run sqlness test if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 @@ -107,7 +107,6 @@ jobs: CARGO_BUILD_RUSTFLAGS: "-C linker=lld-link" RUST_BACKTRACE: 1 CARGO_INCREMENTAL: 0 - RUSTUP_WINDOWS_PATH_ADD_BIN: 1 # Workaround for https://github.com/nextest-rs/nextest/issues/1493 GT_S3_BUCKET: ${{ vars.AWS_CI_TEST_BUCKET }} GT_S3_ACCESS_KEY_ID: ${{ secrets.AWS_CI_TEST_ACCESS_KEY_ID }} GT_S3_ACCESS_KEY: ${{ secrets.AWS_CI_TEST_SECRET_ACCESS_KEY }} @@ -118,22 +117,22 @@ jobs: name: Run clean build on Linux runs-on: ubuntu-latest if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} - timeout-minutes: 60 + timeout-minutes: 45 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 persist-credentials: false - - uses: cachix/install-nix-action@v27 - with: - nix_path: nixpkgs=channel:nixos-24.11 - - run: nix develop --command cargo build + - uses: cachix/install-nix-action@v31 + - run: nix develop --command cargo check --bin greptime + env: + CARGO_BUILD_RUSTFLAGS: "-C link-arg=-fuse-ld=mold" check-status: name: Check status needs: [sqlness-test, sqlness-windows, test-on-windows] if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest outputs: check-result: ${{ steps.set-check-result.outputs.check-result }} steps: @@ -146,7 +145,7 @@ jobs: if: ${{ github.repository == 'GreptimeTeam/greptimedb' && always() }} # Not requiring successful dependent jobs, always run. name: Send notification to Greptime team needs: [check-status] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_DEVELOP_CHANNEL }} steps: diff --git a/.github/workflows/pr-labeling.yaml b/.github/workflows/pr-labeling.yaml new file mode 100644 index 0000000000..3c9a1458e4 --- /dev/null +++ b/.github/workflows/pr-labeling.yaml @@ -0,0 +1,42 @@ +name: 'PR Labeling' + +on: + pull_request_target: + types: + - opened + - synchronize + - reopened + +permissions: + contents: read + pull-requests: write + issues: write + +jobs: + labeler: + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - uses: actions/labeler@v5 + with: + configuration-path: ".github/labeler.yaml" + repo-token: "${{ secrets.GITHUB_TOKEN }}" + + size-label: + runs-on: ubuntu-latest + steps: + - uses: pascalgn/size-label-action@v0.5.5 + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + with: + sizes: > + { + "0": "XS", + "100": "S", + "300": "M", + "1000": "L", + "1500": "XL", + "2000": "XXL" + } diff --git a/.github/workflows/release-dev-builder-images.yaml b/.github/workflows/release-dev-builder-images.yaml index 2e60736140..e6a33dcceb 100644 --- a/.github/workflows/release-dev-builder-images.yaml +++ b/.github/workflows/release-dev-builder-images.yaml @@ -24,12 +24,20 @@ on: description: Release dev-builder-android image required: false default: false + update_dev_builder_image_tag: + type: boolean + description: Update the DEV_BUILDER_IMAGE_TAG in Makefile and create a PR + required: false + default: false jobs: release-dev-builder-images: name: Release dev builder images - if: ${{ inputs.release_dev_builder_ubuntu_image || inputs.release_dev_builder_centos_image || inputs.release_dev_builder_android_image }} # Only manually trigger this job. - runs-on: ubuntu-20.04-16-cores + # The jobs are triggered by the following events: + # 1. Manually triggered workflow_dispatch event + # 2. Push event when the PR that modifies the `rust-toolchain.toml` or `docker/dev-builder/**` is merged to main + if: ${{ github.event_name == 'push' || inputs.release_dev_builder_ubuntu_image || inputs.release_dev_builder_centos_image || inputs.release_dev_builder_android_image }} + runs-on: ubuntu-latest outputs: version: ${{ steps.set-version.outputs.version }} steps: @@ -57,13 +65,13 @@ jobs: version: ${{ env.VERSION }} dockerhub-image-registry-username: ${{ secrets.DOCKERHUB_USERNAME }} dockerhub-image-registry-token: ${{ secrets.DOCKERHUB_TOKEN }} - build-dev-builder-ubuntu: ${{ inputs.release_dev_builder_ubuntu_image }} - build-dev-builder-centos: ${{ inputs.release_dev_builder_centos_image }} - build-dev-builder-android: ${{ inputs.release_dev_builder_android_image }} + build-dev-builder-ubuntu: ${{ inputs.release_dev_builder_ubuntu_image || github.event_name == 'push' }} + build-dev-builder-centos: ${{ inputs.release_dev_builder_centos_image || github.event_name == 'push' }} + build-dev-builder-android: ${{ inputs.release_dev_builder_android_image || github.event_name == 'push' }} release-dev-builder-images-ecr: name: Release dev builder images to AWS ECR - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest needs: [ release-dev-builder-images ] @@ -85,7 +93,7 @@ jobs: - name: Push dev-builder-ubuntu image shell: bash - if: ${{ inputs.release_dev_builder_ubuntu_image }} + if: ${{ inputs.release_dev_builder_ubuntu_image || github.event_name == 'push' }} env: IMAGE_VERSION: ${{ needs.release-dev-builder-images.outputs.version }} IMAGE_NAMESPACE: ${{ vars.IMAGE_NAMESPACE }} @@ -106,7 +114,7 @@ jobs: - name: Push dev-builder-centos image shell: bash - if: ${{ inputs.release_dev_builder_centos_image }} + if: ${{ inputs.release_dev_builder_centos_image || github.event_name == 'push' }} env: IMAGE_VERSION: ${{ needs.release-dev-builder-images.outputs.version }} IMAGE_NAMESPACE: ${{ vars.IMAGE_NAMESPACE }} @@ -127,7 +135,7 @@ jobs: - name: Push dev-builder-android image shell: bash - if: ${{ inputs.release_dev_builder_android_image }} + if: ${{ inputs.release_dev_builder_android_image || github.event_name == 'push' }} env: IMAGE_VERSION: ${{ needs.release-dev-builder-images.outputs.version }} IMAGE_NAMESPACE: ${{ vars.IMAGE_NAMESPACE }} @@ -148,7 +156,7 @@ jobs: release-dev-builder-images-cn: # Note: Be careful issue: https://github.com/containers/skopeo/issues/1874 and we decide to use the latest stable skopeo container. name: Release dev builder images to CN region - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest needs: [ release-dev-builder-images ] @@ -162,7 +170,7 @@ jobs: - name: Push dev-builder-ubuntu image shell: bash - if: ${{ inputs.release_dev_builder_ubuntu_image }} + if: ${{ inputs.release_dev_builder_ubuntu_image || github.event_name == 'push' }} env: IMAGE_VERSION: ${{ needs.release-dev-builder-images.outputs.version }} IMAGE_NAMESPACE: ${{ vars.IMAGE_NAMESPACE }} @@ -176,7 +184,7 @@ jobs: - name: Push dev-builder-centos image shell: bash - if: ${{ inputs.release_dev_builder_centos_image }} + if: ${{ inputs.release_dev_builder_centos_image || github.event_name == 'push' }} env: IMAGE_VERSION: ${{ needs.release-dev-builder-images.outputs.version }} IMAGE_NAMESPACE: ${{ vars.IMAGE_NAMESPACE }} @@ -190,7 +198,7 @@ jobs: - name: Push dev-builder-android image shell: bash - if: ${{ inputs.release_dev_builder_android_image }} + if: ${{ inputs.release_dev_builder_android_image || github.event_name == 'push' }} env: IMAGE_VERSION: ${{ needs.release-dev-builder-images.outputs.version }} IMAGE_NAMESPACE: ${{ vars.IMAGE_NAMESPACE }} @@ -201,3 +209,24 @@ jobs: quay.io/skopeo/stable:latest \ copy -a docker://docker.io/$IMAGE_NAMESPACE/dev-builder-android:$IMAGE_VERSION \ docker://$ACR_IMAGE_REGISTRY/$IMAGE_NAMESPACE/dev-builder-android:$IMAGE_VERSION + + update-dev-builder-image-tag: + name: Update dev-builder image tag + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + if: ${{ github.event_name == 'push' || inputs.update_dev_builder_image_tag }} + needs: [ + release-dev-builder-images + ] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Update dev-builder image tag + shell: bash + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + ./.github/scripts/update-dev-builder-version.sh ${{ needs.release-dev-builder-images.outputs.version }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 81e034d257..42828b7f01 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,11 +18,11 @@ on: description: The runner uses to build linux-amd64 artifacts default: ec2-c6i.4xlarge-amd64 options: - - ubuntu-20.04 - - ubuntu-20.04-8-cores - - ubuntu-20.04-16-cores - - ubuntu-20.04-32-cores - - ubuntu-20.04-64-cores + - ubuntu-22.04 + - ubuntu-22.04-8-cores + - ubuntu-22.04-16-cores + - ubuntu-22.04-32-cores + - ubuntu-22.04-64-cores - ec2-c6i.xlarge-amd64 # 4C8G - ec2-c6i.2xlarge-amd64 # 8C16G - ec2-c6i.4xlarge-amd64 # 16C32G @@ -88,16 +88,14 @@ env: # Controls whether to run tests, include unit-test, integration-test and sqlness. DISABLE_RUN_TESTS: ${{ inputs.skip_test || vars.DEFAULT_SKIP_TEST }} - # The scheduled version is '${{ env.NEXT_RELEASE_VERSION }}-nightly-YYYYMMDD', like v0.2.0-nigthly-20230313; + # The scheduled version is '${{ env.NEXT_RELEASE_VERSION }}-nightly-YYYYMMDD', like v0.2.0-nightly-20230313; NIGHTLY_RELEASE_PREFIX: nightly - # Note: The NEXT_RELEASE_VERSION should be modified manually by every formal release. - NEXT_RELEASE_VERSION: v0.12.0 jobs: allocate-runners: name: Allocate runners if: ${{ github.repository == 'GreptimeTeam/greptimedb' }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest outputs: linux-amd64-runner: ${{ steps.start-linux-amd64-runner.outputs.label }} linux-arm64-runner: ${{ steps.start-linux-arm64-runner.outputs.label }} @@ -126,7 +124,7 @@ jobs: # The create-version will create a global variable named 'version' in the global workflows. # - If it's a tag push release, the version is the tag name(${{ github.ref_name }}); - # - If it's a scheduled release, the version is '${{ env.NEXT_RELEASE_VERSION }}-nightly-$buildTime', like v0.2.0-nigthly-20230313; + # - If it's a scheduled release, the version is '${{ env.NEXT_RELEASE_VERSION }}-nightly-$buildTime', like v0.2.0-nightly-20230313; # - If it's a manual release, the version is '${{ env.NEXT_RELEASE_VERSION }}--YYYYMMDDSS', like v0.2.0-e5b243c-2023071245; - name: Create version id: create-version @@ -135,7 +133,6 @@ jobs: env: GITHUB_EVENT_NAME: ${{ github.event_name }} GITHUB_REF_NAME: ${{ github.ref_name }} - NEXT_RELEASE_VERSION: ${{ env.NEXT_RELEASE_VERSION }} NIGHTLY_RELEASE_PREFIX: ${{ env.NIGHTLY_RELEASE_PREFIX }} - name: Allocate linux-amd64 runner @@ -299,7 +296,7 @@ jobs: build-linux-amd64-artifacts, build-linux-arm64-artifacts, ] - runs-on: ubuntu-2004-16-cores + runs-on: ubuntu-latest outputs: build-image-result: ${{ steps.set-build-image-result.outputs.build-image-result }} steps: @@ -317,7 +314,7 @@ jobs: image-registry-username: ${{ secrets.DOCKERHUB_USERNAME }} image-registry-password: ${{ secrets.DOCKERHUB_TOKEN }} version: ${{ needs.allocate-runners.outputs.version }} - push-latest-tag: true + push-latest-tag: ${{ github.ref_type == 'tag' && !contains(github.ref_name, 'nightly') && github.event_name != 'schedule' }} - name: Set build image result id: set-build-image-result @@ -335,7 +332,7 @@ jobs: build-windows-artifacts, release-images-to-dockerhub, ] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest # When we push to ACR, it's easy to fail due to some unknown network issues. # However, we don't want to fail the whole workflow because of this. # The ACR have daily sync with DockerHub, so don't worry about the image not being updated. @@ -364,7 +361,7 @@ jobs: dev-mode: false upload-to-s3: true update-version-info: true - push-latest-tag: true + push-latest-tag: ${{ github.ref_type == 'tag' && !contains(github.ref_name, 'nightly') && github.event_name != 'schedule' }} publish-github-release: name: Create GitHub release and upload artifacts @@ -377,7 +374,7 @@ jobs: build-windows-artifacts, release-images-to-dockerhub, ] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: @@ -391,12 +388,12 @@ jobs: ### Stop runners ### # It's very necessary to split the job of releasing runners into 'stop-linux-amd64-runner' and 'stop-linux-arm64-runner'. - # Because we can terminate the specified EC2 instance immediately after the job is finished without uncessary waiting. + # Because we can terminate the specified EC2 instance immediately after the job is finished without unnecessary waiting. stop-linux-amd64-runner: # It's always run as the last job in the workflow to make sure that the runner is released. name: Stop linux-amd64 runner # Only run this job when the runner is allocated. if: ${{ always() }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest needs: [ allocate-runners, build-linux-amd64-artifacts, @@ -422,7 +419,7 @@ jobs: name: Stop linux-arm64 runner # Only run this job when the runner is allocated. if: ${{ always() }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest needs: [ allocate-runners, build-linux-arm64-artifacts, @@ -444,11 +441,11 @@ jobs: aws-region: ${{ vars.EC2_RUNNER_REGION }} github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} - bump-doc-version: - name: Bump doc version + bump-downstream-repo-versions: + name: Bump downstream repo versions if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }} - needs: [allocate-runners] - runs-on: ubuntu-20.04 + needs: [allocate-runners, publish-github-release] + runs-on: ubuntu-latest # Permission reference: https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs permissions: issues: write # Allows the action to create issues for cyborg. @@ -459,13 +456,58 @@ jobs: fetch-depth: 0 persist-credentials: false - uses: ./.github/actions/setup-cyborg - - name: Bump doc version + - name: Bump downstream repo versions working-directory: cyborg - run: pnpm tsx bin/bump-doc-version.ts + run: pnpm tsx bin/bump-versions.ts env: + TARGET_REPOS: website,docs,demo VERSION: ${{ needs.allocate-runners.outputs.version }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + WEBSITE_REPO_TOKEN: ${{ secrets.WEBSITE_REPO_TOKEN }} DOCS_REPO_TOKEN: ${{ secrets.DOCS_REPO_TOKEN }} + DEMO_REPO_TOKEN: ${{ secrets.DEMO_REPO_TOKEN }} + + bump-helm-charts-version: + name: Bump helm charts version + if: ${{ github.ref_type == 'tag' && !contains(github.ref_name, 'nightly') && github.event_name != 'schedule' }} + needs: [allocate-runners, publish-github-release] + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Bump helm charts version + env: + GITHUB_TOKEN: ${{ secrets.HELM_CHARTS_REPO_TOKEN }} + VERSION: ${{ needs.allocate-runners.outputs.version }} + run: | + ./.github/scripts/update-helm-charts-version.sh + + bump-homebrew-greptime-version: + name: Bump homebrew greptime version + if: ${{ github.ref_type == 'tag' && !contains(github.ref_name, 'nightly') && github.event_name != 'schedule' }} + needs: [allocate-runners, publish-github-release] + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Bump homebrew greptime version + env: + GITHUB_TOKEN: ${{ secrets.HOMEBREW_GREPTIME_REPO_TOKEN }} + VERSION: ${{ needs.allocate-runners.outputs.version }} + run: | + ./.github/scripts/update-homebrew-greptme-version.sh notification: if: ${{ github.repository == 'GreptimeTeam/greptimedb' && (github.event_name == 'push' || github.event_name == 'schedule') && always() }} @@ -475,7 +517,7 @@ jobs: build-macos-artifacts, build-windows-artifacts, ] - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest # Permission reference: https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs permissions: issues: write # Allows the action to create issues for cyborg. diff --git a/.github/workflows/semantic-pull-request.yml b/.github/workflows/semantic-pull-request.yml index 3d58f3538e..004a3f421b 100644 --- a/.github/workflows/semantic-pull-request.yml +++ b/.github/workflows/semantic-pull-request.yml @@ -13,7 +13,10 @@ concurrency: jobs: check: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest + permissions: + pull-requests: write # Add permissions to modify PRs + issues: write timeout-minutes: 10 steps: - uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index 5823287889..c29d1877ce 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,10 @@ tests-fuzz/corpus/ # Nix .direnv .envrc + +## default data home +greptimedb_data + +# github +!/.github + diff --git a/typos.toml b/typos.toml index 2ce6ac8a41..2eca0a860f 100644 --- a/typos.toml +++ b/typos.toml @@ -4,6 +4,10 @@ ue = "ue" worl = "worl" ot = "ot" unqualifed = "unqualifed" +typ = "typ" +varidic = "varidic" +typs = "typs" +varadic = "varadic" [files] extend-exclude = [