1+ name : Namespace-scope Operator Integration Test WorkFlow
2+ on :
3+ schedule :
4+ - cron : " 0 02 * * WED,SUN"
5+ jobs :
6+ int-tests :
7+ strategy :
8+ fail-fast : false
9+ matrix :
10+ test :
11+ [
12+ appframeworks1,
13+ appframeworkc3,
14+ appframeworkm4,
15+ secret,
16+ smartstore,
17+ monitoringconsole,
18+ scaling,
19+ crcrud,
20+ licensemanager,
21+ ]
22+ runs-on : ubuntu-latest
23+ env :
24+ CLUSTER_NODES : 1
25+ CLUSTER_WORKERS : 3
26+ SPLUNK_ENTERPRISE_IMAGE : splunk/splunk:edge
27+ SPLUNK_OPERATOR_IMAGE_NAME : splunk/splunk-operator
28+ SPLUNK_OPERATOR_IMAGE_FILENAME : splunk-operator
29+ TEST_FOCUS : " ${{ matrix.test }}"
30+ # This regex matches any string not containing integration keyword
31+ TEST_TO_SKIP : " ^(?:[^i]+|i(?:$|[^n]|n(?:$|[^t]|t(?:$|[^e]|e(?:$|[^g]|g(?:$|[^r]|r(?:$|[^a]|a(?:$|[^t]|t(?:$|[^i]|i(?:$|[^o]|o(?:$|[^n])))))))))))*$"
32+ TEST_CLUSTER_PLATFORM : eks
33+ EKS_VPC_PRIVATE_SUBNET_STRING : ${{ secrets.EKS_VPC_PRIVATE_SUBNET_STRING }}
34+ EKS_VPC_PUBLIC_SUBNET_STRING : ${{ secrets.EKS_VPC_PUBLIC_SUBNET_STRING }}
35+ TEST_BUCKET : ${{ secrets.TEST_BUCKET }}
36+ TEST_INDEXES_S3_BUCKET : ${{ secrets.TEST_INDEXES_S3_BUCKET }}
37+ ECR_REPOSITORY : ${{ secrets.ECR_REPOSITORY }}
38+ PRIVATE_REGISTRY : ${{ secrets.ECR_REPOSITORY }}
39+ S3_REGION : ${{ secrets.AWS_DEFAULT_REGION }}
40+ ENTERPRISE_LICENSE_LOCATION : ${{ secrets.ENTERPRISE_LICENSE_LOCATION }}
41+ CLUSTER_WIDE : " false"
42+ steps :
43+ - name : Set Test Cluster Name
44+ run : |
45+ echo "TEST_CLUSTER_NAME=eks-integration-test-cluster-${{ matrix.test }}-$GITHUB_RUN_ID" >> $GITHUB_ENV
46+ - name : Set Test Cluster Nodes and Parallel Runs
47+ run : >-
48+ if grep -q "appframework" <<< "${{ matrix.test }}"; then
49+ echo "CLUSTER_WORKERS=5" >> $GITHUB_ENV
50+ echo "CLUSTER_NODES=2" >> $GITHUB_ENV
51+ fi
52+ - name : Checkout code
53+ uses : actions/checkout@v2
54+ with :
55+ ref : develop
56+ - name : Dotenv Action
57+ id : dotenv
58+ uses : falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359
59+ - name : Install Kubectl
60+ uses : Azure/setup-kubectl@v1
61+ with :
62+ version : ${{ steps.dotenv.outputs.KUBECTL_VERSION }}
63+ - name : Install Python
64+ uses : actions/setup-python@v2
65+ - name : Install AWS CLI
66+ run : |
67+ curl "${{ steps.dotenv.outputs.AWSCLI_URL}}" -o "awscli-bundle.zip"
68+ unzip awscli-bundle.zip
69+ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
70+ aws --version
71+ - name : Setup Go
72+ uses : actions/setup-go@v2
73+ with :
74+ go-version : ${{ steps.dotenv.outputs.GO_VERSION }}
75+ - name : Install Go Lint
76+ run : |
77+ go version
78+ go install golang.org/x/lint/golint
79+ - name : Install Ginkgo
80+ run : |
81+ go get github.com/onsi/ginkgo/ginkgo
82+ go get github.com/onsi/gomega/...
83+ - name : Install EKS CTL
84+ run : |
85+ curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
86+ sudo mv /tmp/eksctl /usr/local/bin
87+ eksctl version
88+ - name : setup-docker
89+ uses : docker-practice/actions-setup-docker@v1
90+ - name : Install Operator SDK
91+ run : |
92+ sudo curl -L -o /usr/local/bin/operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}/operator-sdk-${{ steps.dotenv.outputs.OPERATOR_SDK_VERSION }}-x86_64-linux-gnu
93+ sudo chmod +x /usr/local/bin/operator-sdk
94+ - name : Configure Docker Hub credentials
95+ uses : docker/login-action@v1
96+ with :
97+ username : ${{ secrets.DOCKERHUB_USERNAME }}
98+ password : ${{ secrets.DOCKERHUB_TOKEN}}
99+ - name : Pull Splunk Enterprise Edge Image
100+ run : docker pull ${{ env.SPLUNK_ENTERPRISE_IMAGE }}
101+ - name : Configure AWS credentials
102+ uses : aws-actions/configure-aws-credentials@v1
103+ with :
104+ aws-access-key-id : ${{ secrets.AWS_ACCESS_KEY_ID }}
105+ aws-secret-access-key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
106+ aws-region : ${{ secrets.AWS_DEFAULT_REGION }}
107+ - name : Login to Amazon ECR
108+ id : login-ecr
109+ uses : aws-actions/amazon-ecr-login@v1
110+ - name : Make Splunk Operator Image
111+ run : |
112+ docker pull registry.access.redhat.com/ubi8/ubi-minimal:latest
113+ make docker-build IMG=${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA
114+ - name : Push Splunk Operator Image to ECR
115+ run : |
116+ echo "Uploading Image to ECR:: ${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA"
117+ make docker-push IMG=${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA
118+ - name : Tag and Push Splunk Enterprise Image to ECR
119+ run : |
120+ docker tag ${{ env.SPLUNK_ENTERPRISE_IMAGE }} ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_ENTERPRISE_IMAGE }}
121+ docker push ${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_ENTERPRISE_IMAGE }}
122+ - name : Create EKS cluster
123+ run : |
124+ make cluster-up
125+ - name : install metric server
126+ run : |
127+ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
128+ - name : install k8s dashboard
129+ run : |
130+ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.5/aio/deploy/recommended.yaml
131+ - name : Run Integration test
132+ run : |
133+ export SPLUNK_OPERATOR_IMAGE=${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA
134+ make int-test
135+ - name : Collect Test Logs
136+ if : ${{ always() }}
137+ run : |
138+ mkdir -p /tmp/pod_logs
139+ find ./test -name "*.log" -exec cp {} /tmp/pod_logs \;
140+ - name : Archive Pod Logs
141+ if : ${{ always() }}
142+ uses : actions/upload-artifact@v2
143+ with :
144+ name : " splunk-pods-logs--artifacts-${{ matrix.test }}"
145+ path : " /tmp/pod_logs/**"
146+ - name : Cleanup up EKS cluster
147+ if : ${{ always() }}
148+ run : |
149+ make cluster-down
150+
0 commit comments