This repository has been archived by the owner on Aug 29, 2024. It is now read-only.
Update global-run-stale.yaml #9
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: (gha) E2E Tests | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
workflow_dispatch: | |
permissions: | |
contents: read | |
env: | |
TARGET_ORG: actions-runner-controller | |
TARGET_REPO: arc_e2e_test_dummy | |
IMAGE_NAME: "arc-test-image" | |
IMAGE_VERSION: "0.4.0" | |
concurrency: | |
# This will make sure we only apply the concurrency limits on pull requests | |
# but not pushes to master branch by making the concurrency group name unique | |
# for pushes | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
default-setup: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
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 60 ]; then | |
echo "Timeout waiting for controller pod with label app.kubernetes.io/name=gha-runner-scale-set-controller" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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: | | |
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 }}" \ | |
./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 60 ]; then | |
echo "Timeout waiting for listener pod with label actions.github.com/scale-set-name=$ARC_NAME" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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" | |
single-namespace-setup: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
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: | | |
kubectl create namespace arc-runners | |
helm install arc \ | |
--namespace "arc-systems" \ | |
--create-namespace \ | |
--set image.repository=${{ env.IMAGE_NAME }} \ | |
--set image.tag=${{ env.IMAGE_VERSION }} \ | |
--set flags.watchSingleNamespace=arc-runners \ | |
./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 60 ]; then | |
echo "Timeout waiting for controller pod with label app.kubernetes.io/name=gha-runner-scale-set-controller" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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: | | |
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 }}" \ | |
./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 60 ]; then | |
echo "Timeout waiting for listener pod with label actions.github.com/scale-set-name=$ARC_NAME" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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" | |
dind-mode-setup: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.id == github.repository_id | |
env: | |
WORKFLOW_FILE: arc-test-dind-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 60 ]; then | |
echo "Timeout waiting for controller pod with label app.kubernetes.io/name=gha-runner-scale-set-controller" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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: | | |
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 containerMode.type="dind" \ | |
./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 60 ]; then | |
echo "Timeout waiting for listener pod with label actions.github.com/scale-set-name=$ARC_NAME" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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" | |
kubernetes-mode-setup: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.id == github.repository_id | |
env: | |
WORKFLOW_FILE: "arc-test-kubernetes-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: | | |
echo "Install openebs/dynamic-localpv-provisioner" | |
helm repo add openebs https://openebs.github.io/charts | |
helm repo update | |
helm install openebs openebs/openebs -n openebs --create-namespace | |
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 60 ]; then | |
echo "Timeout waiting for controller pod with label app.kubernetes.io/name=gha-runner-scale-set-controller" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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 | |
kubectl wait --timeout=30s --for=condition=ready pod -n openebs -l name=openebs-localpv-provisioner | |
- name: Install gha-runner-scale-set | |
id: install_arc | |
run: | | |
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 containerMode.type="kubernetes" \ | |
--set containerMode.kubernetesModeWorkVolumeClaim.accessModes={"ReadWriteOnce"} \ | |
--set containerMode.kubernetesModeWorkVolumeClaim.storageClassName="openebs-hostpath" \ | |
--set containerMode.kubernetesModeWorkVolumeClaim.resources.requests.storage="1Gi" \ | |
./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 60 ]; then | |
echo "Timeout waiting for listener pod with label actions.github.com/scale-set-name=$ARC_NAME" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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" | |
auth-proxy-setup: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
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 60 ]; then | |
echo "Timeout waiting for controller pod with label app.kubernetes.io/name=gha-runner-scale-set-controller" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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 \ | |
--name squid \ | |
--publish 3128:3128 \ | |
huangtingluo/squid-proxy:latest | |
kubectl create namespace arc-runners | |
kubectl create secret generic proxy-auth \ | |
--namespace=arc-runners \ | |
--from-literal=username=github \ | |
--from-literal=password='actions' | |
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:3128" \ | |
--set proxy.https.credentialSecretRef="proxy-auth" \ | |
--set "proxy.noProxy[0]=10.96.0.1:443" \ | |
./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 60 ]; then | |
echo "Timeout waiting for listener pod with label actions.github.com/scale-set-name=$ARC_NAME" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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" | |
anonymous-proxy-setup: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
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 60 ]; then | |
echo "Timeout waiting for controller pod with label app.kubernetes.io/name=gha-runner-scale-set-controller" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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 \ | |
--name squid \ | |
--publish 3128:3128 \ | |
ubuntu/squid:latest | |
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:3128" \ | |
--set "proxy.noProxy[0]=10.96.0.1:443" \ | |
./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 60 ]; then | |
echo "Timeout waiting for listener pod with label actions.github.com/scale-set-name=$ARC_NAME" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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" | |
self-signed-ca-setup: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
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 60 ]; then | |
echo "Timeout waiting for controller pod with label app.kubernetes.io/name=gha-runner-scale-set-controller" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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 60 ]; then | |
echo "Timeout waiting for mitmproxy generate its CA cert" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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 60 ]; then | |
echo "Timeout waiting for listener pod with label actions.github.com/scale-set-name=$ARC_NAME" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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" | |
update-strategy-tests: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.id == github.repository_id | |
env: | |
WORKFLOW_FILE: "arc-test-sleepy-matrix.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 }} \ | |
--set flags.updateStrategy="eventual" \ | |
./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 60 ]; then | |
echo "Timeout waiting for controller pod with label app.kubernetes.io/name=gha-runner-scale-set-controller" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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: | | |
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 }}" \ | |
./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 60 ]; then | |
echo "Timeout waiting for listener pod with label actions.github.com/scale-set-name=$ARC_NAME" | |
exit 1 | |
fi | |
sleep 1 | |
count=$((count+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: Trigger long running jobs and wait for runners to pick them up | |
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" | |
wait-to-running: "true" | |
wait-to-finish: "false" | |
- name: Upgrade the gha-runner-scale-set | |
shell: bash | |
run: | | |
helm upgrade --install "${{ steps.install_arc.outputs.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 template.spec.containers[0].name="runner" \ | |
--set template.spec.containers[0].image="ghcr.io/actions/actions-runner:latest" \ | |
--set template.spec.containers[0].command={"/home/runner/run.sh"} \ | |
--set template.spec.containers[0].env[0].name="TEST" \ | |
--set template.spec.containers[0].env[0].value="E2E TESTS" \ | |
./charts/gha-runner-scale-set \ | |
--debug | |
- name: Assert that the listener is deleted while jobs are running | |
shell: bash | |
run: | | |
count=0 | |
while true; do | |
LISTENER_COUNT="$(kubectl get pods -l actions.github.com/scale-set-name=${{ steps.install_arc.outputs.ARC_NAME }} -n arc-systems --field-selector=status.phase=Running -o=jsonpath='{.items}' | jq 'length')" | |
RUNNERS_COUNT="$(kubectl get pods -l app.kubernetes.io/component=runner -n arc-runners --field-selector=status.phase=Running -o=jsonpath='{.items}' | jq 'length')" | |
RESOURCES="$(kubectl get pods -A)" | |
if [ "$LISTENER_COUNT" -eq 0 ]; then | |
echo "Listener has been deleted" | |
echo "$RESOURCES" | |
exit 0 | |
fi | |
if [ "$count" -ge 60 ]; then | |
echo "Timeout waiting for listener to be deleted" | |
echo "$RESOURCES" | |
exit 1 | |
fi | |
echo "Waiting for listener to be deleted" | |
echo "Listener count: $LISTENER_COUNT target: 0 | Runners count: $RUNNERS_COUNT target: 3" | |
sleep 1 | |
count=$((count+1)) | |
done | |
- name: Assert that the listener goes back up after the jobs are done | |
shell: bash | |
run: | | |
count=0 | |
while true; do | |
LISTENER_COUNT="$(kubectl get pods -l actions.github.com/scale-set-name=${{ steps.install_arc.outputs.ARC_NAME }} -n arc-systems --field-selector=status.phase=Running -o=jsonpath='{.items}' | jq 'length')" | |
RUNNERS_COUNT="$(kubectl get pods -l app.kubernetes.io/component=runner -n arc-runners --field-selector=status.phase=Running -o=jsonpath='{.items}' | jq 'length')" | |
RESOURCES="$(kubectl get pods -A)" | |
if [ "$LISTENER_COUNT" -eq 1 ]; then | |
echo "Listener is up!" | |
echo "$RESOURCES" | |
exit 0 | |
fi | |
if [ "$count" -ge 120 ]; then | |
echo "Timeout waiting for listener to be recreated" | |
echo "$RESOURCES" | |
exit 1 | |
fi | |
echo "Waiting for listener to be recreated" | |
echo "Listener count: $LISTENER_COUNT target: 1 | Runners count: $RUNNERS_COUNT target: 0" | |
sleep 1 | |
count=$((count+1)) | |
done | |
- name: Gather logs and cleanup | |
shell: bash | |
if: always() | |
run: | | |
helm uninstall "${{ steps.install_arc.outputs.ARC_NAME }}" --namespace "arc-runners" --debug | |
kubectl wait --timeout=10s --for=delete AutoScalingRunnerSet -n "${{ steps.install_arc.outputs.ARC_NAME }}" -l app.kubernetes.io/instance="${{ steps.install_arc.outputs.ARC_NAME }}" | |
kubectl logs deployment/arc-gha-runner-scale-set-controller -n "arc-systems" |