Skip to content

Go: Implementing Hash commands #1938

Go: Implementing Hash commands

Go: Implementing Hash commands #1938

Workflow file for this run

name: Go CI
on:
push:
branches: [ "main" ]
paths:
- glide-core/src/**
- submodules/**
- go/**
- .github/workflows/go.yml
- .github/workflows/install-shared-dependencies/action.yml
- .github/workflows/test-benchmark/action.yml
- .github/workflows/lint-rust/action.yml
- .github/workflows/install-valkey/action.yml
- .github/json_matrices/build-matrix.json
pull_request:
paths:
- glide-core/src/**
- submodules/**
- go/**
- .github/workflows/go.yml
- .github/workflows/install-shared-dependencies/action.yml
- .github/workflows/test-benchmark/action.yml
- .github/workflows/lint-rust/action.yml
- .github/workflows/install-valkey/action.yml
- .github/json_matrices/build-matrix.json
workflow_dispatch:
concurrency:
group: go-${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
load-engine-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.load-engine-matrix.outputs.matrix }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Load the engine matrix
id: load-engine-matrix
shell: bash
run: echo "matrix=$(jq -c . < .github/json_matrices/engine-matrix.json)" >> $GITHUB_OUTPUT
build-and-test-go-client:
needs: load-engine-matrix
timeout-minutes: 35
strategy:
# Run all jobs
fail-fast: false
matrix:
go:
- '1.22.0'
engine: ${{ fromJson(needs.load-engine-matrix.outputs.matrix) }}
host:
- {
OS: ubuntu,
RUNNER: ubuntu-latest,
TARGET: x86_64-unknown-linux-gnu
}
# - {
# OS: macos,
# RUNNER: macos-latest,
# TARGET: aarch64-apple-darwin
# }
runs-on: ${{ matrix.host.RUNNER }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Go ${{ matrix.go }}
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
cache-dependency-path: go/go.sum
- name: Install shared software dependencies
uses: ./.github/workflows/install-shared-dependencies
with:
os: ${{ matrix.host.OS }}
target: ${{ matrix.host.TARGET }}
github-token: ${{ secrets.GITHUB_TOKEN }}
engine-version: ${{ matrix.engine.version }}
- name: Install tools for Go ${{ matrix.go }}
working-directory: ./go
run: make install-tools-go${{ matrix.go }}
- name: Set LD_LIBRARY_PATH
if: ${{ matrix.os == 'ubuntu-latest' }}
run: echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GITHUB_WORKSPACE/go/target/release/deps/" >> $GITHUB_ENV
- name: Build client
working-directory: ./go
run: make build
- name: Run linters
working-directory: ./go
run: make lint-ci
- name: Run tests
working-directory: ./go
run: |
make test
- uses: ./.github/workflows/test-benchmark
with:
language-flag: -go
- name: Upload logs and reports
if: always()
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: reports-go-${{ matrix.go }}-redis-${{ matrix.redis }}-${{ matrix.os }}
path: |
utils/clusters/**
benchmarks/results/**
build-amazonlinux-latest:
if: github.repository_owner == 'valkey-io'
strategy:
# Run all jobs
fail-fast: false
matrix:
go:
- 1.22.0
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 }}
engine-version: "7.2.5"
- name: Install Go
run: |
yum -y install wget
yum -y install tar
wget https://go.dev/dl/go${{ matrix.go }}.linux-amd64.tar.gz
tar -C /usr/local -xzf go${{ matrix.go }}.linux-amd64.tar.gz
echo "/usr/local/go/bin" >> $GITHUB_PATH
echo "$HOME/go/bin" >> $GITHUB_PATH
- name: Install tools for Go ${{ matrix.go }}
working-directory: ./go
run: make install-tools-go${{ matrix.go }}
- name: Set LD_LIBRARY_PATH
run: echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GITHUB_WORKSPACE/go/target/release/deps/" >> $GITHUB_ENV
- name: Build client
working-directory: ./go
run: make build
- name: Run linters
working-directory: ./go
run: make lint-ci
- name: Run tests
working-directory: ./go
run: |
make test
- name: Upload cluster manager logs
if: always()
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: cluster-manager-logs-${{ matrix.go }}-redis-6-amazonlinux
path: |
utils/clusters/**
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: ./go
name: lint go rust