mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-12-24 11:51:13 +08:00
203 lines
6.1 KiB
YAML
203 lines
6.1 KiB
YAML
name: Test
|
|
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
pull_request:
|
|
branches: [ master ]
|
|
|
|
jobs:
|
|
image:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.23'
|
|
check-latest: true
|
|
- name: Push image to docker hub
|
|
run: |
|
|
echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USER }} --password-stdin
|
|
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
|
|
docker buildx create --use
|
|
export VERSION=${{github.event.pull_request.head.sha}}
|
|
if [[ -z "$VERSION" ]]; then
|
|
export VERSION=${{ github.sha }}
|
|
fi
|
|
make container-test
|
|
linux:
|
|
runs-on: ubuntu-latest
|
|
needs: [ "image" ]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.23'
|
|
check-latest: true
|
|
- name: Setup Minikube
|
|
id: minikube
|
|
timeout-minutes: 30
|
|
uses: medyagh/setup-minikube@latest
|
|
with:
|
|
cache: true
|
|
|
|
- name: Kubernetes info
|
|
run: |
|
|
kubectl cluster-info
|
|
cat ~/.kube/config
|
|
kubectl get pods -n kube-system -o wide
|
|
- name: Install demo bookinfo
|
|
run: |
|
|
minikube image load --remote ghcr.io/kubenetworks/examples-bookinfo-details-v1:1.20.2
|
|
minikube image load --remote ghcr.io/kubenetworks/examples-bookinfo-ratings-v1:1.20.2
|
|
minikube image load --remote ghcr.io/kubenetworks/examples-bookinfo-reviews-v1:1.20.2
|
|
minikube image load --remote ghcr.io/kubenetworks/examples-bookinfo-productpage-v1:1.20.2
|
|
minikube image load --remote ghcr.io/kubenetworks/authors:latest
|
|
minikube image load --remote ghcr.io/kubenetworks/nginx:latest
|
|
minikube image ls
|
|
eval $(minikube docker-env)
|
|
kubectl apply -f https://raw.githubusercontent.com/kubenetworks/kubevpn/master/samples/bookinfo.yaml
|
|
|
|
- name: Build
|
|
run: |
|
|
export VERSION=${{github.event.pull_request.head.sha}}
|
|
if [[ -z "$VERSION" ]]; then
|
|
export VERSION=${{ github.sha }}
|
|
fi
|
|
make kubevpn-linux-amd64
|
|
chmod +x ./bin/kubevpn
|
|
cp ./bin/kubevpn /usr/local/bin/kubevpn
|
|
kubevpn version
|
|
|
|
- name: Wait for pods reviews to be ready
|
|
run: |
|
|
kubectl wait pods -l app=reviews --for=condition=Ready --timeout=3600s
|
|
kubectl wait pods -l app=productpage --for=condition=Ready --timeout=3600s
|
|
kubectl wait pods -l app=authors --for=condition=Ready --timeout=3600s
|
|
kubectl get svc -A -o wide
|
|
kubectl get pod -A -o wide
|
|
kubectl get all -o wide
|
|
kubectl get nodes -o yaml
|
|
ifconfig
|
|
route -n
|
|
sudo ln /usr/bin/resolvectl /usr/bin/systemd-resolve
|
|
|
|
- name: Test
|
|
run: make ut
|
|
|
|
macos:
|
|
runs-on: macos-13
|
|
needs: [ "image" ]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.23'
|
|
check-latest: true
|
|
|
|
# https://github.com/crazy-max/ghaction-setup-docker/issues/108
|
|
- name: Set up QEMU
|
|
uses: docker/actions-toolkit/.github/actions/macos-setup-qemu@19ca9ade20f5da695f76a10988d6532058575f82
|
|
|
|
- name: Set up Docker
|
|
uses: docker/setup-docker-action@v4
|
|
with:
|
|
daemon-config: |
|
|
{
|
|
"debug": true,
|
|
"features": {
|
|
"containerd-snapshotter": true
|
|
}
|
|
}
|
|
- uses: azure/setup-kubectl@v4
|
|
- name: Install kind
|
|
run: |
|
|
set -x
|
|
docker version
|
|
brew install kind
|
|
kind create cluster
|
|
kubectl cluster-info
|
|
kubectl config view --flatten --raw
|
|
kubectl get pod -A -o wide
|
|
|
|
- name: Kubernetes info
|
|
run: |
|
|
kubectl cluster-info
|
|
cat ~/.kube/config
|
|
kubectl get pods -n kube-system -o wide
|
|
|
|
- name: Install demo bookinfo
|
|
run: |
|
|
kubectl apply -f https://raw.githubusercontent.com/kubenetworks/kubevpn/master/samples/bookinfo.yaml
|
|
|
|
- name: Build
|
|
run: |
|
|
export VERSION=${{github.event.pull_request.head.sha}}
|
|
if [[ -z "$VERSION" ]]; then
|
|
export VERSION=${{ github.sha }}
|
|
fi
|
|
make kubevpn-darwin-amd64
|
|
chmod +x ./bin/kubevpn
|
|
cp ./bin/kubevpn /usr/local/bin/kubevpn
|
|
kubevpn version
|
|
|
|
- name: Wait for pods reviews to be ready
|
|
run: |
|
|
kubectl wait pods -l app=reviews --for=condition=Ready --timeout=3600s
|
|
kubectl wait pods -l app=productpage --for=condition=Ready --timeout=3600s
|
|
kubectl wait pods -l app=authors --for=condition=Ready --timeout=3600s
|
|
kubectl get svc -A -o wide || true
|
|
kubectl get pod -A -o wide || true
|
|
kubectl get all -o wide || true
|
|
kubectl get nodes -o yaml || true
|
|
ifconfig
|
|
netstat -anr
|
|
|
|
- name: Test
|
|
run: make ut
|
|
|
|
windows:
|
|
runs-on: windows-latest
|
|
env:
|
|
VERSION: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
needs: [ "image" ]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.23'
|
|
|
|
- name: Set up Docker
|
|
uses: docker/setup-docker-action@v4
|
|
with:
|
|
daemon-config: |
|
|
{
|
|
"debug": true,
|
|
"features": {
|
|
"containerd-snapshotter": true
|
|
}
|
|
}
|
|
- run: |
|
|
docker info --format '{{.OSType}}'
|
|
choco install kind
|
|
kind create cluster
|
|
kubectl cluster-info
|
|
kubectl config view --flatten --raw
|
|
|
|
- run: |
|
|
choco install minikube
|
|
minikube start --driver=docker
|
|
choco install make
|
|
|
|
- name: Build
|
|
run: |
|
|
make kubevpn-windows-amd64
|
|
./bin/kubevpn.exe version
|
|
./bin/kubevpn.exe status |