This is an automated email from the ASF dual-hosted git repository.
twice pushed a commit to branch unstable
in repository https://gitbox.apache.org/repos/asf/kvrocks.git
The following commit(s) were added to refs/heads/unstable by this push:
new 06fa457a ci: refactor nightly image workflow and utilize arm64 runners
(#2751)
06fa457a is described below
commit 06fa457a7a5afd19bc03a168b3a88e232a153aca
Author: Twice <[email protected]>
AuthorDate: Wed Jan 29 10:56:30 2025 +0800
ci: refactor nightly image workflow and utilize arm64 runners (#2751)
---
.github/workflows/nightly.yaml | 100 ++++++++++++++++++++++++++++++++---------
1 file changed, 78 insertions(+), 22 deletions(-)
diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml
index 2cbb4719..50bd9fe7 100644
--- a/.github/workflows/nightly.yaml
+++ b/.github/workflows/nightly.yaml
@@ -24,15 +24,31 @@ on:
paths: ['.github/workflows/nightly.yaml']
jobs:
- publish-nightly-docker-image:
- name: Publish nightly Docker image
- runs-on: ubuntu-20.04
- if: github.repository_owner == 'apache'
+ build:
+ name: "Build nightly docker images"
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - platform: linux/amd64
+ os: ubuntu-24.04
+ - platform: linux/arm64
+ os: ubuntu-24.04-arm
steps:
+ - name: Prepare
+ run: |
+ platform=${{ matrix.platform }}
+ echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- - uses: actions/checkout@v4
- - name: Login Docker Hub
- if: (github.event_name != 'pull_request')
+ - name: Docker meta
+ id: meta
+ uses: docker/metadata-action@v5
+ with:
+ images: apache/kvrocks
+
+ - name: Login to Docker Hub
+ if: ${{ github.event_name != 'pull_request' }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
@@ -42,14 +58,54 @@ jobs:
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
- id: buildx
uses: docker/setup-buildx-action@v3
- - name: Available platforms
- run: echo ${{ steps.buildx.outputs.platforms }}
-
- - name: Get core numbers
- run: echo "NPROC=$(nproc)" >> $GITHUB_ENV
+ - name: Build and push by digest
+ id: build
+ uses: docker/build-push-action@v6
+ with:
+ platforms: ${{ matrix.platform }}
+ push: ${{ github.event_name != 'pull_request' }}
+ labels: ${{ steps.meta.outputs.labels }}
+ outputs:
type=image,"name=apache/kvrocks",push-by-digest=true,name-canonical=true
+
+ - name: Export digest
+ run: |
+ mkdir -p ${{ runner.temp }}/digests
+ digest="${{ steps.build.outputs.digest }}"
+ touch "${{ runner.temp }}/digests/${digest#sha256:}"
+
+ - name: Upload digest
+ uses: actions/upload-artifact@v4
+ if: ${{ github.event_name != 'pull_request' }}
+ with:
+ name: digests-${{ env.PLATFORM_PAIR }}
+ path: ${{ runner.temp }}/digests/*
+ if-no-files-found: error
+ retention-days: 1
+
+ merge:
+ name: Merge and push nightly docker images
+ runs-on: ubuntu-latest
+ if: ${{ github.event_name != 'pull_request' }}
+ needs:
+ - build
+ steps:
+ - name: Download digests
+ uses: actions/download-artifact@v4
+ with:
+ path: ${{ runner.temp }}/digests
+ pattern: digests-*
+ merge-multiple: true
+
+ - name: Login to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
@@ -61,12 +117,12 @@ jobs:
type=sha,prefix=nightly-{{date 'YYYYMMDD'}}-,format=short
type=raw,value=nightly
- - uses: docker/build-push-action@v6
- with:
- context: .
- platforms: linux/amd64, linux/arm64
- push: ${{ github.event_name != 'pull_request' }}
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- build-args: |
- MORE_BUILD_ARGS=-j${{ env.NPROC }}
+ - name: Create manifest list and push
+ working-directory: ${{ runner.temp }}/digests
+ run: |
+ docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) |
join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
+ $(printf 'apache/kvrocks@sha256:%s ' *)
+
+ - name: Inspect image
+ run: |
+ docker buildx imagetools inspect apache/kvrocks:${{
steps.meta.outputs.version }}