diff --git a/.github/workflows/e2e-test-linux-vm.yaml b/.github/workflows/e2e-test-linux-vm.yaml index a054149b..b7d5cf13 100644 --- a/.github/workflows/e2e-test-linux-vm.yaml +++ b/.github/workflows/e2e-test-linux-vm.yaml @@ -565,3 +565,119 @@ jobs: arc-name: ${{steps.install_arc.outputs.ARC_NAME}} arc-namespace: "arc-runners" 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" diff --git a/charts/gha-runner-scale-set/values.yaml b/charts/gha-runner-scale-set/values.yaml index dd6b5b89..bbd58ac8 100644 --- a/charts/gha-runner-scale-set/values.yaml +++ b/charts/gha-runner-scale-set/values.yaml @@ -65,7 +65,7 @@ githubConfigSecret: # certificateFrom: # configMapKeyRef: # name: config-map-name -# key: ca.pem +# key: ca.crt # runnerMountPath: /usr/local/share/ca-certificates/ # containerMode: