From 1b851a20934fb20354d5b9611796069cb766c592 Mon Sep 17 00:00:00 2001 From: Fangchen Li Date: Sat, 4 Nov 2023 11:29:21 -0700 Subject: [PATCH] CI: cleanup local integration workflow (#2079) --- ..._test.yaml => test_local_integration.yaml} | 103 ++++++++---------- 1 file changed, 48 insertions(+), 55 deletions(-) rename .github/workflows/{kubernetes_test.yaml => test_local_integration.yaml} (66%) diff --git a/.github/workflows/kubernetes_test.yaml b/.github/workflows/test_local_integration.yaml similarity index 66% rename from .github/workflows/kubernetes_test.yaml rename to .github/workflows/test_local_integration.yaml index ce34caa6c2..8ddc1f9690 100644 --- a/.github/workflows/kubernetes_test.yaml +++ b/.github/workflows/test_local_integration.yaml @@ -1,9 +1,14 @@ -name: "Kubernetes Tests" +name: "Local Integration Tests" + +env: + TEST_USERNAME: "test-user" + TEST_PASSWORD: "P@sswo3d" + NEBARI_IMAGE_TAG: "main" on: pull_request: paths: - - ".github/workflows/kubernetes_test.yaml" + - ".github/workflows/test_local_integration.yaml" - "tests/**" - "scripts/**" - "src/**" @@ -16,7 +21,7 @@ on: - develop - release/\d{4}.\d{1,2}.\d{1,2} paths: - - ".github/workflows/kubernetes_test.yaml" + - ".github/workflows/test_local_integration.yaml" - "tests/**" - "scripts/**" - "src/**" @@ -30,23 +35,18 @@ on: type: string jobs: - test-kubernetes: - name: "Kubernetes Tests" + test-local-integration: runs-on: "cirun-runner--${{ github.run_id }}" defaults: run: shell: bash -l {0} + concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} steps: - - - name: "Set NEBARI_IMAGE_TAG=main" - run: | - echo "NEBARI_IMAGE_TAG=main" >> "$GITHUB_ENV" - echo "GITHUB_BASE_REF: ${GITHUB_BASE_REF}" - echo "GITHUB_HEAD_REF: ${GITHUB_HEAD_REF}" - echo "GITHUB_REF: ${GITHUB_REF}" - - name: 'Checkout Infrastructure' uses: actions/checkout@main + with: + fetch-depth: 0 - name: Checkout the branch from the PR that triggered the job if: ${{ github.event_name == 'issue_comment' }} @@ -61,23 +61,19 @@ jobs: env: CONDA: /home/runnerx/miniconda3 with: + auto-update-conda: true python-version: 3.8 miniconda-version: "latest" - - name: Install Nebari + + - name: Install Nebari and playwright run: | - conda install --quiet --yes -c anaconda pip pip install .[dev] playwright install - - name: Download and Install Kubectl - run: | - mkdir -p bin - pushd bin - curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.19.0/bin/linux/amd64/kubectl - chmod +x kubectl + - uses: azure/setup-kubectl@v3 + with: + version: v1.19.16 - echo "$PWD" >> $GITHUB_PATH - popd - name: Enable docker permissions for user run: | sudo docker ps @@ -85,9 +81,11 @@ jobs: docker info docker ps + - name: Get routing table for docker pods run: | ip route + - name: Initialize Nebari Cloud run: | mkdir -p local-deployment @@ -99,59 +97,51 @@ jobs: sed -i -E 's/(mem_guarantee):\s+[A-Za-z0-9\.]+/\1: 0.25G/g' "nebari-config.yaml" cat nebari-config.yaml + - name: Deploy Nebari + working-directory: local-deployment run: | - cd local-deployment nebari deploy --config nebari-config.yaml --disable-prompt + - name: Basic kubectl checks after deployment if: always() run: | kubectl get all,cm,secret,ing -A + - name: Check github-actions.nebari.dev resolves run: | nslookup github-actions.nebari.dev + - name: Curl jupyterhub login page run: | curl -k https://github-actions.nebari.dev/hub/home -i - ### CYPRESS TESTS - - name: Setup Node - uses: actions/setup-node@v3 - with: - node-version: '16' - - name: npm version - run: | - npm --version - - name: Install Cypress dependencies - run: | - sudo apt-get -y update - sudo apt-get install -y libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb - - - name: Get nebari-config.yaml full path - run: echo "NEBARI_CONFIG_PATH=`realpath ./local-deployment/nebari-config.yaml`" >> "$GITHUB_ENV" - - name: Create example-user + working-directory: local-deployment run: | - export CYPRESS_EXAMPLE_USER_NAME=example-user - export CYPRESS_EXAMPLE_USER_PASSWORD=P@sswo3d + nebari keycloak adduser --user "${TEST_USERNAME}" "${TEST_PASSWORD}" --config nebari-config.yaml + nebari keycloak listusers --config nebari-config.yaml - echo "CYPRESS_EXAMPLE_USER_NAME=${CYPRESS_EXAMPLE_USER_NAME}" >> $GITHUB_ENV - echo "CYPRESS_EXAMPLE_USER_PASSWORD=${CYPRESS_EXAMPLE_USER_PASSWORD}" >> $GITHUB_ENV + - uses: actions/setup-node@v3 + with: + node-version: 16 - nebari keycloak adduser --user "${CYPRESS_EXAMPLE_USER_NAME}" "${CYPRESS_EXAMPLE_USER_PASSWORD}" --config "${NEBARI_CONFIG_PATH}" - nebari keycloak listusers --config "${NEBARI_CONFIG_PATH}" + - name: Get nebari-config.yaml full path + run: echo "NEBARI_CONFIG_PATH=`realpath ./local-deployment/nebari-config.yaml`" >> "$GITHUB_ENV" - name: Cypress run - uses: cypress-io/github-action@v4 + uses: cypress-io/github-action@v6 env: + CYPRESS_EXAMPLE_USER_NAME: ${{ env.TEST_USERNAME }} + CYPRESS_EXAMPLE_USER_PASSWORD: ${{ env.TEST_PASSWORD }} CYPRESS_BASE_URL: https://github-actions.nebari.dev/ with: working-directory: tests/tests_e2e - name: Playwright Tests env: - KEYCLOAK_USERNAME: ${{ env.CYPRESS_EXAMPLE_USER_NAME }} - KEYCLOAK_PASSWORD: ${{ env.CYPRESS_EXAMPLE_USER_PASSWORD }} + KEYCLOAK_USERNAME: ${{ env.TEST_USERNAME }} + KEYCLOAK_PASSWORD: ${{ env.TEST_PASSWORD }} NEBARI_FULL_URL: https://github-actions.nebari.dev/ working-directory: tests/tests_e2e/playwright run: | @@ -171,20 +161,22 @@ jobs: ./tests/tests_e2e/playwright/videos/ - name: Deployment Pytests + env: + KEYCLOAK_USERNAME: ${{ env.TEST_USERNAME }} + KEYCLOAK_PASSWORD: ${{ env.TEST_PASSWORD }} run: | - export KEYCLOAK_USERNAME=${CYPRESS_EXAMPLE_USER_NAME} - export KEYCLOAK_PASSWORD=${CYPRESS_EXAMPLE_USER_PASSWORD} pytest tests/tests_deployment/ -v -s - name: JupyterHub Notebook Tests timeout-minutes: 2 # run jhub-client after pytest since jhubctl can cleanup # the running server + env: + JUPYTERHUB_USERNAME: ${{ env.TEST_USERNAME }} + JUPYTERHUB_PASSWORD: ${{ env.TEST_PASSWORD }} run: | sleep 60 - export JUPYTERHUB_USERNAME=${CYPRESS_EXAMPLE_USER_NAME} - export JUPYTERHUB_PASSWORD=${CYPRESS_EXAMPLE_USER_PASSWORD} - jhubctl --verbose run --hub=https://github-actions.nebari.dev \ + jhubctl --verbose run --hub=https://github-actions.nebari.dev\ --auth-type=keycloak \ --validate --no-verify-ssl \ --kernel python3 \ @@ -193,6 +185,7 @@ jobs: ### CLEANUP AFTER TESTS - name: Cleanup nebari deployment + if: always() + working-directory: local-deployment run: | - cd local-deployment nebari destroy --config nebari-config.yaml --disable-prompt