Skip to content

Commit d960daa

Browse files
authored
CSPL-1754 (#802)
1 parent fb4b7e9 commit d960daa

File tree

1 file changed

+150
-0
lines changed

1 file changed

+150
-0
lines changed
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
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

Comments
 (0)