Skip to content

Add IT framework

Add IT framework #431

Workflow file for this run

name: Java CI
on:
push:
branches: ["main"]
paths:
- glide-core/**
- submodules/**
- "java/**"
- ".github/workflows/java.yml"
pull_request:
paths:
- glide-core/**
- submodules/**
- "java/**"
- ".github/workflows/java.yml"
# Run only most latest job on a branch and cancel previous ones
concurrency:
group: ${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
build-and-test-java-client:
timeout-minutes: 25
strategy:
# Run all jobs
fail-fast: false
matrix:
java:
- 11
- 17
redis:
- 6.2.14
- 7.2.3
os:
- ubuntu-latest
- macos-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: ${{ matrix.java }}
- name: Install shared software dependencies
uses: ./.github/workflows/install-shared-dependencies
with:
os: ${{ matrix.os }}
target: ${{ matrix.os == 'ubuntu-latest' && 'x86_64-unknown-linux-gnu' || 'x86_64-apple-darwin' }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install redis
# TODO: make this step macos compatible: https://github.com/aws/glide-for-redis/issues/781
if: ${{ matrix.os == 'ubuntu-latest' }}
uses: ./.github/workflows/install-redis
with:
redis-version: ${{ matrix.redis }}
- name: Start redis
run: |
redis-server --daemonize yes
mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
for port in {7000..7005}; do
pushd $port
cat << EOF > redis.conf
port $port
cluster-enabled yes
daemonize yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
dir $PWD
pidfile $PWD/redis.pid
logfile $PWD/redis.log
EOF
redis-server redis.conf &
popd
done
ps axwwu | grep [r]edis
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1 --cluster-yes
redis-cli -c -p 7000 cluster slots
- name: Build rust part
working-directory: java
run: cargo build --release
- name: Build java part
working-directory: java
run: ./gradlew --continue build
- name: Stop redis
if: always()
run: sudo killall -9 redis-server
- name: Upload test reports
if: always()
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: test-reports-java-${{ matrix.java }}-redis-${{ matrix.redis }}-${{ matrix.os }}
path: |
java/client/build/reports/**
java/integTest/build/reports/**
cluster-test/**
build-amazonlinux-latest:
if: github.repository_owner == 'aws'
strategy:
# Run all jobs
fail-fast: false
matrix:
java:
- 11
- 17
runs-on: ubuntu-latest
container: amazonlinux:latest
timeout-minutes: 15
steps:
- name: Install git
run: |
yum -y remove git
yum -y remove git-*
yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
yum update
yum install -y git
git --version
- uses: actions/checkout@v4
- name: Checkout submodules
run: |
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git submodule update --init --recursive
- name: Install shared software dependencies
uses: ./.github/workflows/install-shared-dependencies
with:
os: "amazon-linux"
target: "x86_64-unknown-linux-gnu"
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Create a symbolic Link for redis6 binaries
run: |
ln -s /usr/bin/redis6-server /usr/bin/redis-server
ln -s /usr/bin/redis6-cli /usr/bin/redis-cli
- name: Install Java
run: |
yum install -y java-${{ matrix.java }}
- name: Build rust part
working-directory: java
run: cargo build --release
- name: Build java part
working-directory: java
run: ./gradlew --continue build
- name: Upload test reports
if: always()
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: test-reports-${{ matrix.java }}
path: |
java/client/build/reports/**
java/integTest/build/reports/**
lint-rust:
timeout-minutes: 15
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: ./.github/workflows/lint-rust
with:
cargo-toml-folder: ./java
name: lint java rust