Merge pull request #3168 from jwcesign/add-karmadactl-init-ci
Add e2e for karmadactl init
This commit is contained in:
commit
06a6facb1b
|
@ -0,0 +1,53 @@
|
|||
name: CLI
|
||||
on:
|
||||
# Run this workflow every time a new commit pushed to upstream/fork repository.
|
||||
# Run workflow on fork repository will help contributors find and resolve issues before sending a PR.
|
||||
push:
|
||||
pull_request:
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.actor }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
init:
|
||||
name: init
|
||||
runs-on: ubuntu-20.04
|
||||
strategy:
|
||||
matrix:
|
||||
# Here support the latest three minor releases of Kubernetes, this can be considered to be roughly
|
||||
# the same as the End of Life of the Kubernetes release: https://kubernetes.io/releases/
|
||||
# Please remember to update the CI Schedule Workflow when we add a new version.
|
||||
k8s: [ v1.24.2, v1.25.0, v1.26.0 ]
|
||||
steps:
|
||||
- name: checkout code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
# Number of commits to fetch. 0 indicates all history for all branches and tags.
|
||||
# We need to guess version via git tags.
|
||||
fetch-depth: 0
|
||||
- name: install Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
go-version: 1.19.5
|
||||
- uses: engineerd/setup-kind@v0.5.0
|
||||
with:
|
||||
version: "v0.17.0"
|
||||
- name: run karmadactl init test
|
||||
run: |
|
||||
export CLUSTER_VERSION=kindest/node:${{ matrix.k8s }}
|
||||
|
||||
# init e2e environment
|
||||
hack/cli-testing-environment.sh
|
||||
|
||||
# run a single e2e
|
||||
export KUBECONFIG=${HOME}/karmada/karmada-apiserver.config
|
||||
GO111MODULE=on go install github.com/onsi/ginkgo/v2/ginkgo
|
||||
ginkgo -v --race --trace -p --focus="[BasicPropagation] propagation testing deployment propagation testing" ./test/e2e/
|
||||
- uses: chainguard-dev/actions/kind-diag@main
|
||||
# Only upload logs on failure.
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
cluster-resources: nodes,namespaces,
|
||||
namespace-resources: configmaps,pods,svc
|
||||
artifact-name: logs-${{ matrix.k8s}}
|
||||
|
|
@ -5,4 +5,3 @@ networking:
|
|||
serviceSubnet: {{service_cidr}}
|
||||
nodes:
|
||||
- role: control-plane
|
||||
- role: worker
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
#!/usr/bin/env bash
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
# This script starts a local karmada control plane with karmadactl and with a certain number of clusters joined.
|
||||
# This script depends on utils in: ${REPO_ROOT}/hack/util.sh
|
||||
# 1. used by developer to setup develop environment quickly.
|
||||
# 2. used by e2e testing to setup test environment automatically.
|
||||
|
||||
REPO_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
||||
source "${REPO_ROOT}"/hack/util.sh
|
||||
|
||||
# variable define
|
||||
KUBECONFIG_PATH=${KUBECONFIG_PATH:-"${HOME}/.kube"}
|
||||
HOST_CLUSTER_NAME=${HOST_CLUSTER_NAME:-"karmada-host"}
|
||||
MEMBER_CLUSTER_1_NAME=${MEMBER_CLUSTER_1_NAME:-"member1"}
|
||||
MEMBER_CLUSTER_2_NAME=${MEMBER_CLUSTER_2_NAME:-"member2"}
|
||||
CLUSTER_VERSION=${CLUSTER_VERSION:-"kindest/node:v1.26.0"}
|
||||
BUILD_PATH=${BUILD_PATH:-"_output/bin/linux/amd64"}
|
||||
|
||||
# prepare the newest crds
|
||||
echo "Prepare the newest crds"
|
||||
cd charts/karmada/
|
||||
cp -r _crds crds
|
||||
tar -zcvf ../../crds.tar.gz crds
|
||||
cd -
|
||||
|
||||
# make karmadactl binary
|
||||
make karmadactl
|
||||
|
||||
# create host/member1/member2 cluster
|
||||
echo "Start create clusters..."
|
||||
hack/create-cluster.sh ${HOST_CLUSTER_NAME} ${KUBECONFIG_PATH}/${HOST_CLUSTER_NAME}.config > /dev/null 2>&1 &
|
||||
hack/create-cluster.sh ${MEMBER_CLUSTER_1_NAME} ${KUBECONFIG_PATH}/${MEMBER_CLUSTER_1_NAME}.config > /dev/null 2>&1 &
|
||||
hack/create-cluster.sh ${MEMBER_CLUSTER_2_NAME} ${KUBECONFIG_PATH}/${MEMBER_CLUSTER_2_NAME}.config > /dev/null 2>&1 &
|
||||
|
||||
# wait cluster ready
|
||||
echo "Wait clusters ready..."
|
||||
util::wait_file_exist ${KUBECONFIG_PATH}/${HOST_CLUSTER_NAME}.config 300
|
||||
util::wait_file_exist ${KUBECONFIG_PATH}/${MEMBER_CLUSTER_1_NAME}.config 300
|
||||
util::wait_file_exist ${KUBECONFIG_PATH}/${MEMBER_CLUSTER_2_NAME}.config 300
|
||||
kubectl wait --for=condition=Ready nodes --all --timeout=800s --kubeconfig=${KUBECONFIG_PATH}/${HOST_CLUSTER_NAME}.config
|
||||
kubectl wait --for=condition=Ready nodes --all --timeout=800s --kubeconfig=${KUBECONFIG_PATH}/${MEMBER_CLUSTER_1_NAME}.config
|
||||
kubectl wait --for=condition=Ready nodes --all --timeout=800s --kubeconfig=${KUBECONFIG_PATH}/${MEMBER_CLUSTER_2_NAME}.config
|
||||
|
||||
# init Karmada control plane
|
||||
echo "Start init karmada control plane..."
|
||||
${BUILD_PATH}/karmadactl init --kubeconfig=${KUBECONFIG_PATH}/${HOST_CLUSTER_NAME}.config \
|
||||
--karmada-data=${HOME}/karmada \
|
||||
--karmada-pki=${HOME}/karmada/pki \
|
||||
--crds=./crds.tar.gz
|
||||
|
||||
# join cluster
|
||||
echo "Join member clusters..."
|
||||
${BUILD_PATH}/karmadactl --kubeconfig ${HOME}/karmada/karmada-apiserver.config join ${MEMBER_CLUSTER_1_NAME} --cluster-kubeconfig=${KUBECONFIG_PATH}/${MEMBER_CLUSTER_1_NAME}.config
|
||||
${BUILD_PATH}/karmadactl --kubeconfig ${HOME}/karmada/karmada-apiserver.config join ${MEMBER_CLUSTER_2_NAME} --cluster-kubeconfig=${KUBECONFIG_PATH}/${MEMBER_CLUSTER_2_NAME}.config
|
||||
kubectl wait --for=condition=Ready clusters --all --timeout=800s --kubeconfig=${HOME}/karmada/karmada-apiserver.config
|
Loading…
Reference in New Issue