From 34dfce5d54d1bf8e389a3658495639150999e8d5 Mon Sep 17 00:00:00 2001 From: vinayada1 <28875764+vinayada1@users.noreply.github.com> Date: Wed, 27 Mar 2024 11:11:48 -0700 Subject: [PATCH] init Signed-off-by: vinayada1 <28875764+vinayada1@users.noreply.github.com> --- .../workflows/functional-test-noncloud.yaml | 118 +++++++++++++++++- 1 file changed, 115 insertions(+), 3 deletions(-) diff --git a/.github/workflows/functional-test-noncloud.yaml b/.github/workflows/functional-test-noncloud.yaml index 9a31c4c47cb..c0a0ed0be97 100644 --- a/.github/workflows/functional-test-noncloud.yaml +++ b/.github/workflows/functional-test-noncloud.yaml @@ -22,6 +22,14 @@ permissions: packages: write # Required for uploading the package on: + schedule: + # Run every 4 hours on weekdays. + - cron: "30 0,4,8,12,16,20 * * 1-5" + # Run every 12 hours on weekends. + - cron: "30 0,12 * * 0,6" + # Dispatch on external events + repository_dispatch: + types: [de-functional-test] pull_request: branches: - main @@ -45,16 +53,26 @@ env: DAPR_DASHBOARD_VER: '0.14.0' # Kubectl version KUBECTL_VER: 'v1.25.0' + # Azure Keyvault CSI driver chart version + AZURE_KEYVAULT_CSI_DRIVER_VER: '1.4.2' + # Azure workload identity webhook chart version + AZURE_WORKLOAD_IDENTITY_WEBHOOK_VER: '1.1.0' # Container registry for storing container images CONTAINER_REGISTRY: ghcr.io/radius-project/dev # Container registry for storing Bicep recipe artifacts BICEP_RECIPE_REGISTRY: ghcr.io/radius-project/dev # The radius functional test timeout FUNCTIONALTEST_TIMEOUT: 60m + # The Azure Location to store test resources + AZURE_LOCATION: westus3 # The base directory for storing test logs RADIUS_CONTAINER_LOG_BASE: dist/container_logs # The Radius helm chart location. RADIUS_CHART_LOCATION: deploy/Chart/ + # The region for AWS resources + AWS_REGION: 'us-west-2' + # The AWS account ID + AWS_ACCOUNT_ID: '${{ secrets.FUNCTEST_AWS_ACCOUNT_ID }}' # The current GitHub action link ACTION_LINK: '${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}' # Server where terraform test modules are deployed @@ -68,6 +86,7 @@ jobs: build: name: Build Radius for test runs-on: ubuntu-latest + if: github.event_name == 'repository_dispatch' || (github.event_name == 'schedule' && github.repository == 'radius-project/radius') || github.event_name == 'workflow_run' env: DE_IMAGE: 'ghcr.io/radius-project/deployment-engine' DE_TAG: 'latest' @@ -159,6 +178,7 @@ jobs: echo "UNIQUE_ID=${UNIQUE_ID}" >> $GITHUB_OUTPUT echo "CHECKOUT_REPO=${{ env.CHECKOUT_REPO }}" >> $GITHUB_OUTPUT echo "CHECKOUT_REF=${{ env.CHECKOUT_REF }}" >> $GITHUB_OUTPUT + echo "AZURE_TEST_RESOURCE_GROUP=radtest-${UNIQUE_ID}" >> $GITHUB_OUTPUT echo "RAD_CLI_ARTIFACT_NAME=rad_cli_linux_amd64" >> $GITHUB_OUTPUT echo "PR_NUMBER=${{ env.PR_NUMBER }}" >> $GITHUB_OUTPUT echo "DE_IMAGE=${{ env.DE_IMAGE }}" >> $GITHUB_OUTPUT @@ -190,6 +210,8 @@ jobs: * gotestsum ${{ env.GOTESTSUM_VER }} * KinD: ${{ env.KIND_VER }} * Dapr: ${{ env.DAPR_VER }} + * Azure KeyVault CSI driver: ${{ env.AZURE_KEYVAULT_CSI_DRIVER_VER }} + * Azure Workload identity webhook: ${{ env.AZURE_WORKLOAD_IDENTITY_WEBHOOK_VER }} * Bicep recipe location `${{ env.BICEP_RECIPE_REGISTRY }}/test/testrecipes/test-bicep-recipes/:${{ env.REL_VERSION }}` * Terraform recipe location `${{ env.TF_RECIPE_MODULE_SERVER_URL }}/.zip` (in cluster) * applications-rp test image location: `${{ env.CONTAINER_REGISTRY }}/applications-rp:${{ env.REL_VERSION }}` @@ -311,6 +333,7 @@ jobs: CHECKOUT_REPO: ${{ needs.build.outputs.CHECKOUT_REPO }} CHECKOUT_REF: ${{ needs.build.outputs.CHECKOUT_REF }} PR_NUMBER: ${{ needs.build.outputs.PR_NUMBER }} + AZURE_TEST_RESOURCE_GROUP: radtest-${{ needs.build.outputs.UNIQUE_ID }}-${{ matrix.name }} RAD_CLI_ARTIFACT_NAME: ${{ needs.build.outputs.RAD_CLI_ARTIFACT_NAME }} BICEP_RECIPE_TAG_VERSION: ${{ needs.build.outputs.REL_VERSION }} DE_IMAGE: ${{ needs.build.outputs.DE_IMAGE }} @@ -365,6 +388,12 @@ jobs: with: name: ${{ env.RAD_CLI_ARTIFACT_NAME }} path: bin + - name: Login to Azure + uses: azure/login@v2 + with: + client-id: ${{ secrets.AZURE_SP_TESTS_APPID }} + tenant-id: ${{ secrets.AZURE_SP_TESTS_TENANTID }} + subscription-id: ${{ secrets.AZURE_SUBSCRIPTIONID_TESTS }} - uses: marocchino/sticky-pull-request-comment@v2 continue-on-error: true with: @@ -374,18 +403,73 @@ jobs: append: true message: | :hourglass: Starting ${{ matrix.name }} functional tests... + - name: Create azure resource group - ${{ env.AZURE_TEST_RESOURCE_GROUP }} + run: | + current_time=$(date +%s) + az group create \ + --location ${{ env.AZURE_LOCATION }} \ + --name $RESOURCE_GROUP \ + --subscription ${{ secrets.AZURE_SUBSCRIPTIONID_TESTS }} \ + --tags creationTime=$current_time + while [ $(az group exists --name $RESOURCE_GROUP) = false ]; do sleep 2; done + env: + RESOURCE_GROUP: ${{ env.AZURE_TEST_RESOURCE_GROUP }} + - uses: azure/setup-helm@v3 + with: + version: ${{ env.HELM_VER }} - name: Create KinD cluster run: | curl -sSLo "kind" "https://github.com/kubernetes-sigs/kind/releases/download/${{ env.KIND_VER }}/kind-linux-amd64" chmod +x ./kind + # Populate the following environment variables for Azure workload identity from secrets. + # AZURE_OIDC_ISSUER_PUBLIC_KEY + # AZURE_OIDC_ISSUER_PRIVATE_KEY + # AZURE_OIDC_ISSUER + eval "export $(echo "${{ secrets.FUNCTEST_AZURE_OIDC_JSON }}" | jq -r 'to_entries | map("\(.key)=\(.value)") | @sh')" + AUTHKEY=$(echo -n "${{ github.actor }}:${{ secrets.GH_RAD_CI_BOT_PAT }}" | base64) echo "{\"auths\":{\"ghcr.io\":{\"auth\":\"${AUTHKEY}\"}}}" > "./ghcr_secret.json" + # Create KinD cluster with OIDC Issuer keys + echo $AZURE_OIDC_ISSUER_PUBLIC_KEY | base64 -d > sa.pub + echo $AZURE_OIDC_ISSUER_PRIVATE_KEY | base64 -d > sa.key + cat <