Skip to content

Commit 073ec24

Browse files
authored
[ci] Add NPM Conformance Test Pipeline (#792)
* [ci] Add NPM conformance pipeline
1 parent 55f53d5 commit 073ec24

File tree

2 files changed

+202
-1
lines changed

2 files changed

+202
-1
lines changed

.pipelines/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ RUN echo "deb http://archive.ubuntu.com/ubuntu/ bionic multiverse" | sudo tee -a
1111
RUN echo "deb http://archive.ubuntu.com/ubuntu/ bionic universe" | sudo tee -a /etc/apt/sources.list
1212
RUN echo "deb http://archive.ubuntu.com/ubuntu/ bionic main" | sudo tee -a /etc/apt/sources.list
1313
RUN apt-get update && apt-get install -y iptables ipset iproute2 ebtables
14-
RUN wget -qO- https://golang.org/dl/go1.14.6.linux-amd64.tar.gz | tar zxf - -C /usr/lib/
14+
RUN wget -qO- https://golang.org/dl/go1.15.linux-amd64.tar.gz | tar zxf - -C /usr/lib/
1515
ENV PATH="/usr/lib/go/bin/:${PATH}"
1616
ENV GOROOT="/usr/lib/go"
1717
ENV GOPATH="/root/go"
Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
trigger:
2+
- main
3+
4+
variables:
5+
- name: AZURE_CLUSTER
6+
value: azure-npm
7+
- name: VNET_NAME
8+
value: npm-vnet
9+
- name: LOCATION
10+
value: westus2
11+
- name: FQDN
12+
value: empty
13+
14+
jobs:
15+
- job: setup
16+
displayName: "Configure Test Environment"
17+
pool:
18+
name: Networking-ContainerNetworking
19+
demands:
20+
- agent.os -equals Linux
21+
- Role -equals Build
22+
container:
23+
image: "$(BUILD_IMAGE)" # build image set as variable in pipeline runtime for flexibility
24+
steps:
25+
26+
- checkout: self
27+
28+
- script: |
29+
go env
30+
go version
31+
mkdir -p '$(GOBIN)'
32+
mkdir -p '$(GOPATH)/pkg'
33+
BUILD_NUMBER=$(Build.BuildNumber)
34+
RG=kubernetes-$(echo "npm-conformance-`date "+%Y-%m-%d-%S"`")
35+
TAG=$(git describe --tags --always --dirty)-conformance-test
36+
echo "Resource group: $RG"
37+
echo "Image tag: $TAG"
38+
39+
echo "##vso[task.setvariable variable=RESOURCE_GROUP;isOutput=true;]$RG"
40+
echo "##vso[task.setvariable variable=TAG;isOutput=true;]$TAG"
41+
42+
name: "EnvironmentalVariables"
43+
displayName: "Set environmental variables"
44+
condition: always()
45+
46+
- job: Build_test
47+
displayName: "Build NPM and Kubernetes Test Suite"
48+
pool:
49+
name: Networking-ContainerNetworking
50+
demands:
51+
- agent.os -equals Linux
52+
- Role -equals Build
53+
container:
54+
image: "$(BUILD_IMAGE)" # build image set as variable in pipeline runtime for flexibility
55+
dependsOn: [setup]
56+
variables:
57+
GOBIN: "$(GOPATH)/bin" # Go binaries path
58+
GOPATH: "$(System.DefaultWorkingDirectory)/gopath" # Go workspace path
59+
RESOURCE_GROUP: $[ dependencies.setup.outputs['EnvironmentalVariables.RESOURCE_GROUP'] ]
60+
TAG: $[ dependencies.setup.outputs['EnvironmentalVariables.TAG'] ]
61+
62+
steps:
63+
- script: |
64+
rm -rf ./*
65+
displayName: "Set up OS environment"
66+
67+
- checkout: self
68+
69+
- script: |
70+
go env
71+
echo Tag: $(TAG)
72+
echo ResourceGroup: $(RESOURCE_GROUP)
73+
VERSION=$(TAG) make azure-npm-image
74+
echo '$(DOCKER_PASSWORD)' | docker login $IMAGE_REGISTRY -u '$(DOCKER_USERNAME)' --password-stdin
75+
docker push $IMAGE_REGISTRY/azure-npm:$(TAG)
76+
displayName: 'Build and Push NPM Image'
77+
78+
- script: git clone https://github.com/vakalapa/kubernetes.git
79+
displayName: 'Clone Kubernetes Repo'
80+
- bash: |
81+
cd kubernetes
82+
git checkout vakr/sleepinnpmtests
83+
make WHAT=test/e2e/e2e.test
84+
displayName: 'Build Kubernetes e2e.test'
85+
- publish: $(System.DefaultWorkingDirectory)/kubernetes/_output/local/bin/linux/amd64
86+
artifact: Test
87+
88+
89+
- job: Create_cluster
90+
displayName: "Deploy AKS Cluster"
91+
pool:
92+
name: Networking-ContainerNetworking
93+
demands:
94+
- agent.os -equals Linux
95+
- Role -equals Build
96+
container:
97+
image: "$(BUILD_IMAGE)" # build image set as variable in pipeline runtime for flexibility
98+
dependsOn: [setup]
99+
variables:
100+
RESOURCE_GROUP: $[ dependencies.setup.outputs['EnvironmentalVariables.RESOURCE_GROUP'] ]
101+
TAG: $[ dependencies.setup.outputs['EnvironmentalVariables.TAG'] ]
102+
steps:
103+
- script: |
104+
sudo rm -rf ./*
105+
displayName: "Set up OS environment"
106+
107+
- checkout: self
108+
109+
- task: AzureCLI@2
110+
displayName: "Deploy"
111+
inputs:
112+
azureSubscription: $(BUILD_VALIDATIONS_SUBSCRIPTION)
113+
scriptType: 'bash'
114+
scriptLocation: 'inlineScript'
115+
inlineScript: |
116+
az group create -n $(RESOURCE_GROUP) -l $(LOCATION) -o table
117+
echo created RG $(RESOURCE_GROUP) in $(LOCATION)
118+
az version
119+
az aks create --no-ssh-key \
120+
--resource-group $(RESOURCE_GROUP) \
121+
--name $(AZURE_CLUSTER) \
122+
--network-plugin azure
123+
124+
- job: Run_test
125+
displayName: "Run Kubernetes Network Policy Test Suite"
126+
pool:
127+
name: Networking-ContainerNetworking
128+
demands:
129+
- agent.os -equals Linux
130+
- Role -equals Build
131+
container:
132+
image: "$(BUILD_IMAGE)" # build image set as variable in pipeline runtime for flexibility
133+
dependsOn: [Create_cluster, Build_test, setup]
134+
variables:
135+
RESOURCE_GROUP: $[ dependencies.setup.outputs['EnvironmentalVariables.RESOURCE_GROUP'] ]
136+
TAG: $[ dependencies.setup.outputs['EnvironmentalVariables.TAG'] ]
137+
steps:
138+
- download: current
139+
artifact: Test
140+
- task: AzureCLI@2
141+
displayName: "Deploy NPM to Test Cluster"
142+
inputs:
143+
azureSubscription: $(BUILD_VALIDATIONS_SUBSCRIPTION)
144+
scriptType: 'bash'
145+
scriptLocation: 'inlineScript'
146+
inlineScript: |
147+
echo Cluster $(AZURE_CLUSTER)
148+
echo Resource $(RESOURCE_GROUP)
149+
150+
az aks get-credentials -n $(AZURE_CLUSTER) -g $(RESOURCE_GROUP) --file ./kubeconfig
151+
# get kubectl
152+
curl -LO https://dl.k8s.io/release/v1.20.0/bin/linux/amd64/kubectl
153+
chmod +x kubectl
154+
155+
# deploy azure-npm
156+
./kubectl --kubeconfig=./kubeconfig apply -f https://raw.githubusercontent.com/Azure/azure-container-networking/master/npm/azure-npm.yaml
157+
158+
# swap azure-npm image with one built during run
159+
./kubectl --kubeconfig=./kubeconfig set image daemonset/azure-npm -n kube-system azure-npm=$IMAGE_REGISTRY/azure-npm:$(TAG)
160+
161+
./kubectl --kubeconfig=./kubeconfig describe daemonset azure-npm -n kube-system
162+
163+
FQDN=`az aks show -n $(AZURE_CLUSTER) -g $(RESOURCE_GROUP) --query fqdn -o tsv`
164+
echo "##vso[task.setvariable variable=FQDN]$FQDN"
165+
166+
- bash: |
167+
ls -la
168+
ls
169+
ls -la $(Pipeline.Workspace)
170+
ls -la $(Pipeline.Workspace)/Test
171+
echo $FQDN
172+
ls ~
173+
chmod +x $(Pipeline.Workspace)/Test/e2e.test
174+
KUBERNETES_SERVICE_HOST="$FQDN" KUBERNETES_SERVICE_PORT=443 $(Pipeline.Workspace)/Test/e2e.test --provider=local --ginkgo.focus="NetworkPolicy" --ginkgo.skip="SCTP" --kubeconfig=./kubeconfig
175+
displayName: "Run Test Suite"
176+
177+
- job: Clean_up
178+
displayName: "Cleanup"
179+
pool:
180+
name: Networking-ContainerNetworking
181+
demands:
182+
- agent.os -equals Linux
183+
- Role -equals Build
184+
container:
185+
image: "$(BUILD_IMAGE)" # build image set as variable in pipeline runtime for flexibility
186+
condition: always()
187+
dependsOn: [Run_test, setup]
188+
variables:
189+
RESOURCE_GROUP: $[ dependencies.setup.outputs['EnvironmentalVariables.RESOURCE_GROUP'] ]
190+
TAG: $[ dependencies.setup.outputs['EnvironmentalVariables.TAG'] ]
191+
steps:
192+
- checkout: none
193+
- task: AzureCLI@2
194+
displayName: "Delete Test Cluster Resource Group"
195+
inputs:
196+
azureSubscription: $(BUILD_VALIDATIONS_SUBSCRIPTION)
197+
scriptType: 'bash'
198+
scriptLocation: 'inlineScript'
199+
inlineScript: |
200+
echo Deleting $(RESOURCE_GROUP)
201+
az group delete -n $(RESOURCE_GROUP) --yes

0 commit comments

Comments
 (0)