Add E2E test to assert self-signed CA support. (#2458)
This commit is contained in:
		
							parent
							
								
									a608abd124
								
							
						
					
					
						commit
						e45e4c53f1
					
				| 
						 | 
					@ -565,3 +565,119 @@ jobs:
 | 
				
			||||||
          arc-name: ${{steps.install_arc.outputs.ARC_NAME}}
 | 
					          arc-name: ${{steps.install_arc.outputs.ARC_NAME}}
 | 
				
			||||||
          arc-namespace: "arc-runners"
 | 
					          arc-namespace: "arc-runners"
 | 
				
			||||||
          arc-controller-namespace: "arc-systems"
 | 
					          arc-controller-namespace: "arc-systems"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  self-signed-ca-setup:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.id == github.repository_id
 | 
				
			||||||
 | 
					    env:
 | 
				
			||||||
 | 
					      WORKFLOW_FILE: "arc-test-workflow.yaml"
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      - uses: actions/checkout@v3
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          ref: ${{github.head_ref}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - uses: ./.github/actions/setup-arc-e2e
 | 
				
			||||||
 | 
					        id: setup
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          app-id: ${{secrets.E2E_TESTS_ACCESS_APP_ID}}
 | 
				
			||||||
 | 
					          app-pk: ${{secrets.E2E_TESTS_ACCESS_PK}}
 | 
				
			||||||
 | 
					          image-name: ${{env.IMAGE_NAME}}
 | 
				
			||||||
 | 
					          image-tag: ${{env.IMAGE_VERSION}}
 | 
				
			||||||
 | 
					          target-org: ${{env.TARGET_ORG}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Install gha-runner-scale-set-controller
 | 
				
			||||||
 | 
					        id: install_arc_controller
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          helm install arc \
 | 
				
			||||||
 | 
					          --namespace "arc-systems" \
 | 
				
			||||||
 | 
					          --create-namespace \
 | 
				
			||||||
 | 
					          --set image.repository=${{ env.IMAGE_NAME }} \
 | 
				
			||||||
 | 
					          --set image.tag=${{ env.IMAGE_VERSION }} \
 | 
				
			||||||
 | 
					          ./charts/gha-runner-scale-set-controller \
 | 
				
			||||||
 | 
					          --debug
 | 
				
			||||||
 | 
					          count=0
 | 
				
			||||||
 | 
					          while true; do
 | 
				
			||||||
 | 
					            POD_NAME=$(kubectl get pods -n arc-systems -l app.kubernetes.io/name=gha-runner-scale-set-controller -o name)
 | 
				
			||||||
 | 
					            if [ -n "$POD_NAME" ]; then
 | 
				
			||||||
 | 
					              echo "Pod found: $POD_NAME"
 | 
				
			||||||
 | 
					              break
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            if [ "$count" -ge 10 ]; then
 | 
				
			||||||
 | 
					              echo "Timeout waiting for controller pod with label app.kubernetes.io/name=gha-runner-scale-set-controller"
 | 
				
			||||||
 | 
					              exit 1
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            sleep 1
 | 
				
			||||||
 | 
					          done
 | 
				
			||||||
 | 
					          kubectl wait --timeout=30s --for=condition=ready pod -n arc-systems -l app.kubernetes.io/name=gha-runner-scale-set-controller
 | 
				
			||||||
 | 
					          kubectl get pod -n arc-systems
 | 
				
			||||||
 | 
					          kubectl describe deployment arc-gha-runner-scale-set-controller -n arc-systems
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Install gha-runner-scale-set
 | 
				
			||||||
 | 
					        id: install_arc
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          docker run -d \
 | 
				
			||||||
 | 
					            --rm \
 | 
				
			||||||
 | 
					            --name mitmproxy \
 | 
				
			||||||
 | 
					            --publish 8080:8080 \
 | 
				
			||||||
 | 
					            -v ${{ github.workspace }}/mitmproxy:/home/mitmproxy/.mitmproxy \
 | 
				
			||||||
 | 
					            mitmproxy/mitmproxy:latest \
 | 
				
			||||||
 | 
					            mitmdump
 | 
				
			||||||
 | 
					          count=0
 | 
				
			||||||
 | 
					          while true; do
 | 
				
			||||||
 | 
					            if [ -f "${{ github.workspace }}/mitmproxy/mitmproxy-ca-cert.pem" ]; then
 | 
				
			||||||
 | 
					              echo "CA cert generated"
 | 
				
			||||||
 | 
					              cat ${{ github.workspace }}/mitmproxy/mitmproxy-ca-cert.pem
 | 
				
			||||||
 | 
					              break
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            if [ "$count" -ge 10 ]; then
 | 
				
			||||||
 | 
					              echo "Timeout waiting for mitmproxy generate its CA cert"
 | 
				
			||||||
 | 
					              exit 1
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            sleep 1
 | 
				
			||||||
 | 
					          done
 | 
				
			||||||
 | 
					          sudo cp ${{ github.workspace }}/mitmproxy/mitmproxy-ca-cert.pem ${{ github.workspace }}/mitmproxy/mitmproxy-ca-cert.crt
 | 
				
			||||||
 | 
					          sudo chown runner ${{ github.workspace }}/mitmproxy/mitmproxy-ca-cert.crt
 | 
				
			||||||
 | 
					          kubectl create namespace arc-runners
 | 
				
			||||||
 | 
					          kubectl -n arc-runners create configmap ca-cert --from-file="${{ github.workspace }}/mitmproxy/mitmproxy-ca-cert.crt"
 | 
				
			||||||
 | 
					          kubectl -n arc-runners get configmap ca-cert -o yaml
 | 
				
			||||||
 | 
					          ARC_NAME=${{github.job}}-$(date +'%M%S')$((($RANDOM + 100) % 100 + 1))
 | 
				
			||||||
 | 
					          helm install "$ARC_NAME" \
 | 
				
			||||||
 | 
					          --namespace "arc-runners" \
 | 
				
			||||||
 | 
					          --create-namespace \
 | 
				
			||||||
 | 
					          --set githubConfigUrl="https://github.com/${{ env.TARGET_ORG }}/${{env.TARGET_REPO}}" \
 | 
				
			||||||
 | 
					          --set githubConfigSecret.github_token="${{ steps.setup.outputs.token }}" \
 | 
				
			||||||
 | 
					          --set proxy.https.url="http://host.minikube.internal:8080" \
 | 
				
			||||||
 | 
					          --set "proxy.noProxy[0]=10.96.0.1:443" \
 | 
				
			||||||
 | 
					          --set "githubServerTLS.certificateFrom.configMapKeyRef.name=ca-cert" \
 | 
				
			||||||
 | 
					          --set "githubServerTLS.certificateFrom.configMapKeyRef.key=mitmproxy-ca-cert.crt" \
 | 
				
			||||||
 | 
					          --set "githubServerTLS.runnerMountPath=/usr/local/share/ca-certificates/" \
 | 
				
			||||||
 | 
					          ./charts/gha-runner-scale-set \
 | 
				
			||||||
 | 
					          --debug
 | 
				
			||||||
 | 
					          echo "ARC_NAME=$ARC_NAME" >> $GITHUB_OUTPUT
 | 
				
			||||||
 | 
					          count=0
 | 
				
			||||||
 | 
					          while true; do
 | 
				
			||||||
 | 
					            POD_NAME=$(kubectl get pods -n arc-systems -l actions.github.com/scale-set-name=$ARC_NAME -o name)
 | 
				
			||||||
 | 
					            if [ -n "$POD_NAME" ]; then
 | 
				
			||||||
 | 
					              echo "Pod found: $POD_NAME"
 | 
				
			||||||
 | 
					              break
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            if [ "$count" -ge 10 ]; then
 | 
				
			||||||
 | 
					              echo "Timeout waiting for listener pod with label actions.github.com/scale-set-name=$ARC_NAME"
 | 
				
			||||||
 | 
					              exit 1
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					            sleep 1
 | 
				
			||||||
 | 
					          done
 | 
				
			||||||
 | 
					          kubectl wait --timeout=30s --for=condition=ready pod -n arc-systems -l actions.github.com/scale-set-name=$ARC_NAME
 | 
				
			||||||
 | 
					          kubectl get pod -n arc-systems
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      - name: Test ARC E2E
 | 
				
			||||||
 | 
					        uses: ./.github/actions/execute-assert-arc-e2e
 | 
				
			||||||
 | 
					        timeout-minutes: 10
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          auth-token: ${{ steps.setup.outputs.token }}
 | 
				
			||||||
 | 
					          repo-owner: ${{ env.TARGET_ORG }}
 | 
				
			||||||
 | 
					          repo-name: ${{env.TARGET_REPO}}
 | 
				
			||||||
 | 
					          workflow-file: ${{env.WORKFLOW_FILE}}
 | 
				
			||||||
 | 
					          arc-name: ${{steps.install_arc.outputs.ARC_NAME}}
 | 
				
			||||||
 | 
					          arc-namespace: "arc-runners"
 | 
				
			||||||
 | 
					          arc-controller-namespace: "arc-systems"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -65,7 +65,7 @@ githubConfigSecret:
 | 
				
			||||||
#   certificateFrom:
 | 
					#   certificateFrom:
 | 
				
			||||||
#     configMapKeyRef:
 | 
					#     configMapKeyRef:
 | 
				
			||||||
#       name: config-map-name
 | 
					#       name: config-map-name
 | 
				
			||||||
#       key: ca.pem
 | 
					#       key: ca.crt
 | 
				
			||||||
#   runnerMountPath: /usr/local/share/ca-certificates/
 | 
					#   runnerMountPath: /usr/local/share/ca-certificates/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# containerMode:
 | 
					# containerMode:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue