Skip to content

fix: keep opts.Internal on CompleteMultipartUpload #248

fix: keep opts.Internal on CompleteMultipartUpload

fix: keep opts.Internal on CompleteMultipartUpload #248

Workflow file for this run

name: Build (RDMA)
on:
pull_request:
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref }}
cancel-in-progress: true
jobs:
build:
name: Build with -tags=rdma against minio-cpp (${{ matrix.config.arch }})
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- { os: ubuntu-latest, arch: "amd64" }
- { os: ubuntu-24.04-arm, arch: "arm64" }
steps:
- name: Checkout minio-go
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
path: "minio-go"
- name: Checkout minio-cpp
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: minio/minio-cpp
# Pinned: this job copies vendor/s3rdma out of the checkout, so a
# floating main makes the build race whatever landed there. It already
# did -- a run started before minio-cpp vendored libs3rdma and failed
# on the missing directory. Bump this when picking up a minio-cpp fix.
ref: v0.7.0 # first release carrying the libs3rdma transport
persist-credentials: false
path: "minio-cpp"
- name: Checkout vcpkg
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: microsoft/vcpkg
# Pinned: vcpkg master requires a newer CMake than the arm64
# runner image ships (scripts use string(JSON ... STRING_ENCODE)
# since microsoft/vcpkg@5397c5c9f), which fails every arm64 run.
ref: cd61e1e26a038e82d6550a3ebbe0fbbfe7da78e3 # tag 2026.06.24
persist-credentials: false
path: "vcpkg"
- name: Install system dependencies
run: |
sudo apt-get -qy update
sudo apt-get -qy install cmake libibverbs-dev
- name: Build and install libminiocpp.so with RDMA
shell: bash
env:
MATRIX_ARCH: ${{ matrix.config.arch }}
run: |
./vcpkg/bootstrap-vcpkg.sh
cd minio-cpp
../vcpkg/vcpkg install
cmake . -B ./build \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake \
-DMINIO_CPP_ENABLE_RDMA:BOOL=ON
cmake --build ./build --config Release -j 4
sudo cmake --install ./build
case "$MATRIX_ARCH" in
amd64) s3rdma_arch=x86_64 ;;
arm64) s3rdma_arch=aarch64 ;;
*) echo "unsupported architecture: $MATRIX_ARCH" >&2; exit 1 ;;
esac
sudo cp -P "vendor/s3rdma/lib/${s3rdma_arch}"/* /usr/local/lib/
sudo ldconfig
- name: Set up Go
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
go-version: "1.25.x"
- name: Build minio-go with -tags=rdma
working-directory: minio-go
run: |
go build -tags=rdma ./...
go build -tags=rdma -o /tmp/rdma-test ./cmd/rdma-test
# The buffer-size guards run before any C call, so they are testable on a
# runner with no RDMA device. Without this step nothing under -tags=rdma is
# ever executed, only compiled.
- name: Test minio-go with -tags=rdma
working-directory: minio-go
run: go test -tags=rdma -run 'RDMA' -v .