79 lines
2.3 KiB
YAML
79 lines
2.3 KiB
YAML
name: Integration test
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
|
|
jobs:
|
|
integration-test:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
k8s_version: [v1.25.3, v1.24.7, v1.23.13]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Create kind cluster
|
|
uses: helm/kind-action@v1.1.0
|
|
with:
|
|
version: v0.17.0
|
|
node_image: kindest/node:${{ matrix.k8s_version }}
|
|
cluster_name: kind-cluster-${{ matrix.k8s_version }}
|
|
config: test/integration/kind-cluster.yaml
|
|
|
|
- name: Install Nginx ingress controller
|
|
run: |
|
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.0/deploy/static/provider/kind/deploy.yaml
|
|
kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=120s
|
|
|
|
- name: Set up Go 1.19
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: "1.19"
|
|
|
|
- name: Cache go mod
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
|
|
- name: Set /etc/hosts
|
|
run: |
|
|
sudo -- sh -c "echo '127.0.0.1 harbor.local' >> /etc/hosts"
|
|
|
|
- name: Run integration tests
|
|
working-directory: ./test
|
|
run:
|
|
go test -v -timeout 30m github.com/goharbor/harbor-helm/integration
|
|
|
|
- name: fetch harbor logs
|
|
if: failure()
|
|
run: |
|
|
df -h
|
|
free -m
|
|
mkdir -p /tmp/harbor
|
|
for name in core jobservice registry registryctl trivy portal redis database; do \
|
|
kubectl -n default logs -l "component=$name" --all-containers > /tmp/harbor/$name.log ; \
|
|
done
|
|
|
|
- uses: actions/upload-artifact@v2
|
|
if: failure()
|
|
with:
|
|
name: harbor_${{ matrix.k8s_version }}_${{ runner.os }}
|
|
path: /tmp/harbor
|
|
|
|
- name: fetch logs
|
|
if: failure()
|
|
run: |
|
|
mkdir -p /tmp/logs
|
|
kind export logs --name kind-cluster-${{ matrix.k8s_version }} /tmp/logs
|
|
|
|
- uses: actions/upload-artifact@v2
|
|
if: failure()
|
|
with:
|
|
name: kind_v${{ matrix.k8s_version }}
|
|
path: /tmp/logs
|