Skip to content

Add CI for Go

Add CI for Go #7

Workflow file for this run

name: Go CI
on:
push:
branches: ["main"]
paths:
- glide-core/**
- submodules/**
- go/**
- .github/workflows/go.yml
pull_request:
paths:
- glide-core/**
- submodules/**
- go/**
- .github/workflows/go.yml
# Run only the latest job on a branch and cancel previous ones
concurrency:
group: ${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
build-and-test-go-client:
timeout-minutes: 25
strategy:
# Run all jobs
fail-fast: false
matrix:
go:
# - '1.18'
- '1.21'
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 Go ${{ matrix.go }}
uses: actions/setup-go@v5
with:
go-version: '^1.13.1'
- 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: Build glide-core
working-directory: ./glide-core
run: cargo build --release
- name: Build glide
working-directory: ./go/glide
run: cargo build --release
- name: Setup upterm session
uses: lhotari/action-upterm@v1
- name: Install client dependencies
working-directory: ./go/glide
run: go install
- name: Generate the Go protobuf files
run: |
mkdir go/glide/protobuf
protoc --proto_path=glide-core/src/protobuf \
--go_opt=Mconnection_request.proto=github.com/aws/glide-for-redis/go/glide/protobuf \
--go_opt=Mredis_request.proto=github.com/aws/glide-for-redis/go/glide/protobuf \
--go_opt=Mresponse.proto=github.com/aws/glide-for-redis/go/glide/protobuf \
--go_out=go/glide/protobuf \
--go_opt=paths=source_relative \
glide-core/src/protobuf/*.proto
- name: Build client
working-directory: ./go/glide
run: |
go mod edit -go=${{ matrix.go }}
go build .
- name: Run go vet
working-directory: ./go/glide
run: go vet .
- name: Run staticcheck
working-directory: ./go/glide
run: go staticcheck .
- name: Run unit tests
working-directory: ./go/glide
run: go test -json | go-test-report -o reports/unit-test-report.html
- name: Upload test reports
if: always()
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: test-reports-go-${{ matrix.go }}-redis-${{ matrix.redis }}-${{ matrix.os }}
path: |
go/glide/reports/unit-test-report.html
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/glide
name: lint go rust