blob: d4dafac44c40f177616111229b3db362eb16fc67 [file] [log] [blame]
name: Chaos Test
on:
pull_request:
branches: [master, 'release/**']
paths-ignore:
- 'docs/**'
- '**/*.md'
concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.run_number || github.ref }}
cancel-in-progress: true
jobs:
chaos-test:
runs-on: ubuntu-latest
timeout-minutes: 35
steps:
- uses: actions/checkout@v2.4.0
with:
submodules: recursive
- name: Setup go
uses: actions/setup-go@v2.1.5
with:
go-version: "1.16"
- uses: actions/cache@v2.1.7
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Creating minikube cluster
run: |
bash ./t/chaos/utils/setup_chaos_utils.sh start_minikube
wget https://raw.githubusercontent.com/apache/apisix-docker/master/alpine-local/Dockerfile
mkdir logs
docker build -t apache/apisix:alpine-local --build-arg APISIX_PATH=. -f Dockerfile .
minikube cache add apache/apisix:alpine-local -v 7 --alsologtostderr
- name: Print cluster information
run: |
kubectl config view
kubectl cluster-info
kubectl get nodes
kubectl get pods -n kube-system
kubectl version
- name: Deploy etcd with Helm
run: |
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install etcd bitnami/etcd --set replicaCount=3 --set auth.rbac.create=false
kubectl wait pods -l app.kubernetes.io/instance=etcd --for=condition=Ready --timeout=300s --all
- name: Deploy APISIX
run: |
bash ./t/chaos/utils/setup_chaos_utils.sh modify_config
kubectl create configmap apisix-gw-config.yaml --from-file=./conf/config.yaml
kubectl apply -f ./kubernetes/deployment.yaml
kubectl apply -f ./kubernetes/service.yaml
kubectl wait pods -l app=apisix-gw --for=condition=Ready --timeout=300s \
|| (kubectl logs -l app=apisix-gw && exit 1)
kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/httpbin/httpbin.yaml
kubectl wait pods -l app=httpbin --for=condition=Ready --timeout=300s \
|| (kubectl logs -l app=httpbin && exit 1)
bash ./t/chaos/utils/setup_chaos_utils.sh port_forward
- name: Deploy Chaos Mesh
run: |
curl -sSL https://mirrors.chaos-mesh.org/v2.0.1/install.sh | bash
- name: Install Ginkgo
run: |
go get -u github.com/onsi/ginkgo/ginkgo
sudo cp ~/go/bin/ginkgo /usr/local/bin
- name: Run test
working-directory: ./t/chaos
run: ginkgo -r --v --progress --trace
# Debug via SSH if previous steps failed
- name: Set up tmate session
if: ${{ failure() }}
uses: ./.github/actions/action-tmate
timeout-minutes: 15