*: support TLS/mTLS on the peer and client (#443) #1436
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
# Copyright 2023 StreamNative, Inc. | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
name: Build | |
on: | |
pull_request: | |
branches: | |
- main | |
push: | |
branches: | |
- main | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
MAELSTROM_VERSION: "0.2.3" | |
jobs: | |
build: | |
name: Build & Test | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: 1.21 | |
- name: Install protoc | |
uses: arduino/setup-protoc@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Installing Go dependencies | |
run: | | |
go install google.golang.org/protobuf/cmd/[email protected] | |
go install google.golang.org/grpc/cmd/[email protected] | |
go install github.com/palantir/go-license@latest | |
- run: make license-check | |
- name: Build | |
run: make build | |
- name: golangci-lint | |
uses: golangci/golangci-lint-action@0ad9a0988b3973e851ab0a07adf248ec2e100376 #v3.3.1 | |
with: | |
version: v1.55.2 | |
args: --timeout=10m | |
skip-pkg-cache: true | |
- name: Test | |
run: make test | |
chaos-mesh: | |
name: Run chaos-mesh | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build docker | |
uses: docker/build-push-action@v3 | |
with: | |
context: . | |
push: false | |
tags: oxia:latest | |
cache-from: type=registry,ref=oxia:latest | |
cache-to: type=inline | |
- uses: helm/[email protected] | |
with: | |
cluster_name: kind | |
kubectl_version: v1.25.5 | |
- name: Deploy oxia | |
run: | | |
kubectl create namespace oxia | |
kind load docker-image oxia:latest | |
helm -n oxia install oxia \ | |
-f deploy/chaos-mesh/oxia-cluster.yaml \ | |
deploy/charts/oxia-cluster | |
sleep 30 | |
kubectl -n oxia run perf \ | |
--image=oxia:latest --image-pull-policy=Never \ | |
--command -- oxia perf -a oxia:6648 | |
- name: Encode chaos-mesh config | |
run: echo "CFG_BASE64=$(base64 -w0 deploy/chaos-mesh/chaos-mesh.yaml)" >> $GITHUB_ENV | |
- name: Run chaos-mesh | |
uses: chaos-mesh/chaos-mesh-action@master # v0.5 is broken | |
env: | |
CHAOS_MESH_VERSION: v2.5.1 | |
# CFG_BASE64: set by previous step | |
- name: Wait for workflow completion | |
run: sleep 120 | |
- name: Print pods | |
run: kubectl -n oxia get pods | |
- name: Print coordinator logs | |
run: kubectl -n oxia logs -l app.kubernetes.io/component=coordinator | |
- name: Print perf logs | |
run: kubectl -n oxia logs perf | |
maelstrom: | |
name: Maelstrom | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: 1.21 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: temurin | |
java-version: 17 | |
- name: Install Gnuplot | |
run: | | |
sudo apt-get update && sudo apt-get install -y gnuplot | |
- run: make | |
- run: make maelstrom | |
- name: Download Maelstrom | |
run: | | |
curl -O -L https://github.com/jepsen-io/maelstrom/releases/download/v${MAELSTROM_VERSION}/maelstrom.tar.bz2 | |
tar xf maelstrom.tar.bz2 | |
- name: Run Maelstrom test | |
run: | | |
cd maelstrom | |
./maelstrom test -w lin-kv --bin ../bin/oxia-maelstrom \ | |
--time-limit 60 --concurrency 2n --latency 10 --latency-dist uniform | |
- name: Upload test results | |
uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: maelstrom-result | |
path: maelstrom/store |