Making index record size configurable #2073
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This file is used to configure CI builds using Github actions ref: https://help.github.com/en/categories/automating-your-workflow-with-github-actions | |
on: | |
# Trigger the workflow on push or pull request, | |
# but only for the master branch | |
push: | |
tags: | |
- '*' | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
name: CIbuild | |
jobs: | |
check: | |
name: Check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
- name: Display Rust version | |
run: rustc --version | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
default: true | |
components: rustfmt, clippy | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Run cargo check | |
uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: --workspace | |
env: #Will be handled by clippy | |
RUSTFLAGS: -A warnings | |
test: | |
name: Test Suite | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- name: Maximize disk space | |
uses: easimon/maximize-build-space@master | |
with: | |
remove-docker-images: true | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v1 | |
with: | |
java-version: 11 | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
default: true | |
components: rustfmt, clippy | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Run cargo test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: -p pravega-connection-pool -p pravega-client-channel -p pravega-controller-client -p pravega-client-integration-test -p pravega-client-retry -p pravega-client-shared -p pravega-wire-protocol -p pravega-client -p pravega-client-auth -p pravega-client-config | |
env: | |
RUST_BACKTRACE: 1 | |
- name: Run code cov | |
run: | | |
chmod +x ./.github/workflows/codecov/codecov.sh | |
./.github/workflows/codecov/codecov.sh | |
fmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
default: true | |
components: rustfmt, clippy | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Run cargo fmt | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
env: #Will be handled by clippy | |
RUSTFLAGS: -A warnings | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v2 | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
default: true | |
components: rustfmt, clippy | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Run cargo clean | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clean | |
#Clean selected modules once https://github.com/rust-lang/cargo/issues/8149 is fixed. | |
#args: -p pravega-controller-client -p pravega-wire-protocol -p pravega-client-rust -p pravega-rust-client-shared | |
- name: Run cargo clippy | |
uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --workspace | |
env: | |
RUSTFLAGS: -D warnings | |
build-release: | |
name: build-release | |
needs: ['fmt', 'check'] | |
runs-on: ${{ matrix.os }} | |
env: | |
# For some builds, we use cross to test on 32-bit and big-endian | |
# systems. | |
CARGO: cargo | |
# When CARGO is set to CROSS, this is set to `--target matrix.target`. | |
TARGET_FLAGS: "" | |
# When CARGO is set to CROSS, TARGET_DIR includes matrix.target. | |
TARGET_DIR: ./target | |
# Emit backtraces on panics. | |
RUST_BACKTRACE: 1 | |
# This corresponds to the pravegactl version. | |
VERSION: 0.0.1 | |
strategy: | |
matrix: | |
build: [linux, linux-arm, macos, win-msvc, win-gnu, win32-msvc] | |
include: | |
- build: linux | |
os: ubuntu-20.04 | |
rust: stable | |
target: x86_64-unknown-linux-musl | |
- build: linux-arm | |
os: ubuntu-20.04 | |
rust: stable | |
target: arm-unknown-linux-gnueabihf | |
- build: macos | |
os: macos-latest | |
rust: stable | |
target: x86_64-apple-darwin | |
- build: win-msvc | |
os: windows-2019 | |
rust: stable | |
target: x86_64-pc-windows-msvc | |
- build: win-gnu | |
os: ubuntu-20.04 | |
rust: stable-x86_64-gnu | |
target: x86_64-pc-windows-gnu | |
- build: win32-msvc | |
os: windows-2019 | |
rust: stable | |
target: i686-pc-windows-msvc | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
- name: Set release version | |
# Set release version env in all three os, the commented command only works in linux and mac. | |
run: python3 -c "import os; tag = os.environ['GITHUB_REF'].split('/')[-1]; f = open(os.environ['GITHUB_ENV'], 'a'); f.write('RELEASE_VERSION='+tag); f.close();" | |
# run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV | |
- name: Install packages (Ubuntu) | |
if: matrix.os == 'ubuntu-20.04' | |
run: | | |
.github/workflows/ubuntu-install-packages | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ matrix.rust }} | |
default: true | |
target: ${{ matrix.target }} | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
key: cross-${{ matrix.build }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Use Cross | |
shell: bash | |
# // Changed cargo version from latest to 0.2.4 for more information please refer https://github.com/cross-rs/cross/issues/1214 | |
run: | | |
cargo install --version 0.2.4 cross --force | |
echo "CARGO=cross" >> $GITHUB_ENV | |
echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV | |
echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV | |
- name: Show command used for Cargo | |
run: | | |
echo "cargo command is: ${{ env.CARGO }}" | |
echo "target flag is: ${{ env.TARGET_FLAGS }}" | |
echo "target dir is: ${{ env.TARGET_DIR }}" | |
- name: Build release binary | |
run: ${{ env.CARGO }} build --manifest-path=pravegactl/Cargo.toml --verbose --release ${{ env.TARGET_FLAGS }} | |
- name: Strip release binary (linux and macos) | |
if: matrix.build == 'linux' || matrix.build == 'macos' | |
run: strip "target/${{ matrix.target }}/release/pravegactl" | |
- name: Strip release binary (arm) | |
if: matrix.build == 'linux-arm' | |
run: | | |
docker run --rm -v \ | |
"$PWD/target:/target:Z" \ | |
rustembedded/cross:arm-unknown-linux-gnueabihf \ | |
arm-linux-gnueabihf-strip \ | |
/target/arm-unknown-linux-gnueabihf/release/pravegactl | |
- name: Build archive | |
shell: bash | |
run: | | |
staging="pravegactl-${{ env.VERSION }}-${{ matrix.target }}" | |
echo "Staging dir is ${staging}" | |
mkdir "$staging" | |
echo "currentdir is :" | |
pwd | |
if [ "${{ matrix.os }}" = "windows-2019" ] || [ "${{ matrix.build }}" = "win-gnu" ]; then | |
cp "target/${{ matrix.target }}/release/pravegactl.exe" "$staging/" | |
7z a "$staging.zip" "$staging" | |
echo "ASSET=$staging.zip" >> $GITHUB_ENV | |
else | |
cp "target/${{ matrix.target }}/release/pravegactl" "$staging/" | |
tar czf "$staging.tar.gz" "$staging" | |
echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV | |
fi | |
- name: Upload pravegactl artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ env.ASSET }} | |
path: ${{ env.ASSET }} | |
retention-days: 5 | |
- name: Upload to Github releases | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | |
#working-directory: ${{ env.ASSET }} | |
# Use bash, even on Windows to make find available | |
shell: bash | |
# A release need to be created before upload | |
run: gh release upload ${{ env.RELEASE_VERSION }} ${{ env.ASSET }} --clobber | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |